@pierskarsenbarg/sdm 1.31.0 → 1.32.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.
Files changed (59) hide show
  1. package/account.d.ts +3 -6
  2. package/account.js.map +1 -1
  3. package/accountGroup.d.ts +87 -0
  4. package/accountGroup.js +84 -0
  5. package/accountGroup.js.map +1 -0
  6. package/approvalWorkflow.d.ts +6 -0
  7. package/approvalWorkflow.js +6 -0
  8. package/approvalWorkflow.js.map +1 -1
  9. package/getAccount.d.ts +2 -2
  10. package/getAccountGroup.d.ts +101 -0
  11. package/getAccountGroup.js +66 -0
  12. package/getAccountGroup.js.map +1 -0
  13. package/getGroup.d.ts +127 -0
  14. package/getGroup.js +72 -0
  15. package/getGroup.js.map +1 -0
  16. package/getGroupRole.d.ts +101 -0
  17. package/getGroupRole.js +66 -0
  18. package/getGroupRole.js.map +1 -0
  19. package/getNode.d.ts +2 -2
  20. package/getResource.d.ts +2 -2
  21. package/getSecretEngine.d.ts +74 -2
  22. package/getSecretEngine.js +12 -0
  23. package/getSecretEngine.js.map +1 -1
  24. package/getSecretStore.d.ts +2 -2
  25. package/getWorkflow.d.ts +32 -0
  26. package/getWorkflow.js +32 -0
  27. package/getWorkflow.js.map +1 -1
  28. package/getWorkflowRole.d.ts +10 -4
  29. package/getWorkflowRole.js +10 -4
  30. package/getWorkflowRole.js.map +1 -1
  31. package/group.d.ts +110 -0
  32. package/group.js +79 -0
  33. package/group.js.map +1 -0
  34. package/groupRole.d.ts +87 -0
  35. package/groupRole.js +84 -0
  36. package/groupRole.js.map +1 -0
  37. package/index.d.ts +18 -0
  38. package/index.js +26 -2
  39. package/index.js.map +1 -1
  40. package/package.json +1 -1
  41. package/resource.d.ts +15 -24
  42. package/resource.js +2 -0
  43. package/resource.js.map +1 -1
  44. package/role.d.ts +37 -0
  45. package/role.js +37 -0
  46. package/role.js.map +1 -1
  47. package/secretEngine.d.ts +9 -15
  48. package/secretEngine.js +2 -0
  49. package/secretEngine.js.map +1 -1
  50. package/secretStore.d.ts +3 -6
  51. package/secretStore.js.map +1 -1
  52. package/types/input.d.ts +249 -117
  53. package/types/output.d.ts +539 -225
  54. package/workflow.d.ts +42 -0
  55. package/workflow.js +42 -0
  56. package/workflow.js.map +1 -1
  57. package/workflowRole.d.ts +6 -2
  58. package/workflowRole.js +6 -2
  59. package/workflowRole.js.map +1 -1
package/workflow.d.ts CHANGED
@@ -3,6 +3,48 @@ import * as pulumi from "@pulumi/pulumi";
3
3
  * Workflows are the collection of rules that define the resources to which access can be requested,
4
4
  * the users that can request that access, and the mechanism for approving those requests which can either
5
5
  * but automatic approval or a set of users authorized to approve the requests.
6
+ * ## Example Usage
7
+ *
8
+ * ```typescript
9
+ * import * as pulumi from "@pulumi/pulumi";
10
+ * import * as sdm from "@pierskarsenbarg/sdm";
11
+ *
12
+ * // Create approval workflows first
13
+ * const autoGrant = new sdm.ApprovalWorkflow("autoGrant", {approvalMode: "automatic"});
14
+ * const manualApproval = new sdm.ApprovalWorkflow("manualApproval", {
15
+ * approvalMode: "manual",
16
+ * approvalSteps: [{
17
+ * quantifier: "any",
18
+ * skipAfter: "2h0m0s",
19
+ * approvers: [{
20
+ * reference: "manager-of-requester",
21
+ * }],
22
+ * }],
23
+ * });
24
+ * // Create workflows that reference the approval workflows
25
+ * const autoGrantWorkflow = new sdm.Workflow("autoGrantWorkflow", {
26
+ * approvalFlowId: autoGrant.id,
27
+ * enabled: true,
28
+ * accessRules: JSON.stringify([{
29
+ * type: "redis",
30
+ * tags: {
31
+ * region: "us-east",
32
+ * },
33
+ * }]),
34
+ * });
35
+ * const manualApprovalWorkflow = new sdm.Workflow("manualApprovalWorkflow", {
36
+ * approvalFlowId: manualApproval.id,
37
+ * enabled: true,
38
+ * accessRules: JSON.stringify([{
39
+ * type: "redis",
40
+ * tags: {
41
+ * region: "us-east",
42
+ * },
43
+ * }]),
44
+ * });
45
+ * ```
46
+ * This resource can be imported using the import command.
47
+ *
6
48
  * ## Import
7
49
  *
8
50
  * A Workflow can be imported using the id, e.g.,
package/workflow.js CHANGED
@@ -9,6 +9,48 @@ const utilities = require("./utilities");
9
9
  * Workflows are the collection of rules that define the resources to which access can be requested,
10
10
  * the users that can request that access, and the mechanism for approving those requests which can either
11
11
  * but automatic approval or a set of users authorized to approve the requests.
12
+ * ## Example Usage
13
+ *
14
+ * ```typescript
15
+ * import * as pulumi from "@pulumi/pulumi";
16
+ * import * as sdm from "@pierskarsenbarg/sdm";
17
+ *
18
+ * // Create approval workflows first
19
+ * const autoGrant = new sdm.ApprovalWorkflow("autoGrant", {approvalMode: "automatic"});
20
+ * const manualApproval = new sdm.ApprovalWorkflow("manualApproval", {
21
+ * approvalMode: "manual",
22
+ * approvalSteps: [{
23
+ * quantifier: "any",
24
+ * skipAfter: "2h0m0s",
25
+ * approvers: [{
26
+ * reference: "manager-of-requester",
27
+ * }],
28
+ * }],
29
+ * });
30
+ * // Create workflows that reference the approval workflows
31
+ * const autoGrantWorkflow = new sdm.Workflow("autoGrantWorkflow", {
32
+ * approvalFlowId: autoGrant.id,
33
+ * enabled: true,
34
+ * accessRules: JSON.stringify([{
35
+ * type: "redis",
36
+ * tags: {
37
+ * region: "us-east",
38
+ * },
39
+ * }]),
40
+ * });
41
+ * const manualApprovalWorkflow = new sdm.Workflow("manualApprovalWorkflow", {
42
+ * approvalFlowId: manualApproval.id,
43
+ * enabled: true,
44
+ * accessRules: JSON.stringify([{
45
+ * type: "redis",
46
+ * tags: {
47
+ * region: "us-east",
48
+ * },
49
+ * }]),
50
+ * });
51
+ * ```
52
+ * This resource can be imported using the import command.
53
+ *
12
54
  * ## Import
13
55
  *
14
56
  * A Workflow can be imported using the id, e.g.,
package/workflow.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../workflow.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAa,QAAS,SAAQ,MAAM,CAAC,cAAc;IAC/C;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAqB,EAAE,IAAmC;QACnH,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC,YAAY,CAAC;IACzD,CAAC;IAiDD,YAAY,IAAY,EAAE,WAA0C,EAAE,IAAmC;QACrG,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAAwC,CAAC;YACvD,cAAc,CAAC,4BAA4B,CAAC,GAAG,KAAK,EAAE,0BAA0B,CAAC;YACjF,cAAc,CAAC,0BAA0B,CAAC,GAAG,KAAK,EAAE,wBAAwB,CAAC;YAC7E,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC;YACnD,cAAc,CAAC,gBAAgB,CAAC,GAAG,KAAK,EAAE,cAAc,CAAC;YACzD,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,SAAS,CAAC;YAC/C,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC;YACnD,cAAc,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC;YAC3C,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC;YACrC,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC;SAC5C;aAAM;YACH,MAAM,IAAI,GAAG,WAAuC,CAAC;YACrD,cAAc,CAAC,4BAA4B,CAAC,GAAG,IAAI,EAAE,0BAA0B,CAAC;YAChF,cAAc,CAAC,0BAA0B,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC;YAC5E,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC;YAClD,cAAc,CAAC,gBAAgB,CAAC,GAAG,IAAI,EAAE,cAAc,CAAC;YACxD,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC;YAC9C,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC;YAClD,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC;YAC1C,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;YACpC,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC;SAC3C;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;;AAvGL,4BAwGC;AA1FG,gBAAgB;AACO,qBAAY,GAAG,6BAA6B,CAAC"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../workflow.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAa,QAAS,SAAQ,MAAM,CAAC,cAAc;IAC/C;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAqB,EAAE,IAAmC;QACnH,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC,YAAY,CAAC;IACzD,CAAC;IAiDD,YAAY,IAAY,EAAE,WAA0C,EAAE,IAAmC;QACrG,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAAwC,CAAC;YACvD,cAAc,CAAC,4BAA4B,CAAC,GAAG,KAAK,EAAE,0BAA0B,CAAC;YACjF,cAAc,CAAC,0BAA0B,CAAC,GAAG,KAAK,EAAE,wBAAwB,CAAC;YAC7E,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC;YACnD,cAAc,CAAC,gBAAgB,CAAC,GAAG,KAAK,EAAE,cAAc,CAAC;YACzD,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,SAAS,CAAC;YAC/C,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC;YACnD,cAAc,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC;YAC3C,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC;YACrC,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC;SAC5C;aAAM;YACH,MAAM,IAAI,GAAG,WAAuC,CAAC;YACrD,cAAc,CAAC,4BAA4B,CAAC,GAAG,IAAI,EAAE,0BAA0B,CAAC;YAChF,cAAc,CAAC,0BAA0B,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC;YAC5E,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC;YAClD,cAAc,CAAC,gBAAgB,CAAC,GAAG,IAAI,EAAE,cAAc,CAAC;YACxD,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC;YAC9C,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC;YAClD,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC;YAC1C,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;YACpC,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC;SAC3C;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;;AAvGL,4BAwGC;AA1FG,gBAAgB;AACO,qBAAY,GAAG,6BAA6B,CAAC"}
package/workflowRole.d.ts CHANGED
@@ -9,8 +9,12 @@ import * as pulumi from "@pulumi/pulumi";
9
9
  * import * as sdm from "@pierskarsenbarg/sdm";
10
10
  *
11
11
  * const workflowRoleExample = new sdm.WorkflowRole("workflowRoleExample", {
12
- * roleId: "r-243561",
13
- * workflowId: "aw-343865",
12
+ * workflowId: sdm_workflow.manual_approval_workflow.id,
13
+ * roleId: sdm_role.developers.id,
14
+ * });
15
+ * const workflowRoleWithIds = new sdm.WorkflowRole("workflowRoleWithIds", {
16
+ * workflowId: "w-1234567890abcdef",
17
+ * roleId: "r-1234567890abcdef",
14
18
  * });
15
19
  * ```
16
20
  * This resource can be imported using the import command.
package/workflowRole.js CHANGED
@@ -15,8 +15,12 @@ const utilities = require("./utilities");
15
15
  * import * as sdm from "@pierskarsenbarg/sdm";
16
16
  *
17
17
  * const workflowRoleExample = new sdm.WorkflowRole("workflowRoleExample", {
18
- * roleId: "r-243561",
19
- * workflowId: "aw-343865",
18
+ * workflowId: sdm_workflow.manual_approval_workflow.id,
19
+ * roleId: sdm_role.developers.id,
20
+ * });
21
+ * const workflowRoleWithIds = new sdm.WorkflowRole("workflowRoleWithIds", {
22
+ * workflowId: "w-1234567890abcdef",
23
+ * roleId: "r-1234567890abcdef",
20
24
  * });
21
25
  * ```
22
26
  * This resource can be imported using the import command.
@@ -1 +1 @@
1
- {"version":3,"file":"workflowRole.js","sourceRoot":"","sources":["../workflowRole.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAa,YAAa,SAAQ,MAAM,CAAC,cAAc;IACnD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAyB,EAAE,IAAmC;QACvH,OAAO,IAAI,YAAY,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,YAAY,CAAC,YAAY,CAAC;IAC7D,CAAC;IAmBD,YAAY,IAAY,EAAE,WAAkD,EAAE,IAAmC;QAC7G,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAA4C,CAAC;YAC3D,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC;YACzC,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,EAAE,UAAU,CAAC;SACpD;aAAM;YACH,MAAM,IAAI,GAAG,WAA2C,CAAC;YACzD,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACzD;YACD,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC7C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC7D;YACD,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC;YACxC,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC;SACnD;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;;AAjEL,oCAkEC;AApDG,gBAAgB;AACO,yBAAY,GAAG,qCAAqC,CAAC"}
1
+ {"version":3,"file":"workflowRole.js","sourceRoot":"","sources":["../workflowRole.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,YAAa,SAAQ,MAAM,CAAC,cAAc;IACnD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAyB,EAAE,IAAmC;QACvH,OAAO,IAAI,YAAY,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,YAAY,CAAC,YAAY,CAAC;IAC7D,CAAC;IAmBD,YAAY,IAAY,EAAE,WAAkD,EAAE,IAAmC;QAC7G,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAA4C,CAAC;YAC3D,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC;YACzC,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,EAAE,UAAU,CAAC;SACpD;aAAM;YACH,MAAM,IAAI,GAAG,WAA2C,CAAC;YACzD,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACzD;YACD,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC7C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC7D;YACD,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC;YACxC,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC;SACnD;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;;AAjEL,oCAkEC;AApDG,gBAAgB;AACO,yBAAY,GAAG,qCAAqC,CAAC"}