@aws-amplify/graphql-api-construct 1.3.0-rds-5.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (403) hide show
  1. package/.jsii +202 -620
  2. package/API.md +2 -42
  3. package/CHANGELOG.md +8 -3
  4. package/README.md +396 -371
  5. package/lib/amplify-graphql-api.d.ts +0 -6
  6. package/lib/amplify-graphql-api.js +4 -60
  7. package/lib/amplify-graphql-definition.d.ts +6 -17
  8. package/lib/amplify-graphql-definition.js +11 -26
  9. package/lib/index.d.ts +1 -1
  10. package/lib/index.js +1 -1
  11. package/lib/internal/authorization-modes.js +20 -2
  12. package/lib/types.d.ts +7 -97
  13. package/lib/types.js +1 -1
  14. package/node_modules/@aws-amplify/backend-output-schemas/lib/auth/index.js +3 -2
  15. package/node_modules/@aws-amplify/backend-output-schemas/lib/auth/v1.js +3 -2
  16. package/node_modules/@aws-amplify/backend-output-schemas/lib/graphql/index.js +3 -2
  17. package/node_modules/@aws-amplify/backend-output-schemas/lib/graphql/v1.js +5 -3
  18. package/node_modules/@aws-amplify/backend-output-schemas/lib/index.js +11 -7
  19. package/node_modules/@aws-amplify/backend-output-schemas/lib/platform/stack_metadata_schemas.js +4 -2
  20. package/node_modules/@aws-amplify/backend-output-schemas/lib/stack/index.js +3 -2
  21. package/node_modules/@aws-amplify/backend-output-schemas/lib/stack/v1.js +3 -2
  22. package/node_modules/@aws-amplify/backend-output-schemas/lib/storage/index.js +3 -2
  23. package/node_modules/@aws-amplify/backend-output-schemas/lib/storage/v1.js +3 -2
  24. package/node_modules/@aws-amplify/backend-output-storage/package.json +2 -2
  25. package/node_modules/@aws-amplify/graphql-auth-transformer/API.md +1 -5
  26. package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +2 -14
  27. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts +1 -3
  28. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts.map +1 -1
  29. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js +50 -64
  30. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js.map +1 -1
  31. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/field.d.ts +1 -1
  32. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/field.d.ts.map +1 -0
  33. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/field.js +1 -1
  34. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/field.js.map +1 -0
  35. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/helpers.d.ts +1 -1
  36. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/helpers.d.ts.map +1 -0
  37. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/helpers.js +1 -1
  38. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/helpers.js.map +1 -0
  39. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/index.d.ts.map +1 -0
  40. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/index.js.map +1 -0
  41. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/mutation.create.d.ts +1 -1
  42. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.create.d.ts.map +1 -0
  43. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/mutation.create.js +1 -1
  44. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.create.js.map +1 -0
  45. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/mutation.delete.d.ts +1 -1
  46. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.delete.d.ts.map +1 -0
  47. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/mutation.delete.js +1 -1
  48. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.delete.js.map +1 -0
  49. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/mutation.update.d.ts +1 -1
  50. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.update.d.ts.map +1 -0
  51. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/mutation.update.js +1 -1
  52. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/mutation.update.js.map +1 -0
  53. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/query.d.ts +6 -0
  54. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/query.d.ts.map +1 -0
  55. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/query.js +3 -28
  56. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/query.js.map +1 -0
  57. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/search.d.ts +1 -1
  58. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/search.d.ts.map +1 -0
  59. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/search.js +1 -1
  60. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/search.js.map +1 -0
  61. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/rds/resolvers/subscription.d.ts → resolvers/subscriptions.d.ts} +2 -2
  62. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/subscriptions.d.ts.map +1 -0
  63. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/subscriptions.js +1 -1
  64. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/resolvers/subscriptions.js.map +1 -0
  65. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.d.ts.map +1 -1
  66. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.js +0 -3
  67. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.js.map +1 -1
  68. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/schema.d.ts.map +1 -1
  69. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/schema.js.map +1 -1
  70. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.d.ts +2 -3
  71. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.d.ts.map +1 -1
  72. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.js +1 -4
  73. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/validations.js.map +1 -1
  74. package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +11 -12
  75. package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +2 -4
  76. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.d.ts.map +1 -1
  77. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.js +1 -13
  78. package/node_modules/@aws-amplify/graphql-default-value-transformer/lib/graphql-default-value-transformer.js.map +1 -1
  79. package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +8 -9
  80. package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +1 -1
  81. package/node_modules/@aws-amplify/graphql-function-transformer/package.json +7 -8
  82. package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +1 -1
  83. package/node_modules/@aws-amplify/graphql-http-transformer/package.json +7 -8
  84. package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +2 -6
  85. package/node_modules/@aws-amplify/graphql-index-transformer/lib/graphql-primary-key-transformer.js +2 -2
  86. package/node_modules/@aws-amplify/graphql-index-transformer/lib/graphql-primary-key-transformer.js.map +1 -1
  87. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
  88. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/generators/rds-vtl-generator.js +1 -4
  89. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
  90. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.d.ts +3 -4
  91. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.d.ts.map +1 -1
  92. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.js +11 -20
  93. package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.js.map +1 -1
  94. package/node_modules/@aws-amplify/graphql-index-transformer/package.json +8 -9
  95. package/node_modules/@aws-amplify/graphql-maps-to-transformer/API.md +0 -15
  96. package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +2 -10
  97. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
  98. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/field-mapping-resolvers.d.ts +0 -1
  99. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/field-mapping-resolvers.d.ts.map +1 -1
  100. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/field-mapping-resolvers.js +1 -13
  101. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/field-mapping-resolvers.js.map +1 -1
  102. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-maps-to-transformer.d.ts +1 -2
  103. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-maps-to-transformer.d.ts.map +1 -1
  104. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-maps-to-transformer.js +33 -16
  105. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-maps-to-transformer.js.map +1 -1
  106. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/index.d.ts +0 -1
  107. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/index.d.ts.map +1 -1
  108. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/index.js +1 -3
  109. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/index.js.map +1 -1
  110. package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +13 -14
  111. package/node_modules/@aws-amplify/graphql-model-transformer/API.md +15 -15
  112. package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +2 -16
  113. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.d.ts.map +1 -1
  114. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js +12 -25
  115. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js.map +1 -1
  116. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-types/mutation.d.ts.map +1 -1
  117. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-types/mutation.js +2 -9
  118. package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-types/mutation.js.map +1 -1
  119. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
  120. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
  121. package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
  122. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/dynamodb-vtl-generator.d.ts +5 -6
  123. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/dynamodb-vtl-generator.d.ts.map +1 -1
  124. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/dynamodb-vtl-generator.js +5 -5
  125. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/dynamodb-vtl-generator.js.map +1 -1
  126. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/rds-vtl-generator.d.ts +5 -6
  127. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
  128. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/rds-vtl-generator.js +11 -11
  129. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
  130. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/vtl-generator.d.ts +5 -6
  131. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/generators/vtl-generator.d.ts.map +1 -1
  132. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/mutation.d.ts +3 -4
  133. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/mutation.d.ts.map +1 -1
  134. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/mutation.js +55 -74
  135. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/mutation.js.map +1 -1
  136. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/query.d.ts +1 -2
  137. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/query.d.ts.map +1 -1
  138. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/query.js +2 -8
  139. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/query.js.map +1 -1
  140. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.d.ts +3 -10
  141. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.d.ts.map +1 -1
  142. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js +42 -127
  143. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js.map +1 -1
  144. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/model-resource-generator.js +5 -5
  145. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/model-resource-generator.js.map +1 -1
  146. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts +0 -1
  147. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts.map +1 -1
  148. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js +1 -28
  149. package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js.map +1 -1
  150. package/node_modules/@aws-amplify/graphql-model-transformer/package.json +9 -10
  151. package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +1 -1
  152. package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
  153. package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +7 -8
  154. package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +2 -7
  155. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.d.ts.map +1 -1
  156. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.js +9 -41
  157. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-belongs-to-transformer.js.map +1 -1
  158. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-many-transformer.d.ts.map +1 -1
  159. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-many-transformer.js +8 -35
  160. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-many-transformer.js.map +1 -1
  161. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-one-transformer.d.ts.map +1 -1
  162. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-one-transformer.js +8 -30
  163. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-has-one-transformer.js.map +1 -1
  164. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-many-to-many-transformer.d.ts.map +1 -1
  165. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-many-to-many-transformer.js +2 -3
  166. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/graphql-many-to-many-transformer.js.map +1 -1
  167. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.d.ts +4 -4
  168. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.d.ts.map +1 -1
  169. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.js +161 -14
  170. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.js.map +1 -1
  171. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/schema.d.ts.map +1 -1
  172. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/schema.js +8 -14
  173. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/schema.js.map +1 -1
  174. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/types.d.ts +0 -4
  175. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/types.d.ts.map +1 -1
  176. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.d.ts +0 -5
  177. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.d.ts.map +1 -1
  178. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.js +1 -85
  179. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/utils.js.map +1 -1
  180. package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +10 -11
  181. package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +2 -4
  182. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/graphql-searchable-transformer.d.ts.map +1 -1
  183. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/graphql-searchable-transformer.js +0 -3
  184. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/graphql-searchable-transformer.js.map +1 -1
  185. package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
  186. package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +8 -9
  187. package/node_modules/@aws-amplify/graphql-transformer/API.md +0 -1
  188. package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +2 -11
  189. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts +0 -1
  190. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts.map +1 -1
  191. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +1 -5
  192. package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
  193. package/node_modules/@aws-amplify/graphql-transformer/package.json +14 -16
  194. package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +2 -7
  195. package/node_modules/@aws-amplify/graphql-transformer-core/API.md +3 -33
  196. package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +2 -13
  197. package/node_modules/@aws-amplify/graphql-transformer-core/lib/config/project-config.d.ts +1 -1
  198. package/node_modules/@aws-amplify/graphql-transformer-core/lib/config/project-config.d.ts.map +1 -1
  199. package/node_modules/@aws-amplify/graphql-transformer-core/lib/graphql-api.js +2 -1
  200. package/node_modules/@aws-amplify/graphql-transformer-core/lib/graphql-api.js.map +1 -1
  201. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts +2 -2
  202. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts.map +1 -1
  203. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js +1 -10
  204. package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js.map +1 -1
  205. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transform-host.d.ts.map +1 -1
  206. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transform-host.js +1 -2
  207. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transform-host.js.map +1 -1
  208. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.d.ts +3 -2
  209. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.d.ts.map +1 -1
  210. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js +3 -2
  211. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js.map +1 -1
  212. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts +0 -1
  213. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts.map +1 -1
  214. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts +3 -4
  215. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts.map +1 -1
  216. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js +1 -2
  217. package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js.map +1 -1
  218. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/import-appsync-api-types.d.ts +1 -4
  219. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/import-appsync-api-types.d.ts.map +1 -1
  220. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/import-appsync-api-types.js +2 -3
  221. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/import-appsync-api-types.js.map +1 -1
  222. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/index.d.ts +1 -1
  223. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/index.d.ts.map +1 -1
  224. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/index.js +1 -2
  225. package/node_modules/@aws-amplify/graphql-transformer-core/lib/types/index.js.map +1 -1
  226. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.d.ts.map +1 -1
  227. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.js +1 -0
  228. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.js.map +1 -1
  229. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts +2 -3
  230. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts.map +1 -1
  231. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js +3 -14
  232. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js.map +1 -1
  233. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-secret-utils.d.ts +2 -0
  234. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-secret-utils.d.ts.map +1 -0
  235. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-secret-utils.js +25 -0
  236. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-secret-utils.js.map +1 -0
  237. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/schema-utils.d.ts +1 -3
  238. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/schema-utils.d.ts.map +1 -1
  239. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/schema-utils.js +1 -7
  240. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/schema-utils.js.map +1 -1
  241. package/node_modules/@aws-amplify/graphql-transformer-core/lib/wrappers/object-definition-wrapper.d.ts +1 -1
  242. package/node_modules/@aws-amplify/graphql-transformer-core/lib/wrappers/object-definition-wrapper.d.ts.map +1 -1
  243. package/node_modules/@aws-amplify/graphql-transformer-core/package.json +4 -5
  244. package/node_modules/@aws-amplify/graphql-transformer-interfaces/API.md +3 -20
  245. package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +3 -6
  246. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts +2 -5
  247. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts.map +1 -1
  248. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.js.map +1 -1
  249. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts +1 -1
  250. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts.map +1 -1
  251. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.js.map +1 -1
  252. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts +1 -1
  253. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts.map +1 -1
  254. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.js.map +1 -1
  255. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts +0 -1
  256. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts.map +1 -1
  257. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-datasource-provider.d.ts +1 -1
  258. package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-datasource-provider.d.ts.map +1 -1
  259. package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +2 -3
  260. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/graphql-api-provider.ts +16 -17
  261. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/index.ts +0 -1
  262. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/index.ts +0 -2
  263. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-context-provider.ts +0 -1
  264. package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-datasource-provider.ts +1 -8
  265. package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
  266. package/node_modules/graphql-mapping-template/CHANGELOG.md +0 -4
  267. package/node_modules/graphql-mapping-template/package.json +2 -3
  268. package/node_modules/graphql-transformer-common/API.md +0 -21
  269. package/node_modules/graphql-transformer-common/CHANGELOG.md +0 -11
  270. package/node_modules/graphql-transformer-common/lib/definition.d.ts +2 -9
  271. package/node_modules/graphql-transformer-common/lib/definition.d.ts.map +1 -1
  272. package/node_modules/graphql-transformer-common/lib/definition.js +1 -52
  273. package/node_modules/graphql-transformer-common/lib/definition.js.map +1 -1
  274. package/node_modules/graphql-transformer-common/lib/util.d.ts.map +1 -1
  275. package/node_modules/graphql-transformer-common/lib/util.js +1 -3
  276. package/node_modules/graphql-transformer-common/lib/util.js.map +1 -1
  277. package/node_modules/graphql-transformer-common/package.json +6 -7
  278. package/package.json +17 -19
  279. package/src/amplify-graphql-api.ts +4 -73
  280. package/src/amplify-graphql-definition.ts +10 -30
  281. package/src/index.ts +0 -6
  282. package/src/internal/authorization-modes.ts +22 -1
  283. package/src/types.ts +8 -114
  284. package/lib/sql-model-datasource-binding.d.ts +0 -20
  285. package/lib/sql-model-datasource-binding.js +0 -42
  286. package/node_modules/@aws-amplify/graphql-auth-transformer/LICENSE +0 -201
  287. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/ddb-vtl-generator.d.ts +0 -20
  288. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/ddb-vtl-generator.d.ts.map +0 -1
  289. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/ddb-vtl-generator.js +0 -24
  290. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/ddb-vtl-generator.js.map +0 -1
  291. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/field.d.ts.map +0 -1
  292. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/field.js.map +0 -1
  293. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/helpers.d.ts.map +0 -1
  294. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/helpers.js.map +0 -1
  295. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/index.d.ts.map +0 -1
  296. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/index.js.map +0 -1
  297. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.create.d.ts.map +0 -1
  298. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.create.js.map +0 -1
  299. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.delete.d.ts.map +0 -1
  300. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.delete.js.map +0 -1
  301. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.update.d.ts.map +0 -1
  302. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/mutation.update.js.map +0 -1
  303. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/query.d.ts +0 -6
  304. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/query.d.ts.map +0 -1
  305. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/query.js.map +0 -1
  306. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/search.d.ts.map +0 -1
  307. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/search.js.map +0 -1
  308. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/subscriptions.d.ts +0 -3
  309. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/subscriptions.d.ts.map +0 -1
  310. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/ddb/resolvers/subscriptions.js.map +0 -1
  311. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/rds-vtl-generator.d.ts +0 -20
  312. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/rds-vtl-generator.d.ts.map +0 -1
  313. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/rds-vtl-generator.js +0 -24
  314. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/rds-vtl-generator.js.map +0 -1
  315. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/common.d.ts +0 -13
  316. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/common.d.ts.map +0 -1
  317. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/common.js +0 -157
  318. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/common.js.map +0 -1
  319. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/index.d.ts +0 -5
  320. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/index.d.ts.map +0 -1
  321. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/index.js +0 -21
  322. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/index.js.map +0 -1
  323. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/mutation.d.ts +0 -8
  324. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/mutation.d.ts.map +0 -1
  325. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/mutation.js +0 -56
  326. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/mutation.js.map +0 -1
  327. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.d.ts +0 -8
  328. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.d.ts.map +0 -1
  329. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.js +0 -41
  330. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/query.js.map +0 -1
  331. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/subscription.d.ts.map +0 -1
  332. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/subscription.js +0 -18
  333. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/rds/resolvers/subscription.js.map +0 -1
  334. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/vtl-generator.d.ts +0 -19
  335. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/vtl-generator.d.ts.map +0 -1
  336. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/vtl-generator.js +0 -3
  337. package/node_modules/@aws-amplify/graphql-auth-transformer/lib/vtl-generator/vtl-generator.js.map +0 -1
  338. package/node_modules/@aws-amplify/graphql-default-value-transformer/LICENSE +0 -201
  339. package/node_modules/@aws-amplify/graphql-function-transformer/LICENSE +0 -201
  340. package/node_modules/@aws-amplify/graphql-http-transformer/LICENSE +0 -201
  341. package/node_modules/@aws-amplify/graphql-index-transformer/LICENSE +0 -201
  342. package/node_modules/@aws-amplify/graphql-maps-to-transformer/LICENSE +0 -201
  343. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-name-mapping.d.ts +0 -10
  344. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-name-mapping.d.ts.map +0 -1
  345. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-name-mapping.js +0 -102
  346. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-name-mapping.js.map +0 -1
  347. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-refers-to-transformer.d.ts +0 -13
  348. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-refers-to-transformer.d.ts.map +0 -1
  349. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-refers-to-transformer.js +0 -81
  350. package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/graphql-refers-to-transformer.js.map +0 -1
  351. package/node_modules/@aws-amplify/graphql-model-transformer/LICENSE +0 -201
  352. package/node_modules/@aws-amplify/graphql-predictions-transformer/LICENSE +0 -201
  353. package/node_modules/@aws-amplify/graphql-relational-transformer/LICENSE +0 -201
  354. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/ddb-generator.d.ts +0 -13
  355. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/ddb-generator.d.ts.map +0 -1
  356. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/ddb-generator.js +0 -171
  357. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/ddb-generator.js.map +0 -1
  358. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator-factory.d.ts +0 -4
  359. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator-factory.d.ts.map +0 -1
  360. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator-factory.js +0 -18
  361. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator-factory.js.map +0 -1
  362. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator.d.ts +0 -8
  363. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator.d.ts.map +0 -1
  364. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator.js +0 -7
  365. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/generator.js.map +0 -1
  366. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/rds-generator.d.ts +0 -14
  367. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/rds-generator.d.ts.map +0 -1
  368. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/rds-generator.js +0 -115
  369. package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolver/rds-generator.js.map +0 -1
  370. package/node_modules/@aws-amplify/graphql-searchable-transformer/LICENSE +0 -201
  371. package/node_modules/@aws-amplify/graphql-sql-transformer/API.md +0 -26
  372. package/node_modules/@aws-amplify/graphql-sql-transformer/CHANGELOG.md +0 -10
  373. package/node_modules/@aws-amplify/graphql-sql-transformer/LICENSE +0 -201
  374. package/node_modules/@aws-amplify/graphql-sql-transformer/README.md +0 -13
  375. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.d.ts +0 -12
  376. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.d.ts.map +0 -1
  377. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js +0 -132
  378. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js.map +0 -1
  379. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/index.d.ts +0 -2
  380. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/index.d.ts.map +0 -1
  381. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/index.js +0 -6
  382. package/node_modules/@aws-amplify/graphql-sql-transformer/lib/index.js.map +0 -1
  383. package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +0 -71
  384. package/node_modules/@aws-amplify/graphql-transformer/LICENSE +0 -201
  385. package/node_modules/@aws-amplify/graphql-transformer-core/LICENSE +0 -201
  386. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/api-category.d.ts +0 -2
  387. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/api-category.d.ts.map +0 -1
  388. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/api-category.js +0 -5
  389. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/api-category.js.map +0 -1
  390. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-util.d.ts +0 -3
  391. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-util.d.ts.map +0 -1
  392. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-util.js +0 -19
  393. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-util.js.map +0 -1
  394. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-util.d.ts +0 -14
  395. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-util.d.ts.map +0 -1
  396. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-util.js +0 -82
  397. package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/rds-util.js.map +0 -1
  398. package/node_modules/@aws-amplify/graphql-transformer-interfaces/LICENSE +0 -201
  399. package/node_modules/graphql-mapping-template/LICENSE +0 -201
  400. package/node_modules/graphql-transformer-common/LICENSE +0 -201
  401. package/src/sql-model-datasource-binding.ts +0 -45
  402. /package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/index.d.ts +0 -0
  403. /package/node_modules/@aws-amplify/graphql-auth-transformer/lib/{vtl-generator/ddb/resolvers → resolvers}/index.js +0 -0
@@ -80,12 +80,6 @@ export declare class AmplifyGraphqlApi extends Construct {
80
80
  * @param props the properties used to configure the generated api.
81
81
  */
82
82
  constructor(scope: Construct, id: string, props: AmplifyGraphqlApiProps);
83
- /**
84
- * Extends executeTransformConfig with fields for provisioning a SQL Lambda
85
- * @param executeTransformConfig the executeTransformConfig to extend
86
- * @param modelDataSourceBinding the modelDataSourceBinding containing the values to add to the transform config
87
- */
88
- private extendTransformConfig;
89
83
  /**
90
84
  * Stores graphql api output to be used for client config generation
91
85
  * @param outputStorageStrategy Strategy to store construct outputs. If no strategy is provided a default strategy will be used.
@@ -10,10 +10,8 @@ const aws_s3_assets_1 = require("aws-cdk-lib/aws-s3-assets");
10
10
  const backend_output_storage_1 = require("@aws-amplify/backend-output-storage");
11
11
  const backend_output_schemas_1 = require("@aws-amplify/backend-output-schemas");
12
12
  const aws_appsync_1 = require("aws-cdk-lib/aws-appsync");
13
- const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
14
13
  const user_defined_slots_1 = require("./internal/user-defined-slots");
15
14
  const internal_1 = require("./internal");
16
- const sql_model_datasource_binding_1 = require("./sql-model-datasource-binding");
17
15
  const construct_tree_1 = require("./internal/construct-tree");
18
16
  /**
19
17
  * L3 Construct which invokes the Amplify Transformer Pattern over an input Graphql Schema.
@@ -69,7 +67,7 @@ class AmplifyGraphqlApi extends constructs_1.Construct {
69
67
  throw new Error(`or cdk --context env must have a length <= 8, found ${amplifyEnvironmentName}`);
70
68
  }
71
69
  const assetManager = new internal_1.AssetManager();
72
- let executeTransformConfig = {
70
+ (0, graphql_transformer_1.executeTransform)({
73
71
  scope: this,
74
72
  nestedStackProvider: {
75
73
  provide: (nestedStackScope, name) => new aws_cdk_lib_1.NestedStack(nestedStackScope, name),
@@ -96,11 +94,7 @@ class AmplifyGraphqlApi extends constructs_1.Construct {
96
94
  ...internal_1.defaultTranslationBehavior,
97
95
  ...(translationBehavior ?? {}),
98
96
  },
99
- };
100
- if ((0, sql_model_datasource_binding_1.isSqlModelDataSourceBinding)(definition.modelDataSourceBinding)) {
101
- executeTransformConfig = this.extendTransformConfig(executeTransformConfig, definition.modelDataSourceBinding);
102
- }
103
- (0, graphql_transformer_1.executeTransform)(executeTransformConfig);
97
+ });
104
98
  this.codegenAssets = new internal_1.CodegenAssets(this, 'AmplifyCodegenAssets', { modelSchema: definition.schema });
105
99
  this.resources = (0, internal_1.getGeneratedResources)(this);
106
100
  this.conflictResolution = conflictResolution;
@@ -111,56 +105,6 @@ class AmplifyGraphqlApi extends constructs_1.Construct {
111
105
  this.realtimeUrl = this.resources.cfnResources.cfnGraphqlApi.attrRealtimeUrl;
112
106
  this.apiKey = this.resources.cfnResources.cfnApiKey?.attrApiKey;
113
107
  }
114
- /**
115
- * Extends executeTransformConfig with fields for provisioning a SQL Lambda
116
- * @param executeTransformConfig the executeTransformConfig to extend
117
- * @param modelDataSourceBinding the modelDataSourceBinding containing the values to add to the transform config
118
- */
119
- extendTransformConfig(executeTransformConfig, modelDataSourceBinding) {
120
- const extendedConfig = { ...executeTransformConfig };
121
- if (modelDataSourceBinding.customSqlStatements) {
122
- extendedConfig.customQueries = new Map(Object.entries(modelDataSourceBinding.customSqlStatements));
123
- }
124
- const dbSecrets = new Map();
125
- let dbSecretDbTypeKey;
126
- switch (modelDataSourceBinding.bindingType) {
127
- case graphql_transformer_core_1.MYSQL_DB_TYPE:
128
- dbSecretDbTypeKey = graphql_transformer_core_1.MYSQL_DB_TYPE;
129
- break;
130
- case graphql_transformer_core_1.POSTGRES_DB_TYPE:
131
- dbSecretDbTypeKey = graphql_transformer_core_1.POSTGRES_DB_TYPE;
132
- break;
133
- default:
134
- throw new Error(`Unsupported binding type ${modelDataSourceBinding.bindingType}`);
135
- }
136
- dbSecrets.set(dbSecretDbTypeKey, {
137
- username: modelDataSourceBinding.dbConnectionConfig.usernameSsmPath,
138
- password: modelDataSourceBinding.dbConnectionConfig.passwordSsmPath,
139
- host: modelDataSourceBinding.dbConnectionConfig.hostnameSsmPath,
140
- // Cast through `any` to allow the SSM Path string to be used on a type expecting a number. This flow expects the incoming value to be
141
- // a string containing the SSM path.
142
- port: modelDataSourceBinding.dbConnectionConfig.portSsmPath,
143
- database: modelDataSourceBinding.dbConnectionConfig.databaseNameSsmPath,
144
- });
145
- extendedConfig.datasourceSecretParameterLocations = dbSecrets;
146
- const subnetAvailabilityZoneConfig = modelDataSourceBinding.vpcConfiguration.subnetAvailabilityZones.map((saz) => ({
147
- SubnetId: saz.subnetId,
148
- AvailabilityZone: saz.availabilityZone,
149
- }));
150
- if (!extendedConfig.modelToDatasourceMap || extendedConfig.modelToDatasourceMap.size === 0) {
151
- const defaultDatasourceType = {
152
- dbType: modelDataSourceBinding.bindingType,
153
- provisionDB: false,
154
- };
155
- extendedConfig.modelToDatasourceMap = (0, graphql_transformer_core_1.constructDataSourceMap)(extendedConfig.schema, defaultDatasourceType);
156
- }
157
- extendedConfig.sqlLambdaVpcConfig = {
158
- vpcId: modelDataSourceBinding.vpcConfiguration.vpcId,
159
- securityGroupIds: modelDataSourceBinding.vpcConfiguration.securityGroupIds,
160
- subnetAvailabilityZoneConfig,
161
- };
162
- return extendedConfig;
163
- }
164
108
  /**
165
109
  * Stores graphql api output to be used for client config generation
166
110
  * @param outputStorageStrategy Strategy to store construct outputs. If no strategy is provided a default strategy will be used.
@@ -298,7 +242,7 @@ class AmplifyGraphqlApi extends constructs_1.Construct {
298
242
  }
299
243
  exports.AmplifyGraphqlApi = AmplifyGraphqlApi;
300
244
  _a = JSII_RTTI_SYMBOL_1;
301
- AmplifyGraphqlApi[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyGraphqlApi", version: "1.3.0-rds-5.0" };
245
+ AmplifyGraphqlApi[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyGraphqlApi", version: "1.3.0" };
302
246
  /**
303
247
  * Given the provided scope, walk the node tree, and throw an exception if any other AmplifyGraphqlApi constructs
304
248
  * are found in the stack.
@@ -316,4 +260,4 @@ const validateNoOtherAmplifyGraphqlApiInStack = (scope) => {
316
260
  throw new Error('Only one AmplifyGraphqlApi is expected in a stack');
317
261
  }
318
262
  };
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1ncmFwaHFsLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hbXBsaWZ5LWdyYXBocWwtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDBFQUE0RjtBQUM1Riw2Q0FBaUQ7QUFDakQsNkRBQWtEO0FBRWxELGdGQUFnRztBQUNoRyxnRkFBdUU7QUFFdkUseURBY2lDO0FBUWpDLG9GQUFzSTtBQUN0SSxzRUFBNEc7QUFVNUcseUNBVW9CO0FBQ3BCLGlGQUE2RTtBQUM3RSw4REFBa0Y7QUFFbEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUztJQTBDOUM7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLHVDQUF1QyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLE1BQU0sRUFDSixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsR0FDdEIsR0FBRyxLQUFLLENBQUM7UUFDVixJQUFBLCtDQUFvQyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE1BQU0sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFBLDJEQUFnRCxFQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFakgsSUFBQSwwQ0FBcUIsRUFBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0MsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLGtDQUFhLEVBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxD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NkIsR0FBRyxLQUFLLENBQUM7SUFDMUMsSUFBQSxvQ0FBbUIsRUFBQyxTQUFTLEVBQUUsQ0FBQyxJQUFlLEVBQUUsRUFBRTtRQUNqRCxJQUFJLElBQUksWUFBWSxpQkFBaUIsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3ZELDZCQUE2QixHQUFHLElBQUksQ0FBQztTQUN0QztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSw2QkFBNkIsRUFBRTtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEV4ZWN1dGVUcmFuc2Zvcm1Db25maWcsIGV4ZWN1dGVUcmFuc2Zvcm0gfSBmcm9tICdAYXdzLWFtcGxpZnkvZ3JhcGhxbC10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBOZXN0ZWRTdGFjaywgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBc3NldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgQXNzZXRQcm9wcyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9ncmFwaHFsLXRyYW5zZm9ybWVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3RhY2tNZXRhZGF0YUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3kgfSBmcm9tICdAYXdzLWFtcGxpZnkvYmFja2VuZC1vdXRwdXQtc3RvcmFnZSc7XG5pbXBvcnQgeyBncmFwaHFsT3V0cHV0S2V5IH0gZnJvbSAnQGF3cy1hbXBsaWZ5L2JhY2tlbmQtb3V0cHV0LXNjaGVtYXMnO1xuaW1wb3J0IHR5cGUgeyBHcmFwaHFsT3V0cHV0LCBBd3NBcHBzeW5jQXV0aGVudGljYXRpb25UeXBlIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L2JhY2tlbmQtb3V0cHV0LXNjaGVtYXMnO1xuaW1wb3J0IHtcbiAgQXBwc3luY0Z1bmN0aW9uLFxuICBEYXRhU291cmNlT3B0aW9ucyxcbiAgRHluYW1vRGJEYXRhU291cmNlLFxuICBFbGFzdGljc2VhcmNoRGF0YVNvdXJjZSxcbiAgRXZlbnRCcmlkZ2VEYXRhU291cmNlLFxuICBFeHRlbmRlZFJlc29sdmVyUHJvcHMsXG4gIEh0dHBEYXRhU291cmNlLFxuICBIdHRwRGF0YVNvdXJjZU9wdGlvbnMsXG4gIExhbWJkYURhdGFTb3VyY2UsXG4gIE5vbmVEYXRhU291cmNlLFxuICBPcGVuU2VhcmNoRGF0YVNvdXJjZSxcbiAgUmRzRGF0YVNvdXJjZSxcbiAgUmVzb2x2ZXIsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcHBzeW5jJztcbmltcG9ydCB7IElUYWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgeyBJRG9tYWluIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNzZWFyY2gnO1xuaW1wb3J0IHsgSURvbWFpbiBhcyBJT3BlblNlYXJjaERvbWFpbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1vcGVuc2VhcmNoc2VydmljZSc7XG5pbXBvcnQgeyBJRXZlbnRCdXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgSVNlcnZlcmxlc3NDbHVzdGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXJkcyc7XG5pbXBvcnQgeyBJU2VjcmV0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCB7IE1ZU1FMX0RCX1RZUEUsIFBPU1RHUkVTX0RCX1RZUEUsIFJEU0Nvbm5lY3Rpb25TZWNyZXRzLCBjb25zdHJ1Y3REYXRhU291cmNlTWFwIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L2dyYXBocWwtdHJhbnNmb3JtZXItY29yZSc7XG5pbXBvcnQgeyBwYXJzZVVzZXJEZWZpbmVkU2xvdHMsIHZhbGlkYXRlRnVuY3Rpb25TbG90cywgc2VwYXJhdGVTbG90cyB9IGZyb20gJy4vaW50ZXJuYWwvdXNlci1kZWZpbmVkLXNsb3RzJztcbmltcG9ydCB0eXBlIHtcbiAgQW1wbGlmeUdyYXBocWxBcGlSZXNvdXJjZXMsXG4gIEFtcGxpZnlHcmFwaHFsQXBpUHJvcHMsXG4gIEZ1bmN0aW9uU2xvdCxcbiAgSUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3ksXG4gIEFkZEZ1bmN0aW9uUHJvcHMsXG4gIENvbmZsaWN0UmVzb2x1dGlvbixcbiAgU3FsTW9kZWxEYXRhU291cmNlQmluZGluZyxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBjb252ZXJ0QXV0aG9yaXphdGlvbk1vZGVzVG9UcmFuc2Zvcm1lckF1dGhDb25maWcsXG4gIGNvbnZlcnRUb1Jlc29sdmVyQ29uZmlnLFxuICBkZWZhdWx0VHJhbnNsYXRpb25CZWhhdmlvcixcbiAgQXNzZXRNYW5hZ2VyLFxuICBnZXRHZW5lcmF0ZWRSZXNvdXJjZXMsXG4gIGdldEdlbmVyYXRlZEZ1bmN0aW9uU2xvdHMsXG4gIENvZGVnZW5Bc3NldHMsXG4gIGFkZEFtcGxpZnlNZXRhZGF0YVRvU3RhY2tEZXNjcmlwdGlvbixcbiAgZ2V0QWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uVHlwZXMsXG59IGZyb20gJy4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgaXNTcWxNb2RlbERhdGFTb3VyY2VCaW5kaW5nIH0gZnJvbSAnLi9zcWwtbW9kZWwtZGF0YXNvdXJjZS1iaW5kaW5nJztcbmltcG9ydCB7IGdldFN0YWNrRm9yU2NvcGUsIHdhbGtBbmRQcm9jZXNzTm9kZXMgfSBmcm9tICcuL2ludGVybmFsL2NvbnN0cnVjdC10cmVlJztcblxuLyoqXG4gKiBMMyBDb25zdHJ1Y3Qgd2hpY2ggaW52b2tlcyB0aGUgQW1wbGlmeSBUcmFuc2Zvcm1lciBQYXR0ZXJuIG92ZXIgYW4gaW5wdXQgR3JhcGhxbCBTY2hlbWEuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGRlZmluZSBhcHBzeW5jIGFwaXMgd2hpY2ggc3VwcG9ydCBmdWxsIENSVUQrTGlzdCBhbmQgU3Vic2NyaXB0aW9ucywgcmVsYXRpb25zaGlwcyxcbiAqIGF1dGgsIHNlYXJjaCBvdmVyIGRhdGEsIHRoZSBhYmlsaXR5IHRvIGluamVjdCBjdXN0b20gYnVzaW5lc3MgbG9naWMgYW5kIHF1ZXJ5L211dGF0aW9uIG9wZXJhdGlvbnMsIGFuZCBjb25uZWN0IHRvIE1MIHNlcnZpY2VzLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWZlciB0byB0aGUgZG9jcyBsaW5rcyBiZWxvdzpcbiAqIERhdGEgTW9kZWxpbmcgLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvZGF0YS1tb2RlbGluZy9cbiAqIEF1dGhvcml6YXRpb24gLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvYXV0aG9yaXphdGlvbi1ydWxlcy9cbiAqIEN1c3RvbSBCdXNpbmVzcyBMb2dpYyAtIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvXG4gKiBTZWFyY2ggLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvc2VhcmNoLWFuZC1yZXN1bHQtYWdncmVnYXRpb25zL1xuICogTUwgU2VydmljZXMgLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY29ubmVjdC10by1tYWNoaW5lLWxlYXJuaW5nLXNlcnZpY2VzL1xuICpcbiAqIEZvciBhIGZ1bGwgcmVmZXJlbmNlIG9mIHRoZSBzdXBwb3J0ZWQgY3VzdG9tIGdyYXBocWwgZGlyZWN0aXZlcyAtIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9kaXJlY3RpdmVzLXJlZmVyZW5jZS9cbiAqXG4gKiBUaGUgb3V0cHV0IG9mIHRoaXMgY29uc3RydWN0IGlzIGEgbWFwcGluZyBvZiBMMiBvciBMMSByZXNvdXJjZXMgZ2VuZXJhdGVkIGJ5IHRoZSB0cmFuc2Zvcm1lciwgd2hpY2ggZ2VuZXJhbGx5IGZvbGxvdyB0aGUgYWNjZXNzIHBhdHRlcm5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgIGNvbnN0IGFwaSA9IG5ldyBBbXBsaWZ5R3JhcGhRbEFwaSh0aGlzLCAnYXBpJywgeyA8cGFyYW1zPiB9KTtcbiAqICAgLy8gQWNjZXNzIEwyIHJlc291cmNlcyB1bmRlciBgLnJlc291cmNlc2BcbiAqICAgYXBpLnJlc291cmNlcy50YWJsZXNbXCJUb2RvXCJdLnRhYmxlQXJuO1xuICpcbiAqICAgLy8gQWNjZXNzIEwxIHJlc291cmNlcyB1bmRlciBgLnJlc291cmNlcy5jZm5SZXNvdXJjZXNgXG4gKiAgIGFwaS5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkueHJheUVuYWJsZWQgPSB0cnVlO1xuICogICBPYmplY3QudmFsdWVzKGFwaS5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmblRhYmxlcykuZm9yRWFjaCh0YWJsZSA9PiB7XG4gKiAgICAgdGFibGUucG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb24gPSB7IHBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkOiBmYWxzZSB9O1xuICogICB9KTtcbiAqIGBgYFxuICogYHJlc291cmNlcy48UmVzb3VyY2VUeXBlPi48UmVzb3VyY2VOYW1lPmAgLSB5b3UgY2FuIHRoZW4gcGVyZm9ybSBhbnkgQ0RLIGFjdGlvbiBvbiB0aGVzZSByZXN1bHRpbmcgcmVzb3VyZWNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFtcGxpZnlHcmFwaHFsQXBpIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlZCBMMSBhbmQgTDIgQ0RLIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZXM6IEFtcGxpZnlHcmFwaHFsQXBpUmVzb3VyY2VzO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgYXNzZXRzIHJlcXVpcmVkIGZvciBjb2RlZ2VuIHN0ZXBzLiBQZXJzaXN0ZWQgaW4gb3JkZXIgdG8gcmVuZGVyIGFzIHBhcnQgb2YgdGhlIG91dHB1dCBzdHJhdGVneS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29kZWdlbkFzc2V0czogQ29kZWdlbkFzc2V0cztcblxuICAvKipcbiAgICogUmVzb2x2ZXJzIGdlbmVyYXRlZCBieSB0aGUgdHJhbnNmb3JtIHByb2Nlc3MsIHBlcnNpc3RlZCBvbiB0aGUgc2lkZSBpbiBvcmRlciB0byBmYWNpbGl0YXRlIHB1bGxpbmcgYSBtYW5pZmVzdFxuICAgKiBmb3IgdGhlIHB1cnBvc2VzIG9mIGluc3BlY3RpbmcgYW5kIHByb2R1Y2luZyBvdmVycmlkZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2VuZXJhdGVkRnVuY3Rpb25TbG90czogRnVuY3Rpb25TbG90W107XG5cbiAgLyoqXG4gICAqIEdyYXBocWwgVVJMIEZvciB0aGUgZ2VuZXJhdGVkIEFQSS4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdyYXBocWxVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogUmVhbHRpbWUgVVJMIEZvciB0aGUgZ2VuZXJhdGVkIEFQSS4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlYWx0aW1lVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlZCBBcGkgS2V5IGlmIGdlbmVyYXRlZC4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgQXBpIElkLiBNYXkgYmUgYSBDREsgVG9rZW4uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uZmxpY3QgcmVzb2x1dGlvbiBzZXR0aW5nXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZsaWN0UmVzb2x1dGlvbjogQ29uZmxpY3RSZXNvbHV0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOZXcgQW1wbGlmeUdyYXBocWxBcGkgY29uc3RydWN0LCB0aGlzIHdpbGwgY3JlYXRlIGFuIGFwcHN5bmMgYXBpIHdpdGggYXV0aG9yaXphdGlvbiwgYSBzY2hlbWEsIGFuZCBhbGwgbmVjZXNzYXJ5IHJlc29sdmVycywgZnVuY3Rpb25zLFxuICAgKiBhbmQgZGF0YXNvdXJjZXMuXG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdG8gY3JlYXRlIHRoaXMgY29uc3RydWN0IHdpdGhpbi5cbiAgICogQHBhcmFtIGlkIHRoZSBpZCB0byB1c2UgZm9yIHRoaXMgYXBpLlxuICAgKiBAcGFyYW0gcHJvcHMgdGhlIHByb3BlcnRpZXMgdXNlZCB0byBjb25maWd1cmUgdGhlIGdlbmVyYXRlZCBhcGkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQW1wbGlmeUdyYXBocWxBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB2YWxpZGF0ZU5vT3RoZXJBbXBsaWZ5R3JhcGhxbEFwaUluU3RhY2sodGhpcyk7XG5cbiAgICBjb25zdCB7XG4gICAgICBkZWZpbml0aW9uLFxuICAgICAgYXV0aG9yaXphdGlvbk1vZGVzLFxuICAgICAgY29uZmxpY3RSZXNvbHV0aW9uLFxuICAgICAgZnVuY3Rpb25TbG90cyxcbiAgICAgIHRyYW5zZm9ybWVyUGx1Z2lucyxcbiAgICAgIHByZWRpY3Rpb25zQnVja2V0LFxuICAgICAgc3RhY2tNYXBwaW5ncyxcbiAgICAgIHRyYW5zbGF0aW9uQmVoYXZpb3IsXG4gICAgICBmdW5jdGlvbk5hbWVNYXAsXG4gICAgICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3ksXG4gICAgfSA9IHByb3BzO1xuICAgIGFkZEFtcGxpZnlNZXRhZGF0YVRvU3RhY2tEZXNjcmlwdGlvbihzY29wZSk7XG5cbiAgICBjb25zdCB7IGF1dGhDb25maWcsIGF1dGhTeW50aFBhcmFtZXRlcnMgfSA9IGNvbnZlcnRBdXRob3JpemF0aW9uTW9kZXNUb1RyYW5zZm9ybWVyQXV0aENvbmZpZyhhdXRob3JpemF0aW9uTW9kZXMpO1xuXG4gICAgdmFsaWRhdGVGdW5jdGlvblNsb3RzKGZ1bmN0aW9uU2xvdHMgPz8gW10pO1xuICAgIGNvbnN0IHNlcGFyYXRlZEZ1bmN0aW9uU2xvdHMgPSBzZXBhcmF0ZVNsb3RzKFsuLi4oZnVuY3Rpb25TbG90cyA/PyBbXSksIC4uLmRlZmluaXRpb24uZnVuY3Rpb25TbG90c10pO1xuXG4gICAgLy8gQWxsb3cgYW1wbGlmeUVudmlyb25tZW50TmFtZSB0byBiZSByZXRyaWV2ZSBmcm9tIGNvbnRleHQsIGFuZCB1c2UgdmFsdWUgJ05PTkUnIGlmIG5vIHZhbHVlIGNhbiBiZSBmb3VuZC5cbiAgICAvLyBhbXBsaWZ5RW52aXJvbm1lbnROYW1lIGlzIHJlcXVpcmVkIGZvciBsb2dpY2FsIGlkIHN1ZmZpeGluZywgYXMgd2VsbCBhcyBFeHBvcnRzIGZyb20gdGhlIG5lc3RlZCBzdGFja3MuXG4gICAgLy8gQWxsb3cgZXhwb3J0IHNvIGN1c3RvbWVycyBjYW4gcmV1c2UgdGhlIGVudiBpbiB0aGVpciBvd24gcmVmZXJlbmNlcyBkb3duc3RyZWFtLlxuICAgIGNvbnN0IGFtcGxpZnlFbnZpcm9ubWVudE5hbWUgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dCgnYW1wbGlmeUVudmlyb25tZW50TmFtZScpID8/ICdOT05FJztcbiAgICBpZiAoYW1wbGlmeUVudmlyb25tZW50TmFtZS5sZW5ndGggPiA4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG9yIGNkayAtLWNvbnRleHQgZW52IG11c3QgaGF2ZSBhIGxlbmd0aCA8PSA4LCBmb3VuZCAke2FtcGxpZnlFbnZpcm9ubWVudE5hbWV9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXRNYW5hZ2VyID0gbmV3IEFzc2V0TWFuYWdlcigpO1xuXG4gICAgbGV0IGV4ZWN1dGVUcmFuc2Zvcm1Db25maWc6IEV4ZWN1dGVUcmFuc2Zvcm1Db25maWcgPSB7XG4gICAgICBzY29wZTogdGhpcyxcbiAgICAgIG5lc3RlZFN0YWNrUHJvdmlkZXI6IHtcbiAgICAgICAgcHJvdmlkZTogKG5lc3RlZFN0YWNrU2NvcGU6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSA9PiBuZXcgTmVzdGVkU3RhY2sobmVzdGVkU3RhY2tTY29wZSwgbmFtZSksXG4gICAgICB9LFxuICAgICAgYXNzZXRQcm92aWRlcjoge1xuICAgICAgICBwcm92aWRlOiAoYXNzZXRTY29wZTogQ29uc3RydWN0LCBhc3NldElkOiBzdHJpbmcsIGFzc2V0UHJvcHM6IEFzc2V0UHJvcHMpID0+XG4gICAgICAgICAgbmV3IEFzc2V0KGFzc2V0U2NvcGUsIGFzc2V0SWQsIHsgcGF0aDogYXNzZXRNYW5hZ2VyLmFkZEFzc2V0KGFzc2V0UHJvcHMuZmlsZU5hbWUsIGFzc2V0UHJvcHMuZmlsZUNvbnRlbnQpIH0pLFxuICAgICAgfSxcbiAgICAgIHN5bnRoUGFyYW1ldGVyczoge1xuICAgICAgICBhbXBsaWZ5RW52aXJvbm1lbnROYW1lOiBhbXBsaWZ5RW52aXJvbm1lbnROYW1lLFxuICAgICAgICBhcGlOYW1lOiBwcm9wcy5hcGlOYW1lID8/IGlkLFxuICAgICAgICAuLi5hdXRoU3ludGhQYXJhbWV0ZXJzLFxuICAgICAgfSxcbiAgICAgIHNjaGVtYTogZGVmaW5pdGlvbi5zY2hlbWEsXG4gICAgICB1c2VyRGVmaW5lZFNsb3RzOiBwYXJzZVVzZXJEZWZpbmVkU2xvdHMoc2VwYXJhdGVkRnVuY3Rpb25TbG90cyksXG4gICAgICB0cmFuc2Zvcm1lcnNGYWN0b3J5QXJnczoge1xuICAgICAgICBjdXN0b21UcmFuc2Zvcm1lcnM6IHRyYW5zZm9ybWVyUGx1Z2lucyA/PyBbXSxcbiAgICAgICAgLi4uKHByZWRpY3Rpb25zQnVja2V0ID8geyBzdG9yYWdlQ29uZmlnOiB7IGJ1Y2tldE5hbWU6IHByZWRpY3Rpb25zQnVja2V0LmJ1Y2tldE5hbWUgfSB9IDoge30pLFxuICAgICAgICBmdW5jdGlvbk5hbWVNYXAsXG4gICAgICB9LFxuICAgICAgYXV0aENvbmZpZyxcbiAgICAgIHN0YWNrTWFwcGluZzogc3RhY2tNYXBwaW5ncyA/PyB7fSxcbiAgICAgIHJlc29sdmVyQ29uZmlnOiBjb25mbGljdFJlc29sdXRpb24gPyBjb252ZXJ0VG9SZXNvbHZlckNvbmZpZyhjb25mbGljdFJlc29sdXRpb24pIDogdW5kZWZpbmVkLFxuICAgICAgdHJhbnNmb3JtUGFyYW1ldGVyczoge1xuICAgICAgICAuLi5kZWZhdWx0VHJhbnNsYXRpb25CZWhhdmlvcixcbiAgICAgICAgLi4uKHRyYW5zbGF0aW9uQmVoYXZpb3IgPz8ge30pLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKGlzU3FsTW9kZWxEYXRhU291cmNlQmluZGluZyhkZWZpbml0aW9uLm1vZGVsRGF0YVNvdXJjZUJpbmRpbmcpKSB7XG4gICAgICBleGVjdXRlVHJhbnNmb3JtQ29uZmlnID0gdGhpcy5leHRlbmRUcmFuc2Zvcm1Db25maWcoZXhlY3V0ZVRyYW5zZm9ybUNvbmZpZywgZGVmaW5pdGlvbi5tb2RlbERhdGFTb3VyY2VCaW5kaW5nKTtcbiAgICB9XG5cbiAgICBleGVjdXRlVHJhbnNmb3JtKGV4ZWN1dGVUcmFuc2Zvcm1Db25maWcpO1xuXG4gICAgdGhpcy5jb2RlZ2VuQXNzZXRzID0gbmV3IENvZGVnZW5Bc3NldHModGhpcywgJ0FtcGxpZnlDb2RlZ2VuQXNzZXRzJywgeyBtb2RlbFNjaGVtYTogZGVmaW5pdGlvbi5zY2hlbWEgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlcyA9IGdldEdlbmVyYXRlZFJlc291cmNlcyh0aGlzKTtcbiAgICB0aGlzLmNvbmZsaWN0UmVzb2x1dGlvbiA9IGNvbmZsaWN0UmVzb2x1dGlvbjtcbiAgICB0aGlzLmdlbmVyYXRlZEZ1bmN0aW9uU2xvdHMgPSBnZXRHZW5lcmF0ZWRGdW5jdGlvblNsb3RzKGFzc2V0TWFuYWdlci5yZXNvbHZlckFzc2V0cyk7XG4gICAgdGhpcy5zdG9yZU91dHB1dChvdXRwdXRTdG9yYWdlU3RyYXRlZ3kpO1xuXG4gICAgdGhpcy5hcGlJZCA9IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLmF0dHJBcGlJZDtcbiAgICB0aGlzLmdyYXBocWxVcmwgPSB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuR3JhcGhxbEFwaS5hdHRyR3JhcGhRbFVybDtcbiAgICB0aGlzLnJlYWx0aW1lVXJsID0gdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkuYXR0clJlYWx0aW1lVXJsO1xuICAgIHRoaXMuYXBpS2V5ID0gdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkFwaUtleT8uYXR0ckFwaUtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmRzIGV4ZWN1dGVUcmFuc2Zvcm1Db25maWcgd2l0aCBmaWVsZHMgZm9yIHByb3Zpc2lvbmluZyBhIFNRTCBMYW1iZGFcbiAgICogQHBhcmFtIGV4ZWN1dGVUcmFuc2Zvcm1Db25maWcgdGhlIGV4ZWN1dGVUcmFuc2Zvcm1Db25maWcgdG8gZXh0ZW5kXG4gICAqIEBwYXJhbSBtb2RlbERhdGFTb3VyY2VCaW5kaW5nIHRoZSBtb2RlbERhdGFTb3VyY2VCaW5kaW5nIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHRyYW5zZm9ybSBjb25maWdcbiAgICovXG4gIHByaXZhdGUgZXh0ZW5kVHJhbnNmb3JtQ29uZmlnKFxuICAgIGV4ZWN1dGVUcmFuc2Zvcm1Db25maWc6IEV4ZWN1dGVUcmFuc2Zvcm1Db25maWcsXG4gICAgbW9kZWxEYXRhU291cmNlQmluZGluZzogU3FsTW9kZWxEYXRhU291cmNlQmluZGluZyxcbiAgKTogRXhlY3V0ZVRyYW5zZm9ybUNvbmZpZyB7XG4gICAgY29uc3QgZXh0ZW5kZWRDb25maWcgPSB7IC4uLmV4ZWN1dGVUcmFuc2Zvcm1Db25maWcgfTtcbiAgICBpZiAobW9kZWxEYXRhU291cmNlQmluZGluZy5jdXN0b21TcWxTdGF0ZW1lbnRzKSB7XG4gICAgICBleHRlbmRlZENvbmZpZy5jdXN0b21RdWVyaWVzID0gbmV3IE1hcChPYmplY3QuZW50cmllcyhtb2RlbERhdGFTb3VyY2VCaW5kaW5nLmN1c3RvbVNxbFN0YXRlbWVudHMpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYlNlY3JldHM6IE1hcDxzdHJpbmcsIFJEU0Nvbm5lY3Rpb25TZWNyZXRzPiA9IG5ldyBNYXAoKTtcbiAgICBsZXQgZGJTZWNyZXREYlR5cGVLZXk6IHN0cmluZztcbiAgICBzd2l0Y2ggKG1vZGVsRGF0YVNvdXJjZUJpbmRpbmcuYmluZGluZ1R5cGUpIHtcbiAgICAgIGNhc2UgTVlTUUxfREJfVFlQRTpcbiAgICAgICAgZGJTZWNyZXREYlR5cGVLZXkgPSBNWVNRTF9EQl9UWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUE9TVEdSRVNfREJfVFlQRTpcbiAgICAgICAgZGJTZWNyZXREYlR5cGVLZXkgPSBQT1NUR1JFU19EQl9UWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYmluZGluZyB0eXBlICR7bW9kZWxEYXRhU291cmNlQmluZGluZy5iaW5kaW5nVHlwZX1gKTtcbiAgICB9XG4gICAgZGJTZWNyZXRzLnNldChkYlNlY3JldERiVHlwZUtleSwge1xuICAgICAgdXNlcm5hbWU6IG1vZGVsRGF0YVNvdXJjZUJpbmRpbmcuZGJDb25uZWN0aW9uQ29uZmlnLnVzZXJuYW1lU3NtUGF0aCxcbiAgICAgIHBhc3N3b3JkOiBtb2RlbERhdGFTb3VyY2VCaW5kaW5nLmRiQ29ubmVjdGlvbkNvbmZpZy5wYXNzd29yZFNzbVBhdGgsXG4gICAgICBob3N0OiBtb2RlbERhdGFTb3VyY2VCaW5kaW5nLmRiQ29ubmVjdGlvbkNvbmZpZy5ob3N0bmFtZVNzbVBhdGgsXG4gICAgICAvLyBDYXN0IHRocm91Z2ggYGFueWAgdG8gYWxsb3cgdGhlIFNTTSBQYXRoIHN0cmluZyB0byBiZSB1c2VkIG9uIGEgdHlwZSBleHBlY3RpbmcgYSBudW1iZXIuIFRoaXMgZmxvdyBleHBlY3RzIHRoZSBpbmNvbWluZyB2YWx1ZSB0byBiZVxuICAgICAgLy8gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgU1NNIHBhdGguXG4gICAgICBwb3J0OiBtb2RlbERhdGFTb3VyY2VCaW5kaW5nLmRiQ29ubmVjdGlvbkNvbmZpZy5wb3J0U3NtUGF0aCBhcyBhbnksXG4gICAgICBkYXRhYmFzZTogbW9kZWxEYXRhU291cmNlQmluZGluZy5kYkNvbm5lY3Rpb25Db25maWcuZGF0YWJhc2VOYW1lU3NtUGF0aCxcbiAgICB9KTtcbiAgICBleHRlbmRlZENvbmZpZy5kYXRhc291cmNlU2VjcmV0UGFyYW1ldGVyTG9jYXRpb25zID0gZGJTZWNyZXRzO1xuXG4gICAgY29uc3Qgc3VibmV0QXZhaWxhYmlsaXR5Wm9uZUNvbmZpZyA9IG1vZGVsRGF0YVNvdXJjZUJpbmRpbmcudnBjQ29uZmlndXJhdGlvbi5zdWJuZXRBdmFpbGFiaWxpdHlab25lcy5tYXAoXG4gICAgICAoc2F6KTogeyBTdWJuZXRJZDogc3RyaW5nOyBBdmFpbGFiaWxpdHlab25lOiBzdHJpbmcgfSA9PiAoe1xuICAgICAgICBTdWJuZXRJZDogc2F6LnN1Ym5ldElkLFxuICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBzYXouYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoIWV4dGVuZGVkQ29uZmlnLm1vZGVsVG9EYXRhc291cmNlTWFwIHx8IGV4dGVuZGVkQ29uZmlnLm1vZGVsVG9EYXRhc291cmNlTWFwLnNpemUgPT09IDApIHtcbiAgICAgIGNvbnN0IGRlZmF1bHREYXRhc291cmNlVHlwZSA9IHtcbiAgICAgICAgZGJUeXBlOiBtb2RlbERhdGFTb3VyY2VCaW5kaW5nLmJpbmRpbmdUeXBlLFxuICAgICAgICBwcm92aXNpb25EQjogZmFsc2UsXG4gICAgICB9O1xuICAgICAgZXh0ZW5kZWRDb25maWcubW9kZWxUb0RhdGFzb3VyY2VNYXAgPSBjb25zdHJ1Y3REYXRhU291cmNlTWFwKGV4dGVuZGVkQ29uZmlnLnNjaGVtYSwgZGVmYXVsdERhdGFzb3VyY2VUeXBlKTtcbiAgICB9XG5cbiAgICBleHRlbmRlZENvbmZpZy5zcWxMYW1iZGFWcGNDb25maWcgPSB7XG4gICAgICB2cGNJZDogbW9kZWxEYXRhU291cmNlQmluZGluZy52cGNDb25maWd1cmF0aW9uLnZwY0lkLFxuICAgICAgc2VjdXJpdHlHcm91cElkczogbW9kZWxEYXRhU291cmNlQmluZGluZy52cGNDb25maWd1cmF0aW9uLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICBzdWJuZXRBdmFpbGFiaWxpdHlab25lQ29uZmlnLFxuICAgIH07XG5cbiAgICByZXR1cm4gZXh0ZW5kZWRDb25maWc7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmVzIGdyYXBocWwgYXBpIG91dHB1dCB0byBiZSB1c2VkIGZvciBjbGllbnQgY29uZmlnIGdlbmVyYXRpb25cbiAgICogQHBhcmFtIG91dHB1dFN0b3JhZ2VTdHJhdGVneSBTdHJhdGVneSB0byBzdG9yZSBjb25zdHJ1Y3Qgb3V0cHV0cy4gSWYgbm8gc3RyYXRlZ3kgaXMgcHJvdmlkZWQgYSBkZWZhdWx0IHN0cmF0ZWd5IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHByaXZhdGUgc3RvcmVPdXRwdXQoXG4gICAgb3V0cHV0U3RvcmFnZVN0cmF0ZWd5OiBJQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSA9IG5ldyBTdGFja01ldGFkYXRhQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneShTdGFjay5vZih0aGlzKSksXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3Qgb3V0cHV0OiBHcmFwaHFsT3V0cHV0ID0ge1xuICAgICAgdmVyc2lvbjogJzEnLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBhd3NBcHBzeW5jQXBpSWQ6IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLmF0dHJBcGlJZCxcbiAgICAgICAgYXdzQXBwc3luY0FwaUVuZHBvaW50OiB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuR3JhcGhxbEFwaS5hdHRyR3JhcGhRbFVybCxcbiAgICAgICAgYXdzQXBwc3luY0F1dGhlbnRpY2F0aW9uVHlwZTogdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkuYXV0aGVudGljYXRpb25UeXBlIGFzIEF3c0FwcHN5bmNBdXRoZW50aWNhdGlvblR5cGUsXG4gICAgICAgIGF3c0FwcHN5bmNSZWdpb246IHN0YWNrLnJlZ2lvbixcbiAgICAgICAgYW1wbGlmeUFwaU1vZGVsU2NoZW1hUzNVcmk6IHRoaXMuY29kZWdlbkFzc2V0cy5tb2RlbFNjaGVtYVMzVXJpLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5BcGlLZXkpIHtcbiAgICAgIG91dHB1dC5wYXlsb2FkLmF3c0FwcHN5bmNBcGlLZXkgPSB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuQXBpS2V5LmF0dHJBcGlLZXk7XG4gICAgfVxuXG4gICAgY29uc3QgYWRkaXRpb25hbEF1dGhUeXBlcyA9IGdldEFkZGl0aW9uYWxBdXRoZW50aWNhdGlvblR5cGVzKHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpKTtcbiAgICBpZiAoYWRkaXRpb25hbEF1dGhUeXBlcykge1xuICAgICAgb3V0cHV0LnBheWxvYWQuYXdzQXBwc3luY0FkZGl0aW9uYWxBdXRoZW50aWNhdGlvblR5cGVzID0gYWRkaXRpb25hbEF1dGhUeXBlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25mbGljdFJlc29sdXRpb24/LnByb2plY3Q/LmhhbmRsZXJUeXBlKSB7XG4gICAgICBvdXRwdXQucGF5bG9hZC5hd3NBcHBzeW5jQ29uZmxpY3RSZXNvbHV0aW9uTW9kZSA9IHRoaXMuY29uZmxpY3RSZXNvbHV0aW9uPy5wcm9qZWN0Py5oYW5kbGVyVHlwZTtcbiAgICB9XG5cbiAgICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3kuYWRkQmFja2VuZE91dHB1dEVudHJ5KGdyYXBocWxPdXRwdXRLZXksIG91dHB1dCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbGxvd2luZyBhcmUgcHJveHkgbWV0aG9kcyB0byB0aGUgTDIgSUdyYXBocWxBcGkgaW50ZXJmYWNlLCB0byBmYWNpbGl0YXRlIGVhc2llciB1c2Ugb2YgdGhlIEwzIHdpdGhvdXQgbmVlZGluZ1xuICAgKiB0byBhY2Nlc3MgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VzLlxuICAgKi9cblxuICAvKipcbiAgICogQWRkIGEgbmV3IER5bmFtb0RCIGRhdGEgc291cmNlIHRvIHRoaXMgQVBJLiBUaGlzIGlzIGEgcHJveHkgbWV0aG9kIHRvIHRoZSBMMiBHcmFwaHFsQXBpIENvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBkYXRhIHNvdXJjZSdzIGlkLlxuICAgKiBAcGFyYW0gdGFibGUgVGhlIER5bmFtb0RCIHRhYmxlIGJhY2tpbmcgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEByZXR1cm5zIHRoZSBnZW5lcmF0ZWQgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkRHluYW1vRGJEYXRhU291cmNlKGlkOiBzdHJpbmcsIHRhYmxlOiBJVGFibGUsIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IER5bmFtb0RiRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkRHluYW1vRGJEYXRhU291cmNlKGlkLCB0YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGVsYXN0aWNzZWFyY2ggZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGFkZE9wZW5TZWFyY2hEYXRhU291cmNlYFxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBkb21haW4gVGhlIGVsYXN0aWNzZWFyY2ggZG9tYWluIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFbGFzdGljc2VhcmNoRGF0YVNvdXJjZShpZDogc3RyaW5nLCBkb21haW46IElEb21haW4sIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IEVsYXN0aWNzZWFyY2hEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGRFbGFzdGljc2VhcmNoRGF0YVNvdXJjZShpZCwgZG9tYWluLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gRXZlbnRCcmlkZ2UgZGF0YSBzb3VyY2UgdG8gdGhpcyBhcGkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBldmVudEJ1cyBUaGUgRXZlbnRCcmlkZ2UgRXZlbnRCdXMgb24gd2hpY2ggdG8gcHV0IGV2ZW50cy5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkRXZlbnRCcmlkZ2VEYXRhU291cmNlKGlkOiBzdHJpbmcsIGV2ZW50QnVzOiBJRXZlbnRCdXMsIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IEV2ZW50QnJpZGdlRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkRXZlbnRCcmlkZ2VEYXRhU291cmNlKGlkLCBldmVudEJ1cywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGh0dHAgZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBlbmRwb2ludCBUaGUgaHR0cCBlbmRwb2ludC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEByZXR1cm5zIHRoZSBnZW5lcmF0ZWQgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkSHR0cERhdGFTb3VyY2UoaWQ6IHN0cmluZywgZW5kcG9pbnQ6IHN0cmluZywgb3B0aW9ucz86IEh0dHBEYXRhU291cmNlT3B0aW9ucyk6IEh0dHBEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGRIdHRwRGF0YVNvdXJjZShpZCwgZW5kcG9pbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBMYW1iZGEgZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBsYW1iZGFGdW5jdGlvbiBUaGUgTGFtYmRhIGZ1bmN0aW9uIHRvIGNhbGwgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRMYW1iZGFEYXRhU291cmNlKGlkOiBzdHJpbmcsIGxhbWJkYUZ1bmN0aW9uOiBJRnVuY3Rpb24sIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IExhbWJkYURhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmFkZExhbWJkYURhdGFTb3VyY2UoaWQsIGxhbWJkYUZ1bmN0aW9uLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZHVtbXkgZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBVc2VmdWwgZm9yIHBpcGVsaW5lIHJlc29sdmVycyBhbmQgZm9yIGJhY2tlbmQgY2hhbmdlcyB0aGF0IGRvbid0IHJlcXVpcmUgYSBkYXRhIHNvdXJjZS5cbiAgICogQHBhcmFtIGlkIFRoZSBkYXRhIHNvdXJjZSdzIGlkLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGROb25lRGF0YVNvdXJjZShpZDogc3RyaW5nLCBvcHRpb25zPzogRGF0YVNvdXJjZU9wdGlvbnMpOiBOb25lRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkTm9uZURhdGFTb3VyY2UoaWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGRkIGEgbmV3IE9wZW5TZWFyY2ggZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBkb21haW4gVGhlIE9wZW5TZWFyY2ggZG9tYWluIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRPcGVuU2VhcmNoRGF0YVNvdXJjZShpZDogc3RyaW5nLCBkb21haW46IElPcGVuU2VhcmNoRG9tYWluLCBvcHRpb25zPzogRGF0YVNvdXJjZU9wdGlvbnMpOiBPcGVuU2VhcmNoRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkT3BlblNlYXJjaERhdGFTb3VyY2UoaWQsIGRvbWFpbiwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IFJkcyBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIHNlcnZlcmxlc3NDbHVzdGVyIFRoZSBzZXJ2ZXJsZXNzIGNsdXN0ZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gc2VjcmV0U3RvcmUgVGhlIHNlY3JldCBzdG9yZSB0aGF0IGNvbnRhaW5zIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm9yIHRoZSBzZXJ2ZXJsZXNzIGNsdXN0ZXIuXG4gICAqIEBwYXJhbSBkYXRhYmFzZU5hbWUgVGhlIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGRhdGFiYXNlIHRvIHVzZSB3aXRoaW4gdGhlIGNsdXN0ZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZFJkc0RhdGFTb3VyY2UoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBzZXJ2ZXJsZXNzQ2x1c3RlcjogSVNlcnZlcmxlc3NDbHVzdGVyLFxuICAgIHNlY3JldFN0b3JlOiBJU2VjcmV0LFxuICAgIGRhdGFiYXNlTmFtZT86IHN0cmluZyxcbiAgICBvcHRpb25zPzogRGF0YVNvdXJjZU9wdGlvbnMsXG4gICk6IFJkc0RhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmFkZFJkc0RhdGFTb3VyY2UoaWQsIHNlcnZlcmxlc3NDbHVzdGVyLCBzZWNyZXRTdG9yZSwgZGF0YWJhc2VOYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSByZXNvbHZlciB0byB0aGUgYXBpLiBUaGlzIGlzIGEgcHJveHkgbWV0aG9kIHRvIHRoZSBMMiBHcmFwaHFsQXBpIENvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSByZXNvbHZlcidzIGlkLlxuICAgKiBAcGFyYW0gcHJvcHMgdGhlIHJlc29sdmVyIHByb3BlcnRpZXMuXG4gICAqIEByZXR1cm5zIHRoZSBnZW5lcmF0ZWQgcmVzb2x2ZXIuXG4gICAqL1xuICBwdWJsaWMgYWRkUmVzb2x2ZXIoaWQ6IHN0cmluZywgcHJvcHM6IEV4dGVuZGVkUmVzb2x2ZXJQcm9wcyk6IFJlc29sdmVyIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5jcmVhdGVSZXNvbHZlcihpZCwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBhcHBzeW5jIGZ1bmN0aW9uIHRvIHRoZSBhcGkuXG4gICAqIEBwYXJhbSBpZCB0aGUgZnVuY3Rpb24ncyBpZC5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBhcHBzeW5jIGZ1bmN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFkZEZ1bmN0aW9uKGlkOiBzdHJpbmcsIHByb3BzOiBBZGRGdW5jdGlvblByb3BzKTogQXBwc3luY0Z1bmN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEFwcHN5bmNGdW5jdGlvbih0aGlzLCBpZCwge1xuICAgICAgYXBpOiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiB0aGUgcHJvdmlkZWQgc2NvcGUsIHdhbGsgdGhlIG5vZGUgdHJlZSwgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbnkgb3RoZXIgQW1wbGlmeUdyYXBocWxBcGkgY29uc3RydWN0c1xuICogYXJlIGZvdW5kIGluIHRoZSBzdGFjay5cbiAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdGhpcyBjb25zdHJ1Y3QgaXMgY3JlYXRlZCBpbi5cbiAqL1xuY29uc3QgdmFsaWRhdGVOb090aGVyQW1wbGlmeUdyYXBocWxBcGlJblN0YWNrID0gKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkID0+IHtcbiAgY29uc3Qgcm9vdFN0YWNrID0gZ2V0U3RhY2tGb3JTY29wZShzY29wZSwgdHJ1ZSk7XG5cbiAgbGV0IHdhc090aGVyQW1wbGlmeUdyYXBobEFwaUZvdW5kID0gZmFsc2U7XG4gIHdhbGtBbmRQcm9jZXNzTm9kZXMocm9vdFN0YWNrLCAobm9kZTogQ29uc3RydWN0KSA9PiB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBBbXBsaWZ5R3JhcGhxbEFwaSAmJiBzY29wZSAhPT0gbm9kZSkge1xuICAgICAgd2FzT3RoZXJBbXBsaWZ5R3JhcGhsQXBpRm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHdhc090aGVyQW1wbGlmeUdyYXBobEFwaUZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IG9uZSBBbXBsaWZ5R3JhcGhxbEFwaSBpcyBleHBlY3RlZCBpbiBhIHN0YWNrJyk7XG4gIH1cbn07XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1ncmFwaHFsLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hbXBsaWZ5LWdyYXBocWwtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDBFQUFvRTtBQUNwRSw2Q0FBaUQ7QUFDakQsNkRBQWtEO0FBRWxELGdGQUFnRztBQUNoRyxnRkFBdUU7QUFFdkUseURBY2lDO0FBUWpDLHNFQUE0RztBQVM1Ryx5Q0FVb0I7QUFDcEIsOERBQWtGO0FBRWxGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsc0JBQVM7SUEwQzlDOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQix1Q0FBdUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QyxNQUFNLEVBQ0osVUFBVSxFQUNWLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YscUJBQXFCLEdBQ3RCLEdBQUcsS0FBSyxDQUFDO1FBRVYsSUFBQSwrQ0FBb0MsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUU1QyxNQUFNLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsSUFBQSwyREFBZ0QsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpILElBQUEsMENBQXFCLEVBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sc0JBQXNCLEdBQUcsSUFBQSxrQ0FBYSxFQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBRXRHLDJHQUEyRztRQUMz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dUMsR0FBRyxDQUFDLEtBQWdCLEVBQVEsRUFBRTtJQUN6RSxNQUFNLFNBQVMsR0FBRyxJQUFBLGlDQUFnQixFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVoRCxJQUFJLDZCQUE2QixHQUFHLEtBQUssQ0FBQztJQUMxQyxJQUFBLG9DQUFtQixFQUFDLFNBQVMsRUFBRSxDQUFDLElBQWUsRUFBRSxFQUFFO1FBQ2pELElBQUksSUFBSSxZQUFZLGlCQUFpQixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdkQsNkJBQTZCLEdBQUcsSUFBSSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLDZCQUE2QixFQUFFO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztLQUN0RTtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgZXhlY3V0ZVRyYW5zZm9ybSB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9ncmFwaHFsLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IE5lc3RlZFN0YWNrLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBBc3NldFByb3BzIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L2dyYXBocWwtdHJhbnNmb3JtZXItaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdGFja01ldGFkYXRhQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9iYWNrZW5kLW91dHB1dC1zdG9yYWdlJztcbmltcG9ydCB7IGdyYXBocWxPdXRwdXRLZXkgfSBmcm9tICdAYXdzLWFtcGxpZnkvYmFja2VuZC1vdXRwdXQtc2NoZW1hcyc7XG5pbXBvcnQgdHlwZSB7IEdyYXBocWxPdXRwdXQsIEF3c0FwcHN5bmNBdXRoZW50aWNhdGlvblR5cGUgfSBmcm9tICdAYXdzLWFtcGxpZnkvYmFja2VuZC1vdXRwdXQtc2NoZW1hcyc7XG5pbXBvcnQge1xuICBBcHBzeW5jRnVuY3Rpb24sXG4gIERhdGFTb3VyY2VPcHRpb25zLFxuICBEeW5hbW9EYkRhdGFTb3VyY2UsXG4gIEVsYXN0aWNzZWFyY2hEYXRhU291cmNlLFxuICBFdmVudEJyaWRnZURhdGFTb3VyY2UsXG4gIEV4dGVuZGVkUmVzb2x2ZXJQcm9wcyxcbiAgSHR0cERhdGFTb3VyY2UsXG4gIEh0dHBEYXRhU291cmNlT3B0aW9ucyxcbiAgTGFtYmRhRGF0YVNvdXJjZSxcbiAgTm9uZURhdGFTb3VyY2UsXG4gIE9wZW5TZWFyY2hEYXRhU291cmNlLFxuICBSZHNEYXRhU291cmNlLFxuICBSZXNvbHZlcixcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwcHN5bmMnO1xuaW1wb3J0IHsgSVRhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCB7IElEb21haW4gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY3NlYXJjaCc7XG5pbXBvcnQgeyBJRG9tYWluIGFzIElPcGVuU2VhcmNoRG9tYWluIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLW9wZW5zZWFyY2hzZXJ2aWNlJztcbmltcG9ydCB7IElFdmVudEJ1cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgSUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBJU2VydmVybGVzc0NsdXN0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB7IElTZWNyZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgcGFyc2VVc2VyRGVmaW5lZFNsb3RzLCB2YWxpZGF0ZUZ1bmN0aW9uU2xvdHMsIHNlcGFyYXRlU2xvdHMgfSBmcm9tICcuL2ludGVybmFsL3VzZXItZGVmaW5lZC1zbG90cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFtcGxpZnlHcmFwaHFsQXBpUmVzb3VyY2VzLFxuICBBbXBsaWZ5R3JhcGhxbEFwaVByb3BzLFxuICBGdW5jdGlvblNsb3QsXG4gIElCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5LFxuICBBZGRGdW5jdGlvblByb3BzLFxuICBDb25mbGljdFJlc29sdXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgY29udmVydEF1dGhvcml6YXRpb25Nb2Rlc1RvVHJhbnNmb3JtZXJBdXRoQ29uZmlnLFxuICBjb252ZXJ0VG9SZXNvbHZlckNvbmZpZyxcbiAgZGVmYXVsdFRyYW5zbGF0aW9uQmVoYXZpb3IsXG4gIEFzc2V0TWFuYWdlcixcbiAgZ2V0R2VuZXJhdGVkUmVzb3VyY2VzLFxuICBnZXRHZW5lcmF0ZWRGdW5jdGlvblNsb3RzLFxuICBDb2RlZ2VuQXNzZXRzLFxuICBhZGRBbXBsaWZ5TWV0YWRhdGFUb1N0YWNrRGVzY3JpcHRpb24sXG4gIGdldEFkZGl0aW9uYWxBdXRoZW50aWNhdGlvblR5cGVzLFxufSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IGdldFN0YWNrRm9yU2NvcGUsIHdhbGtBbmRQcm9jZXNzTm9kZXMgfSBmcm9tICcuL2ludGVybmFsL2NvbnN0cnVjdC10cmVlJztcblxuLyoqXG4gKiBMMyBDb25zdHJ1Y3Qgd2hpY2ggaW52b2tlcyB0aGUgQW1wbGlmeSBUcmFuc2Zvcm1lciBQYXR0ZXJuIG92ZXIgYW4gaW5wdXQgR3JhcGhxbCBTY2hlbWEuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGRlZmluZSBhcHBzeW5jIGFwaXMgd2hpY2ggc3VwcG9ydCBmdWxsIENSVUQrTGlzdCBhbmQgU3Vic2NyaXB0aW9ucywgcmVsYXRpb25zaGlwcyxcbiAqIGF1dGgsIHNlYXJjaCBvdmVyIGRhdGEsIHRoZSBhYmlsaXR5IHRvIGluamVjdCBjdXN0b20gYnVzaW5lc3MgbG9naWMgYW5kIHF1ZXJ5L211dGF0aW9uIG9wZXJhdGlvbnMsIGFuZCBjb25uZWN0IHRvIE1MIHNlcnZpY2VzLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWZlciB0byB0aGUgZG9jcyBsaW5rcyBiZWxvdzpcbiAqIERhdGEgTW9kZWxpbmcgLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvZGF0YS1tb2RlbGluZy9cbiAqIEF1dGhvcml6YXRpb24gLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvYXV0aG9yaXphdGlvbi1ydWxlcy9cbiAqIEN1c3RvbSBCdXNpbmVzcyBMb2dpYyAtIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9jdXN0b20tYnVzaW5lc3MtbG9naWMvXG4gKiBTZWFyY2ggLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvc2VhcmNoLWFuZC1yZXN1bHQtYWdncmVnYXRpb25zL1xuICogTUwgU2VydmljZXMgLSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvY2xpL2dyYXBocWwvY29ubmVjdC10by1tYWNoaW5lLWxlYXJuaW5nLXNlcnZpY2VzL1xuICpcbiAqIEZvciBhIGZ1bGwgcmVmZXJlbmNlIG9mIHRoZSBzdXBwb3J0ZWQgY3VzdG9tIGdyYXBocWwgZGlyZWN0aXZlcyAtIGh0dHBzOi8vZG9jcy5hbXBsaWZ5LmF3cy9jbGkvZ3JhcGhxbC9kaXJlY3RpdmVzLXJlZmVyZW5jZS9cbiAqXG4gKiBUaGUgb3V0cHV0IG9mIHRoaXMgY29uc3RydWN0IGlzIGEgbWFwcGluZyBvZiBMMiBvciBMMSByZXNvdXJjZXMgZ2VuZXJhdGVkIGJ5IHRoZSB0cmFuc2Zvcm1lciwgd2hpY2ggZ2VuZXJhbGx5IGZvbGxvdyB0aGUgYWNjZXNzIHBhdHRlcm5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgIGNvbnN0IGFwaSA9IG5ldyBBbXBsaWZ5R3JhcGhRbEFwaSh0aGlzLCAnYXBpJywgeyA8cGFyYW1zPiB9KTtcbiAqICAgLy8gQWNjZXNzIEwyIHJlc291cmNlcyB1bmRlciBgLnJlc291cmNlc2BcbiAqICAgYXBpLnJlc291cmNlcy50YWJsZXNbXCJUb2RvXCJdLnRhYmxlQXJuO1xuICpcbiAqICAgLy8gQWNjZXNzIEwxIHJlc291cmNlcyB1bmRlciBgLnJlc291cmNlcy5jZm5SZXNvdXJjZXNgXG4gKiAgIGFwaS5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkueHJheUVuYWJsZWQgPSB0cnVlO1xuICogICBPYmplY3QudmFsdWVzKGFwaS5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmblRhYmxlcykuZm9yRWFjaCh0YWJsZSA9PiB7XG4gKiAgICAgdGFibGUucG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb24gPSB7IHBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkOiBmYWxzZSB9O1xuICogICB9KTtcbiAqIGBgYFxuICogYHJlc291cmNlcy48UmVzb3VyY2VUeXBlPi48UmVzb3VyY2VOYW1lPmAgLSB5b3UgY2FuIHRoZW4gcGVyZm9ybSBhbnkgQ0RLIGFjdGlvbiBvbiB0aGVzZSByZXN1bHRpbmcgcmVzb3VyZWNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFtcGxpZnlHcmFwaHFsQXBpIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlZCBMMSBhbmQgTDIgQ0RLIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZXM6IEFtcGxpZnlHcmFwaHFsQXBpUmVzb3VyY2VzO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgYXNzZXRzIHJlcXVpcmVkIGZvciBjb2RlZ2VuIHN0ZXBzLiBQZXJzaXN0ZWQgaW4gb3JkZXIgdG8gcmVuZGVyIGFzIHBhcnQgb2YgdGhlIG91dHB1dCBzdHJhdGVneS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29kZWdlbkFzc2V0czogQ29kZWdlbkFzc2V0cztcblxuICAvKipcbiAgICogUmVzb2x2ZXJzIGdlbmVyYXRlZCBieSB0aGUgdHJhbnNmb3JtIHByb2Nlc3MsIHBlcnNpc3RlZCBvbiB0aGUgc2lkZSBpbiBvcmRlciB0byBmYWNpbGl0YXRlIHB1bGxpbmcgYSBtYW5pZmVzdFxuICAgKiBmb3IgdGhlIHB1cnBvc2VzIG9mIGluc3BlY3RpbmcgYW5kIHByb2R1Y2luZyBvdmVycmlkZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2VuZXJhdGVkRnVuY3Rpb25TbG90czogRnVuY3Rpb25TbG90W107XG5cbiAgLyoqXG4gICAqIEdyYXBocWwgVVJMIEZvciB0aGUgZ2VuZXJhdGVkIEFQSS4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdyYXBocWxVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogUmVhbHRpbWUgVVJMIEZvciB0aGUgZ2VuZXJhdGVkIEFQSS4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlYWx0aW1lVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlZCBBcGkgS2V5IGlmIGdlbmVyYXRlZC4gTWF5IGJlIGEgQ0RLIFRva2VuLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZWQgQXBpIElkLiBNYXkgYmUgYSBDREsgVG9rZW4uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uZmxpY3QgcmVzb2x1dGlvbiBzZXR0aW5nXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZsaWN0UmVzb2x1dGlvbjogQ29uZmxpY3RSZXNvbHV0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOZXcgQW1wbGlmeUdyYXBocWxBcGkgY29uc3RydWN0LCB0aGlzIHdpbGwgY3JlYXRlIGFuIGFwcHN5bmMgYXBpIHdpdGggYXV0aG9yaXphdGlvbiwgYSBzY2hlbWEsIGFuZCBhbGwgbmVjZXNzYXJ5IHJlc29sdmVycywgZnVuY3Rpb25zLFxuICAgKiBhbmQgZGF0YXNvdXJjZXMuXG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdG8gY3JlYXRlIHRoaXMgY29uc3RydWN0IHdpdGhpbi5cbiAgICogQHBhcmFtIGlkIHRoZSBpZCB0byB1c2UgZm9yIHRoaXMgYXBpLlxuICAgKiBAcGFyYW0gcHJvcHMgdGhlIHByb3BlcnRpZXMgdXNlZCB0byBjb25maWd1cmUgdGhlIGdlbmVyYXRlZCBhcGkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQW1wbGlmeUdyYXBocWxBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB2YWxpZGF0ZU5vT3RoZXJBbXBsaWZ5R3JhcGhxbEFwaUluU3RhY2sodGhpcyk7XG5cbiAgICBjb25zdCB7XG4gICAgICBkZWZpbml0aW9uLFxuICAgICAgYXV0aG9yaXphdGlvbk1vZGVzLFxuICAgICAgY29uZmxpY3RSZXNvbHV0aW9uLFxuICAgICAgZnVuY3Rpb25TbG90cyxcbiAgICAgIHRyYW5zZm9ybWVyUGx1Z2lucyxcbiAgICAgIHByZWRpY3Rpb25zQnVja2V0LFxuICAgICAgc3RhY2tNYXBwaW5ncyxcbiAgICAgIHRyYW5zbGF0aW9uQmVoYXZpb3IsXG4gICAgICBmdW5jdGlvbk5hbWVNYXAsXG4gICAgICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3ksXG4gICAgfSA9IHByb3BzO1xuXG4gICAgYWRkQW1wbGlmeU1ldGFkYXRhVG9TdGFja0Rlc2NyaXB0aW9uKHNjb3BlKTtcblxuICAgIGNvbnN0IHsgYXV0aENvbmZpZywgYXV0aFN5bnRoUGFyYW1ldGVycyB9ID0gY29udmVydEF1dGhvcml6YXRpb25Nb2Rlc1RvVHJhbnNmb3JtZXJBdXRoQ29uZmlnKGF1dGhvcml6YXRpb25Nb2Rlcyk7XG5cbiAgICB2YWxpZGF0ZUZ1bmN0aW9uU2xvdHMoZnVuY3Rpb25TbG90cyA/PyBbXSk7XG4gICAgY29uc3Qgc2VwYXJhdGVkRnVuY3Rpb25TbG90cyA9IHNlcGFyYXRlU2xvdHMoWy4uLihmdW5jdGlvblNsb3RzID8/IFtdKSwgLi4uZGVmaW5pdGlvbi5mdW5jdGlvblNsb3RzXSk7XG5cbiAgICAvLyBBbGxvdyBhbXBsaWZ5RW52aXJvbm1lbnROYW1lIHRvIGJlIHJldHJpZXZlIGZyb20gY29udGV4dCwgYW5kIHVzZSB2YWx1ZSAnTk9ORScgaWYgbm8gdmFsdWUgY2FuIGJlIGZvdW5kLlxuICAgIC8vIGFtcGxpZnlFbnZpcm9ubWVudE5hbWUgaXMgcmVxdWlyZWQgZm9yIGxvZ2ljYWwgaWQgc3VmZml4aW5nLCBhcyB3ZWxsIGFzIEV4cG9ydHMgZnJvbSB0aGUgbmVzdGVkIHN0YWNrcy5cbiAgICAvLyBBbGxvdyBleHBvcnQgc28gY3VzdG9tZXJzIGNhbiByZXVzZSB0aGUgZW52IGluIHRoZWlyIG93biByZWZlcmVuY2VzIGRvd25zdHJlYW0uXG4gICAgY29uc3QgYW1wbGlmeUVudmlyb25tZW50TmFtZSA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCdhbXBsaWZ5RW52aXJvbm1lbnROYW1lJykgPz8gJ05PTkUnO1xuICAgIGlmIChhbXBsaWZ5RW52aXJvbm1lbnROYW1lLmxlbmd0aCA+IDgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgb3IgY2RrIC0tY29udGV4dCBlbnYgbXVzdCBoYXZlIGEgbGVuZ3RoIDw9IDgsIGZvdW5kICR7YW1wbGlmeUVudmlyb25tZW50TmFtZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc3NldE1hbmFnZXIgPSBuZXcgQXNzZXRNYW5hZ2VyKCk7XG5cbiAgICBleGVjdXRlVHJhbnNmb3JtKHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgbmVzdGVkU3RhY2tQcm92aWRlcjoge1xuICAgICAgICBwcm92aWRlOiAobmVzdGVkU3RhY2tTY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcpID0+IG5ldyBOZXN0ZWRTdGFjayhuZXN0ZWRTdGFja1Njb3BlLCBuYW1lKSxcbiAgICAgIH0sXG4gICAgICBhc3NldFByb3ZpZGVyOiB7XG4gICAgICAgIHByb3ZpZGU6IChhc3NldFNjb3BlOiBDb25zdHJ1Y3QsIGFzc2V0SWQ6IHN0cmluZywgYXNzZXRQcm9wczogQXNzZXRQcm9wcykgPT5cbiAgICAgICAgICBuZXcgQXNzZXQoYXNzZXRTY29wZSwgYXNzZXRJZCwgeyBwYXRoOiBhc3NldE1hbmFnZXIuYWRkQXNzZXQoYXNzZXRQcm9wcy5maWxlTmFtZSwgYXNzZXRQcm9wcy5maWxlQ29udGVudCkgfSksXG4gICAgICB9LFxuICAgICAgc3ludGhQYXJhbWV0ZXJzOiB7XG4gICAgICAgIGFtcGxpZnlFbnZpcm9ubWVudE5hbWU6IGFtcGxpZnlFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIGFwaU5hbWU6IHByb3BzLmFwaU5hbWUgPz8gaWQsXG4gICAgICAgIC4uLmF1dGhTeW50aFBhcmFtZXRlcnMsXG4gICAgICB9LFxuICAgICAgc2NoZW1hOiBkZWZpbml0aW9uLnNjaGVtYSxcbiAgICAgIHVzZXJEZWZpbmVkU2xvdHM6IHBhcnNlVXNlckRlZmluZWRTbG90cyhzZXBhcmF0ZWRGdW5jdGlvblNsb3RzKSxcbiAgICAgIHRyYW5zZm9ybWVyc0ZhY3RvcnlBcmdzOiB7XG4gICAgICAgIGN1c3RvbVRyYW5zZm9ybWVyczogdHJhbnNmb3JtZXJQbHVnaW5zID8/IFtdLFxuICAgICAgICAuLi4ocHJlZGljdGlvbnNCdWNrZXQgPyB7IHN0b3JhZ2VDb25maWc6IHsgYnVja2V0TmFtZTogcHJlZGljdGlvbnNCdWNrZXQuYnVja2V0TmFtZSB9IH0gOiB7fSksXG4gICAgICAgIGZ1bmN0aW9uTmFtZU1hcCxcbiAgICAgIH0sXG4gICAgICBhdXRoQ29uZmlnLFxuICAgICAgc3RhY2tNYXBwaW5nOiBzdGFja01hcHBpbmdzID8/IHt9LFxuICAgICAgcmVzb2x2ZXJDb25maWc6IGNvbmZsaWN0UmVzb2x1dGlvbiA/IGNvbnZlcnRUb1Jlc29sdmVyQ29uZmlnKGNvbmZsaWN0UmVzb2x1dGlvbikgOiB1bmRlZmluZWQsXG4gICAgICB0cmFuc2Zvcm1QYXJhbWV0ZXJzOiB7XG4gICAgICAgIC4uLmRlZmF1bHRUcmFuc2xhdGlvbkJlaGF2aW9yLFxuICAgICAgICAuLi4odHJhbnNsYXRpb25CZWhhdmlvciA/PyB7fSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb2RlZ2VuQXNzZXRzID0gbmV3IENvZGVnZW5Bc3NldHModGhpcywgJ0FtcGxpZnlDb2RlZ2VuQXNzZXRzJywgeyBtb2RlbFNjaGVtYTogZGVmaW5pdGlvbi5zY2hlbWEgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlcyA9IGdldEdlbmVyYXRlZFJlc291cmNlcyh0aGlzKTtcbiAgICB0aGlzLmNvbmZsaWN0UmVzb2x1dGlvbiA9IGNvbmZsaWN0UmVzb2x1dGlvbjtcbiAgICB0aGlzLmdlbmVyYXRlZEZ1bmN0aW9uU2xvdHMgPSBnZXRHZW5lcmF0ZWRGdW5jdGlvblNsb3RzKGFzc2V0TWFuYWdlci5yZXNvbHZlckFzc2V0cyk7XG4gICAgdGhpcy5zdG9yZU91dHB1dChvdXRwdXRTdG9yYWdlU3RyYXRlZ3kpO1xuXG4gICAgdGhpcy5hcGlJZCA9IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLmF0dHJBcGlJZDtcbiAgICB0aGlzLmdyYXBocWxVcmwgPSB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuR3JhcGhxbEFwaS5hdHRyR3JhcGhRbFVybDtcbiAgICB0aGlzLnJlYWx0aW1lVXJsID0gdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkuYXR0clJlYWx0aW1lVXJsO1xuICAgIHRoaXMuYXBpS2V5ID0gdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkFwaUtleT8uYXR0ckFwaUtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZXMgZ3JhcGhxbCBhcGkgb3V0cHV0IHRvIGJlIHVzZWQgZm9yIGNsaWVudCBjb25maWcgZ2VuZXJhdGlvblxuICAgKiBAcGFyYW0gb3V0cHV0U3RvcmFnZVN0cmF0ZWd5IFN0cmF0ZWd5IHRvIHN0b3JlIGNvbnN0cnVjdCBvdXRwdXRzLiBJZiBubyBzdHJhdGVneSBpcyBwcm92aWRlZCBhIGRlZmF1bHQgc3RyYXRlZ3kgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBzdG9yZU91dHB1dChcbiAgICBvdXRwdXRTdG9yYWdlU3RyYXRlZ3k6IElCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5ID0gbmV3IFN0YWNrTWV0YWRhdGFCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5KFN0YWNrLm9mKHRoaXMpKSxcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBvdXRwdXQ6IEdyYXBocWxPdXRwdXQgPSB7XG4gICAgICB2ZXJzaW9uOiAnMScsXG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIGF3c0FwcHN5bmNBcGlJZDogdGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkuYXR0ckFwaUlkLFxuICAgICAgICBhd3NBcHBzeW5jQXBpRW5kcG9pbnQ6IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5HcmFwaHFsQXBpLmF0dHJHcmFwaFFsVXJsLFxuICAgICAgICBhd3NBcHBzeW5jQXV0aGVudGljYXRpb25UeXBlOiB0aGlzLnJlc291cmNlcy5jZm5SZXNvdXJjZXMuY2ZuR3JhcGhxbEFwaS5hdXRoZW50aWNhdGlvblR5cGUgYXMgQXdzQXBwc3luY0F1dGhlbnRpY2F0aW9uVHlwZSxcbiAgICAgICAgYXdzQXBwc3luY1JlZ2lvbjogc3RhY2sucmVnaW9uLFxuICAgICAgICBhbXBsaWZ5QXBpTW9kZWxTY2hlbWFTM1VyaTogdGhpcy5jb2RlZ2VuQXNzZXRzLm1vZGVsU2NoZW1hUzNVcmksXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkFwaUtleSkge1xuICAgICAgb3V0cHV0LnBheWxvYWQuYXdzQXBwc3luY0FwaUtleSA9IHRoaXMucmVzb3VyY2VzLmNmblJlc291cmNlcy5jZm5BcGlLZXkuYXR0ckFwaUtleTtcbiAgICB9XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsQXV0aFR5cGVzID0gZ2V0QWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uVHlwZXModGhpcy5yZXNvdXJjZXMuY2ZuUmVzb3VyY2VzLmNmbkdyYXBocWxBcGkpO1xuICAgIGlmIChhZGRpdGlvbmFsQXV0aFR5cGVzKSB7XG4gICAgICBvdXRwdXQucGF5bG9hZC5hd3NBcHBzeW5jQWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uVHlwZXMgPSBhZGRpdGlvbmFsQXV0aFR5cGVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZsaWN0UmVzb2x1dGlvbj8ucHJvamVjdD8uaGFuZGxlclR5cGUpIHtcbiAgICAgIG91dHB1dC5wYXlsb2FkLmF3c0FwcHN5bmNDb25mbGljdFJlc29sdXRpb25Nb2RlID0gdGhpcy5jb25mbGljdFJlc29sdXRpb24/LnByb2plY3Q/LmhhbmRsZXJUeXBlO1xuICAgIH1cblxuICAgIG91dHB1dFN0b3JhZ2VTdHJhdGVneS5hZGRCYWNrZW5kT3V0cHV0RW50cnkoZ3JhcGhxbE91dHB1dEtleSwgb3V0cHV0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sbG93aW5nIGFyZSBwcm94eSBtZXRob2RzIHRvIHRoZSBMMiBJR3JhcGhxbEFwaSBpbnRlcmZhY2UsIHRvIGZhY2lsaXRhdGUgZWFzaWVyIHVzZSBvZiB0aGUgTDMgd2l0aG91dCBuZWVkaW5nXG4gICAqIHRvIGFjY2VzcyB0aGUgdW5kZXJseWluZyByZXNvdXJjZXMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgRHluYW1vREIgZGF0YSBzb3VyY2UgdG8gdGhpcyBBUEkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSB0YWJsZSBUaGUgRHluYW1vREIgdGFibGUgYmFja2luZyB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGREeW5hbW9EYkRhdGFTb3VyY2UoaWQ6IHN0cmluZywgdGFibGU6IElUYWJsZSwgb3B0aW9ucz86IERhdGFTb3VyY2VPcHRpb25zKTogRHluYW1vRGJEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGREeW5hbW9EYkRhdGFTb3VyY2UoaWQsIHRhYmxlLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZWxhc3RpY3NlYXJjaCBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgYWRkT3BlblNlYXJjaERhdGFTb3VyY2VgXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGRvbWFpbiBUaGUgZWxhc3RpY3NlYXJjaCBkb21haW4gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZEVsYXN0aWNzZWFyY2hEYXRhU291cmNlKGlkOiBzdHJpbmcsIGRvbWFpbjogSURvbWFpbiwgb3B0aW9ucz86IERhdGFTb3VyY2VPcHRpb25zKTogRWxhc3RpY3NlYXJjaERhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmFkZEVsYXN0aWNzZWFyY2hEYXRhU291cmNlKGlkLCBkb21haW4sIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBFdmVudEJyaWRnZSBkYXRhIHNvdXJjZSB0byB0aGlzIGFwaS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGV2ZW50QnVzIFRoZSBFdmVudEJyaWRnZSBFdmVudEJ1cyBvbiB3aGljaCB0byBwdXQgZXZlbnRzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFdmVudEJyaWRnZURhdGFTb3VyY2UoaWQ6IHN0cmluZywgZXZlbnRCdXM6IElFdmVudEJ1cywgb3B0aW9ucz86IERhdGFTb3VyY2VPcHRpb25zKTogRXZlbnRCcmlkZ2VEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGRFdmVudEJyaWRnZURhdGFTb3VyY2UoaWQsIGV2ZW50QnVzLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgaHR0cCBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGVuZHBvaW50IFRoZSBodHRwIGVuZHBvaW50LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBhZGRIdHRwRGF0YVNvdXJjZShpZDogc3RyaW5nLCBlbmRwb2ludDogc3RyaW5nLCBvcHRpb25zPzogSHR0cERhdGFTb3VyY2VPcHRpb25zKTogSHR0cERhdGFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmFkZEh0dHBEYXRhU291cmNlKGlkLCBlbmRwb2ludCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IExhbWJkYSBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGxhbWJkYUZ1bmN0aW9uIFRoZSBMYW1iZGEgZnVuY3Rpb24gdG8gY2FsbCB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZExhbWJkYURhdGFTb3VyY2UoaWQ6IHN0cmluZywgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbiwgb3B0aW9ucz86IERhdGFTb3VyY2VPcHRpb25zKTogTGFtYmRhRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkTGFtYmRhRGF0YVNvdXJjZShpZCwgbGFtYmRhRnVuY3Rpb24sIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBkdW1teSBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIFVzZWZ1bCBmb3IgcGlwZWxpbmUgcmVzb2x2ZXJzIGFuZCBmb3IgYmFja2VuZCBjaGFuZ2VzIHRoYXQgZG9uJ3QgcmVxdWlyZSBhIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gaWQgVGhlIGRhdGEgc291cmNlJ3MgaWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE5vbmVEYXRhU291cmNlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IE5vbmVEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGROb25lRGF0YVNvdXJjZShpZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogZGQgYSBuZXcgT3BlblNlYXJjaCBkYXRhIHNvdXJjZSB0byB0aGlzIEFQSS4gVGhpcyBpcyBhIHByb3h5IG1ldGhvZCB0byB0aGUgTDIgR3JhcGhxbEFwaSBDb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgZGF0YSBzb3VyY2UncyBpZC5cbiAgICogQHBhcmFtIGRvbWFpbiBUaGUgT3BlblNlYXJjaCBkb21haW4gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRhdGEgc291cmNlLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgcHVibGljIGFkZE9wZW5TZWFyY2hEYXRhU291cmNlKGlkOiBzdHJpbmcsIGRvbWFpbjogSU9wZW5TZWFyY2hEb21haW4sIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyk6IE9wZW5TZWFyY2hEYXRhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMuZ3JhcGhxbEFwaS5hZGRPcGVuU2VhcmNoRGF0YVNvdXJjZShpZCwgZG9tYWluLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgUmRzIGRhdGEgc291cmNlIHRvIHRoaXMgQVBJLiBUaGlzIGlzIGEgcHJveHkgbWV0aG9kIHRvIHRoZSBMMiBHcmFwaHFsQXBpIENvbnN0cnVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBkYXRhIHNvdXJjZSdzIGlkLlxuICAgKiBAcGFyYW0gc2VydmVybGVzc0NsdXN0ZXIgVGhlIHNlcnZlcmxlc3MgY2x1c3RlciB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEBwYXJhbSBzZWNyZXRTdG9yZSBUaGUgc2VjcmV0IHN0b3JlIHRoYXQgY29udGFpbnMgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmb3IgdGhlIHNlcnZlcmxlc3MgY2x1c3Rlci5cbiAgICogQHBhcmFtIGRhdGFiYXNlTmFtZSBUaGUgb3B0aW9uYWwgbmFtZSBvZiB0aGUgZGF0YWJhc2UgdG8gdXNlIHdpdGhpbiB0aGUgY2x1c3Rlci5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgZGF0YSBzb3VyY2UuXG4gICAqIEByZXR1cm5zIHRoZSBnZW5lcmF0ZWQgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkUmRzRGF0YVNvdXJjZShcbiAgICBpZDogc3RyaW5nLFxuICAgIHNlcnZlcmxlc3NDbHVzdGVyOiBJU2VydmVybGVzc0NsdXN0ZXIsXG4gICAgc2VjcmV0U3RvcmU6IElTZWNyZXQsXG4gICAgZGF0YWJhc2VOYW1lPzogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBEYXRhU291cmNlT3B0aW9ucyxcbiAgKTogUmRzRGF0YVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGkuYWRkUmRzRGF0YVNvdXJjZShpZCwgc2VydmVybGVzc0NsdXN0ZXIsIHNlY3JldFN0b3JlLCBkYXRhYmFzZU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHJlc29sdmVyIHRvIHRoZSBhcGkuIFRoaXMgaXMgYSBwcm94eSBtZXRob2QgdG8gdGhlIEwyIEdyYXBocWxBcGkgQ29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIHJlc29sdmVyJ3MgaWQuXG4gICAqIEBwYXJhbSBwcm9wcyB0aGUgcmVzb2x2ZXIgcHJvcGVydGllcy5cbiAgICogQHJldHVybnMgdGhlIGdlbmVyYXRlZCByZXNvbHZlci5cbiAgICovXG4gIHB1YmxpYyBhZGRSZXNvbHZlcihpZDogc3RyaW5nLCBwcm9wczogRXh0ZW5kZWRSZXNvbHZlclByb3BzKTogUmVzb2x2ZXIge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcy5ncmFwaHFsQXBpLmNyZWF0ZVJlc29sdmVyKGlkLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGFwcHN5bmMgZnVuY3Rpb24gdG8gdGhlIGFwaS5cbiAgICogQHBhcmFtIGlkIHRoZSBmdW5jdGlvbidzIGlkLlxuICAgKiBAcmV0dXJucyB0aGUgZ2VuZXJhdGVkIGFwcHN5bmMgZnVuY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYWRkRnVuY3Rpb24oaWQ6IHN0cmluZywgcHJvcHM6IEFkZEZ1bmN0aW9uUHJvcHMpOiBBcHBzeW5jRnVuY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQXBwc3luY0Z1bmN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICBhcGk6IHRoaXMucmVzb3VyY2VzLmdyYXBocWxBcGksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEdpdmVuIHRoZSBwcm92aWRlZCBzY29wZSwgd2FsayB0aGUgbm9kZSB0cmVlLCBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFueSBvdGhlciBBbXBsaWZ5R3JhcGhxbEFwaSBjb25zdHJ1Y3RzXG4gKiBhcmUgZm91bmQgaW4gdGhlIHN0YWNrLlxuICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSB0aGlzIGNvbnN0cnVjdCBpcyBjcmVhdGVkIGluLlxuICovXG5jb25zdCB2YWxpZGF0ZU5vT3RoZXJBbXBsaWZ5R3JhcGhxbEFwaUluU3RhY2sgPSAoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQgPT4ge1xuICBjb25zdCByb290U3RhY2sgPSBnZXRTdGFja0ZvclNjb3BlKHNjb3BlLCB0cnVlKTtcblxuICBsZXQgd2FzT3RoZXJBbXBsaWZ5R3JhcGhsQXBpRm91bmQgPSBmYWxzZTtcbiAgd2Fsa0FuZFByb2Nlc3NOb2Rlcyhyb290U3RhY2ssIChub2RlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEFtcGxpZnlHcmFwaHFsQXBpICYmIHNjb3BlICE9PSBub2RlKSB7XG4gICAgICB3YXNPdGhlckFtcGxpZnlHcmFwaGxBcGlGb3VuZCA9IHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAod2FzT3RoZXJBbXBsaWZ5R3JhcGhsQXBpRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ09ubHkgb25lIEFtcGxpZnlHcmFwaHFsQXBpIGlzIGV4cGVjdGVkIGluIGEgc3RhY2snKTtcbiAgfVxufTtcbiJdfQ==
@@ -1,29 +1,18 @@
1
- import { ModelDataSourceBinding, IAmplifyGraphqlDefinition } from './types';
1
+ import { IAmplifyGraphqlDefinition } from './types';
2
2
  /**
3
3
  * Class exposing utilities to produce IAmplifyGraphqlDefinition objects given various inputs.
4
4
  */
5
5
  export declare class AmplifyGraphqlDefinition {
6
6
  /**
7
- * Produce a schema definition from a string input.
7
+ * Produce a schema definition from a string input
8
8
  * @param schema the graphql input as a string
9
- * @param modelDataSourceBinding the ModelDataSourceBinding to use for the schema. This parameter is @experimental
10
- * @returns a fully formed amplify graphql definition, whose models will be resolved by the data source specifed in the
11
- * modelDataSourceBinding
9
+ * @returns a fully formed amplify graphql definition
12
10
  */
13
- static fromString(schema: string, modelDataSourceBinding?: ModelDataSourceBinding): IAmplifyGraphqlDefinition;
11
+ static fromString(schema: string): IAmplifyGraphqlDefinition;
14
12
  /**
15
- * Convert one or more appsync SchemaFile objects into an Amplify Graphql Schema, binding them to a DynamoDB data source.
13
+ * Convert one or more appsync SchemaFile objects into an Amplify Graphql Schema
16
14
  * @param filePaths one or more paths to the graphql files to process
17
- * @returns a fully formed amplify graphql definition, whose models will be resolved by DynamoDB tables created during deployment.
15
+ * @returns a fully formed amplify graphql definition
18
16
  */
19
17
  static fromFiles(...filePaths: string[]): IAmplifyGraphqlDefinition;
20
- /**
21
- * Convert one or more appsync SchemaFile objects into an Amplify Graphql Schema, binding them with the specified ModelDataSourceBinding.
22
- * @param filePaths one or more paths to the graphql files to process
23
- * @param modelDataSourceBinding the ModelDataSourceBinding to use for the schema.
24
- * @returns a fully formed amplify graphql definition, whose models will be resolved by the data source specifed in the
25
- * modelDataSourceBinding
26
- * @experimental
27
- */
28
- static fromFilesAndBinding(filePaths: string[], modelDataSourceBinding: ModelDataSourceBinding): IAmplifyGraphqlDefinition;
29
18
  }
@@ -5,49 +5,34 @@ exports.AmplifyGraphqlDefinition = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const os = require("os");
7
7
  const aws_appsync_1 = require("aws-cdk-lib/aws-appsync");
8
- const DEFAULT_DATA_SOURCE_BINDING = {
9
- bindingType: 'DynamoDB',
10
- };
11
8
  /**
12
9
  * Class exposing utilities to produce IAmplifyGraphqlDefinition objects given various inputs.
13
10
  */
14
11
  class AmplifyGraphqlDefinition {
15
12
  /**
16
- * Produce a schema definition from a string input.
13
+ * Produce a schema definition from a string input
17
14
  * @param schema the graphql input as a string
18
- * @param modelDataSourceBinding the ModelDataSourceBinding to use for the schema. This parameter is @experimental
19
- * @returns a fully formed amplify graphql definition, whose models will be resolved by the data source specifed in the
20
- * modelDataSourceBinding
15
+ * @returns a fully formed amplify graphql definition
21
16
  */
22
- static fromString(schema, modelDataSourceBinding = DEFAULT_DATA_SOURCE_BINDING) {
17
+ static fromString(schema) {
23
18
  return {
24
19
  schema,
25
20
  functionSlots: [],
26
- modelDataSourceBinding,
27
21
  };
28
22
  }
29
23
  /**
30
- * Convert one or more appsync SchemaFile objects into an Amplify Graphql Schema, binding them to a DynamoDB data source.
24
+ * Convert one or more appsync SchemaFile objects into an Amplify Graphql Schema
31
25
  * @param filePaths one or more paths to the graphql files to process
32
- * @returns a fully formed amplify graphql definition, whose models will be resolved by DynamoDB tables created during deployment.
26
+ * @returns a fully formed amplify graphql definition
33
27
  */
34
28
  static fromFiles(...filePaths) {
35
- return AmplifyGraphqlDefinition.fromFilesAndBinding(filePaths, DEFAULT_DATA_SOURCE_BINDING);
36
- }
37
- /**
38
- * Convert one or more appsync SchemaFile objects into an Amplify Graphql Schema, binding them with the specified ModelDataSourceBinding.
39
- * @param filePaths one or more paths to the graphql files to process
40
- * @param modelDataSourceBinding the ModelDataSourceBinding to use for the schema.
41
- * @returns a fully formed amplify graphql definition, whose models will be resolved by the data source specifed in the
42
- * modelDataSourceBinding
43
- * @experimental
44
- */
45
- static fromFilesAndBinding(filePaths, modelDataSourceBinding) {
46
- const schema = filePaths.map((filePath) => new aws_appsync_1.SchemaFile({ filePath }).definition).join(os.EOL);
47
- return AmplifyGraphqlDefinition.fromString(schema, modelDataSourceBinding);
29
+ return {
30
+ schema: filePaths.map((filePath) => new aws_appsync_1.SchemaFile({ filePath }).definition).join(os.EOL),
31
+ functionSlots: [],
32
+ };
48
33
  }
49
34
  }
50
35
  exports.AmplifyGraphqlDefinition = AmplifyGraphqlDefinition;
51
36
  _a = JSII_RTTI_SYMBOL_1;
52
- AmplifyGraphqlDefinition[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyGraphqlDefinition", version: "1.3.0-rds-5.0" };
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1ncmFwaHFsLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYW1wbGlmeS1ncmFwaHFsLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIseURBQXFEO0FBR3JELE1BQU0sMkJBQTJCLEdBQTJCO0lBQzFELFdBQVcsRUFBRSxVQUFVO0NBQ3hCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQWEsd0JBQXdCO0lBQ25DOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQ2YsTUFBYyxFQUNkLHlCQUFpRCwyQkFBMkI7UUFFNUUsT0FBTztZQUNMLE1BQU07WUFDTixhQUFhLEVBQUUsRUFBRTtZQUNqQixzQkFBc0I7U0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQW1CO1FBQ3JDLE9BQU8sd0JBQXdCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBbUIsRUFBRSxzQkFBOEM7UUFDNUYsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSx3QkFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pHLE9BQU8sd0JBQXdCLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQzdFLENBQUM7O0FBdkNILDREQXdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCB7IFNjaGVtYUZpbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBwc3luYyc7XG5pbXBvcnQgeyBNb2RlbERhdGFTb3VyY2VCaW5kaW5nLCBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IERFRkFVTFRfREFUQV9TT1VSQ0VfQklORElORzogTW9kZWxEYXRhU291cmNlQmluZGluZyA9IHtcbiAgYmluZGluZ1R5cGU6ICdEeW5hbW9EQicsXG59O1xuXG4vKipcbiAqIENsYXNzIGV4cG9zaW5nIHV0aWxpdGllcyB0byBwcm9kdWNlIElBbXBsaWZ5R3JhcGhxbERlZmluaXRpb24gb2JqZWN0cyBnaXZlbiB2YXJpb3VzIGlucHV0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBQcm9kdWNlIGEgc2NoZW1hIGRlZmluaXRpb24gZnJvbSBhIHN0cmluZyBpbnB1dC5cbiAgICogQHBhcmFtIHNjaGVtYSB0aGUgZ3JhcGhxbCBpbnB1dCBhcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gbW9kZWxEYXRhU291cmNlQmluZGluZyB0aGUgTW9kZWxEYXRhU291cmNlQmluZGluZyB0byB1c2UgZm9yIHRoZSBzY2hlbWEuIFRoaXMgcGFyYW1ldGVyIGlzIEBleHBlcmltZW50YWxcbiAgICogQHJldHVybnMgYSBmdWxseSBmb3JtZWQgYW1wbGlmeSBncmFwaHFsIGRlZmluaXRpb24sIHdob3NlIG1vZGVscyB3aWxsIGJlIHJlc29sdmVkIGJ5IHRoZSBkYXRhIHNvdXJjZSBzcGVjaWZlZCBpbiB0aGVcbiAgICogICBtb2RlbERhdGFTb3VyY2VCaW5kaW5nXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyhcbiAgICBzY2hlbWE6IHN0cmluZyxcbiAgICBtb2RlbERhdGFTb3VyY2VCaW5kaW5nOiBNb2RlbERhdGFTb3VyY2VCaW5kaW5nID0gREVGQVVMVF9EQVRBX1NPVVJDRV9CSU5ESU5HLFxuICApOiBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hLFxuICAgICAgZnVuY3Rpb25TbG90czogW10sXG4gICAgICBtb2RlbERhdGFTb3VyY2VCaW5kaW5nLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBvbmUgb3IgbW9yZSBhcHBzeW5jIFNjaGVtYUZpbGUgb2JqZWN0cyBpbnRvIGFuIEFtcGxpZnkgR3JhcGhxbCBTY2hlbWEsIGJpbmRpbmcgdGhlbSB0byBhIER5bmFtb0RCIGRhdGEgc291cmNlLlxuICAgKiBAcGFyYW0gZmlsZVBhdGhzIG9uZSBvciBtb3JlIHBhdGhzIHRvIHRoZSBncmFwaHFsIGZpbGVzIHRvIHByb2Nlc3NcbiAgICogQHJldHVybnMgYSBmdWxseSBmb3JtZWQgYW1wbGlmeSBncmFwaHFsIGRlZmluaXRpb24sIHdob3NlIG1vZGVscyB3aWxsIGJlIHJlc29sdmVkIGJ5IER5bmFtb0RCIHRhYmxlcyBjcmVhdGVkIGR1cmluZyBkZXBsb3ltZW50LlxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlcyguLi5maWxlUGF0aHM6IHN0cmluZ1tdKTogSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIEFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbi5mcm9tRmlsZXNBbmRCaW5kaW5nKGZpbGVQYXRocywgREVGQVVMVF9EQVRBX1NPVVJDRV9CSU5ESU5HKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IG9uZSBvciBtb3JlIGFwcHN5bmMgU2NoZW1hRmlsZSBvYmplY3RzIGludG8gYW4gQW1wbGlmeSBHcmFwaHFsIFNjaGVtYSwgYmluZGluZyB0aGVtIHdpdGggdGhlIHNwZWNpZmllZCBNb2RlbERhdGFTb3VyY2VCaW5kaW5nLlxuICAgKiBAcGFyYW0gZmlsZVBhdGhzIG9uZSBvciBtb3JlIHBhdGhzIHRvIHRoZSBncmFwaHFsIGZpbGVzIHRvIHByb2Nlc3NcbiAgICogQHBhcmFtIG1vZGVsRGF0YVNvdXJjZUJpbmRpbmcgdGhlIE1vZGVsRGF0YVNvdXJjZUJpbmRpbmcgdG8gdXNlIGZvciB0aGUgc2NoZW1hLlxuICAgKiBAcmV0dXJucyBhIGZ1bGx5IGZvcm1lZCBhbXBsaWZ5IGdyYXBocWwgZGVmaW5pdGlvbiwgd2hvc2UgbW9kZWxzIHdpbGwgYmUgcmVzb2x2ZWQgYnkgdGhlIGRhdGEgc291cmNlIHNwZWNpZmVkIGluIHRoZVxuICAgKiAgIG1vZGVsRGF0YVNvdXJjZUJpbmRpbmdcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlc0FuZEJpbmRpbmcoZmlsZVBhdGhzOiBzdHJpbmdbXSwgbW9kZWxEYXRhU291cmNlQmluZGluZzogTW9kZWxEYXRhU291cmNlQmluZGluZyk6IElBbXBsaWZ5R3JhcGhxbERlZmluaXRpb24ge1xuICAgIGNvbnN0IHNjaGVtYSA9IGZpbGVQYXRocy5tYXAoKGZpbGVQYXRoKSA9PiBuZXcgU2NoZW1hRmlsZSh7IGZpbGVQYXRoIH0pLmRlZmluaXRpb24pLmpvaW4ob3MuRU9MKTtcbiAgICByZXR1cm4gQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uLmZyb21TdHJpbmcoc2NoZW1hLCBtb2RlbERhdGFTb3VyY2VCaW5kaW5nKTtcbiAgfVxufVxuIl19
37
+ AmplifyGraphqlDefinition[_a] = { fqn: "@aws-amplify/graphql-api-construct.AmplifyGraphqlDefinition", version: "1.3.0" };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS1ncmFwaHFsLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYW1wbGlmeS1ncmFwaHFsLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIseURBQXFEO0FBR3JEOztHQUVHO0FBQ0gsTUFBYSx3QkFBd0I7SUFDbkM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBYztRQUM5QixPQUFPO1lBQ0wsTUFBTTtZQUNOLGFBQWEsRUFBRSxFQUFFO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFtQjtRQUNyQyxPQUFPO1lBQ0wsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksd0JBQVUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDekYsYUFBYSxFQUFFLEVBQUU7U0FDbEIsQ0FBQztJQUNKLENBQUM7O0FBdkJILDREQXdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCB7IFNjaGVtYUZpbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBwc3luYyc7XG5pbXBvcnQgeyBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ2xhc3MgZXhwb3NpbmcgdXRpbGl0aWVzIHRvIHByb2R1Y2UgSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiBvYmplY3RzIGdpdmVuIHZhcmlvdXMgaW5wdXRzLlxuICovXG5leHBvcnQgY2xhc3MgQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFByb2R1Y2UgYSBzY2hlbWEgZGVmaW5pdGlvbiBmcm9tIGEgc3RyaW5nIGlucHV0XG4gICAqIEBwYXJhbSBzY2hlbWEgdGhlIGdyYXBocWwgaW5wdXQgYXMgYSBzdHJpbmdcbiAgICogQHJldHVybnMgYSBmdWxseSBmb3JtZWQgYW1wbGlmeSBncmFwaHFsIGRlZmluaXRpb25cbiAgICovXG4gIHN0YXRpYyBmcm9tU3RyaW5nKHNjaGVtYTogc3RyaW5nKTogSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtYSxcbiAgICAgIGZ1bmN0aW9uU2xvdHM6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBvbmUgb3IgbW9yZSBhcHBzeW5jIFNjaGVtYUZpbGUgb2JqZWN0cyBpbnRvIGFuIEFtcGxpZnkgR3JhcGhxbCBTY2hlbWFcbiAgICogQHBhcmFtIGZpbGVQYXRocyBvbmUgb3IgbW9yZSBwYXRocyB0byB0aGUgZ3JhcGhxbCBmaWxlcyB0byBwcm9jZXNzXG4gICAqIEByZXR1cm5zIGEgZnVsbHkgZm9ybWVkIGFtcGxpZnkgZ3JhcGhxbCBkZWZpbml0aW9uXG4gICAqL1xuICBzdGF0aWMgZnJvbUZpbGVzKC4uLmZpbGVQYXRoczogc3RyaW5nW10pOiBJQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hOiBmaWxlUGF0aHMubWFwKChmaWxlUGF0aCkgPT4gbmV3IFNjaGVtYUZpbGUoeyBmaWxlUGF0aCB9KS5kZWZpbml0aW9uKS5qb2luKG9zLkVPTCksXG4gICAgICBmdW5jdGlvblNsb3RzOiBbXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export type { IAMAuthorizationConfig, UserPoolAuthorizationConfig, OIDCAuthorizationConfig, ApiKeyAuthorizationConfig, LambdaAuthorizationConfig, AuthorizationModes, PartialTranslationBehavior, AmplifyGraphqlApiProps, AmplifyGraphqlApiResources, AmplifyGraphqlApiCfnResources, FunctionSlotBase, MutationFunctionSlot, QueryFunctionSlot, SubscriptionFunctionSlot, FunctionSlot, FunctionSlotOverride, ConflictResolution, ConflictDetectionType, OptimisticConflictResolutionStrategy, CustomConflictResolutionStrategy, AutomergeConflictResolutionStrategy, ConflictResolutionStrategyBase, ConflictResolutionStrategy, TranslationBehavior, IAmplifyGraphqlDefinition, IBackendOutputStorageStrategy, IBackendOutputEntry, AddFunctionProps, ModelDataSourceBinding, DynamoModelDataSourceBinding, SqlModelDataSourceBinding, SqlModelDataSourceBindingVpcConfig, SubnetAvailabilityZone, SqlModelDataSourceBindingDbConnectionConfig, } from './types';
1
+ export type { IAMAuthorizationConfig, UserPoolAuthorizationConfig, OIDCAuthorizationConfig, ApiKeyAuthorizationConfig, LambdaAuthorizationConfig, AuthorizationModes, PartialTranslationBehavior, AmplifyGraphqlApiProps, AmplifyGraphqlApiResources, AmplifyGraphqlApiCfnResources, FunctionSlotBase, MutationFunctionSlot, QueryFunctionSlot, SubscriptionFunctionSlot, FunctionSlot, FunctionSlotOverride, ConflictResolution, ConflictDetectionType, OptimisticConflictResolutionStrategy, CustomConflictResolutionStrategy, AutomergeConflictResolutionStrategy, ConflictResolutionStrategyBase, ConflictResolutionStrategy, TranslationBehavior, IAmplifyGraphqlDefinition, IBackendOutputStorageStrategy, IBackendOutputEntry, AddFunctionProps, } from './types';
2
2
  export { AmplifyGraphqlApi } from './amplify-graphql-api';
3
3
  export { AmplifyGraphqlDefinition } from './amplify-graphql-definition';
package/lib/index.js CHANGED
@@ -5,4 +5,4 @@ var amplify_graphql_api_1 = require("./amplify-graphql-api");
5
5
  Object.defineProperty(exports, "AmplifyGraphqlApi", { enumerable: true, get: function () { return amplify_graphql_api_1.AmplifyGraphqlApi; } });
6
6
  var amplify_graphql_definition_1 = require("./amplify-graphql-definition");
7
7
  Object.defineProperty(exports, "AmplifyGraphqlDefinition", { enumerable: true, get: function () { return amplify_graphql_definition_1.AmplifyGraphqlDefinition; } });
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb0NBLDZEQUEwRDtBQUFqRCx3SEFBQSxpQkFBaUIsT0FBQTtBQUMxQiwyRUFBd0U7QUFBL0Qsc0lBQUEsd0JBQXdCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7XG4gIElBTUF1dGhvcml6YXRpb25Db25maWcsXG4gIFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZyxcbiAgT0lEQ0F1dGhvcml6YXRpb25Db25maWcsXG4gIEFwaUtleUF1dGhvcml6YXRpb25Db25maWcsXG4gIExhbWJkYUF1dGhvcml6YXRpb25Db25maWcsXG4gIEF1dGhvcml6YXRpb25Nb2RlcyxcbiAgUGFydGlhbFRyYW5zbGF0aW9uQmVoYXZpb3IsXG4gIEFtcGxpZnlHcmFwaHFsQXBpUHJvcHMsXG4gIEFtcGxpZnlHcmFwaHFsQXBpUmVzb3VyY2VzLFxuICBBbXBsaWZ5R3JhcGhxbEFwaUNmblJlc291cmNlcyxcbiAgRnVuY3Rpb25TbG90QmFzZSxcbiAgTXV0YXRpb25GdW5jdGlvblNsb3QsXG4gIFF1ZXJ5RnVuY3Rpb25TbG90LFxuICBTdWJzY3JpcHRpb25GdW5jdGlvblNsb3QsXG4gIEZ1bmN0aW9uU2xvdCxcbiAgRnVuY3Rpb25TbG90T3ZlcnJpZGUsXG4gIENvbmZsaWN0UmVzb2x1dGlvbixcbiAgQ29uZmxpY3REZXRlY3Rpb25UeXBlLFxuICBPcHRpbWlzdGljQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3ksXG4gIEN1c3RvbUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5LFxuICBBdXRvbWVyZ2VDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSxcbiAgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlLFxuICBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSxcbiAgVHJhbnNsYXRpb25CZWhhdmlvcixcbiAgSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbixcbiAgSUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3ksXG4gIElCYWNrZW5kT3V0cHV0RW50cnksXG4gIEFkZEZ1bmN0aW9uUHJvcHMsXG4gIE1vZGVsRGF0YVNvdXJjZUJpbmRpbmcsXG4gIER5bmFtb01vZGVsRGF0YVNvdXJjZUJpbmRpbmcsXG4gIFNxbE1vZGVsRGF0YVNvdXJjZUJpbmRpbmcsXG4gIFNxbE1vZGVsRGF0YVNvdXJjZUJpbmRpbmdWcGNDb25maWcsXG4gIFN1Ym5ldEF2YWlsYWJpbGl0eVpvbmUsXG4gIFNxbE1vZGVsRGF0YVNvdXJjZUJpbmRpbmdEYkNvbm5lY3Rpb25Db25maWcsXG59IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHsgQW1wbGlmeUdyYXBocWxBcGkgfSBmcm9tICcuL2FtcGxpZnktZ3JhcGhxbC1hcGknO1xuZXhwb3J0IHsgQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIH0gZnJvbSAnLi9hbXBsaWZ5LWdyYXBocWwtZGVmaW5pdGlvbic7XG4iXX0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOEJBLDZEQUEwRDtBQUFqRCx3SEFBQSxpQkFBaUIsT0FBQTtBQUMxQiwyRUFBd0U7QUFBL0Qsc0lBQUEsd0JBQXdCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7XG4gIElBTUF1dGhvcml6YXRpb25Db25maWcsXG4gIFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZyxcbiAgT0lEQ0F1dGhvcml6YXRpb25Db25maWcsXG4gIEFwaUtleUF1dGhvcml6YXRpb25Db25maWcsXG4gIExhbWJkYUF1dGhvcml6YXRpb25Db25maWcsXG4gIEF1dGhvcml6YXRpb25Nb2RlcyxcbiAgUGFydGlhbFRyYW5zbGF0aW9uQmVoYXZpb3IsXG4gIEFtcGxpZnlHcmFwaHFsQXBpUHJvcHMsXG4gIEFtcGxpZnlHcmFwaHFsQXBpUmVzb3VyY2VzLFxuICBBbXBsaWZ5R3JhcGhxbEFwaUNmblJlc291cmNlcyxcbiAgRnVuY3Rpb25TbG90QmFzZSxcbiAgTXV0YXRpb25GdW5jdGlvblNsb3QsXG4gIFF1ZXJ5RnVuY3Rpb25TbG90LFxuICBTdWJzY3JpcHRpb25GdW5jdGlvblNsb3QsXG4gIEZ1bmN0aW9uU2xvdCxcbiAgRnVuY3Rpb25TbG90T3ZlcnJpZGUsXG4gIENvbmZsaWN0UmVzb2x1dGlvbixcbiAgQ29uZmxpY3REZXRlY3Rpb25UeXBlLFxuICBPcHRpbWlzdGljQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3ksXG4gIEN1c3RvbUNvbmZsaWN0UmVzb2x1dGlvblN0cmF0ZWd5LFxuICBBdXRvbWVyZ2VDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSxcbiAgQ29uZmxpY3RSZXNvbHV0aW9uU3RyYXRlZ3lCYXNlLFxuICBDb25mbGljdFJlc29sdXRpb25TdHJhdGVneSxcbiAgVHJhbnNsYXRpb25CZWhhdmlvcixcbiAgSUFtcGxpZnlHcmFwaHFsRGVmaW5pdGlvbixcbiAgSUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3ksXG4gIElCYWNrZW5kT3V0cHV0RW50cnksXG4gIEFkZEZ1bmN0aW9uUHJvcHMsXG59IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHsgQW1wbGlmeUdyYXBocWxBcGkgfSBmcm9tICcuL2FtcGxpZnktZ3JhcGhxbC1hcGknO1xuZXhwb3J0IHsgQW1wbGlmeUdyYXBocWxEZWZpbml0aW9uIH0gZnJvbSAnLi9hbXBsaWZ5LWdyYXBocWwtZGVmaW5pdGlvbic7XG4iXX0=
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertAuthorizationModesToTransformerAuthConfig = exports.getAdditionalAuthenticationTypes = void 0;
4
4
  const lodash_1 = require("lodash");
5
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
5
6
  /**
6
7
  * Converts a single auth mode config into the amplify-internal representation.
7
8
  * @param authMode the auth mode to convert into the Appsync CDK representation.
@@ -41,6 +42,7 @@ const convertAuthModeToAuthProvider = (authMode) => {
41
42
  return {
42
43
  authenticationType,
43
44
  lambdaAuthorizerConfig: {
45
+ lambdaArn: authMode.function.functionArn,
44
46
  lambdaFunction: authMode.function.functionName,
45
47
  ttlSeconds: authMode.ttl.toSeconds(),
46
48
  },
@@ -71,6 +73,11 @@ const convertAuthConfigToAppSyncAuth = (authModes) => {
71
73
  if (authProviders.length > 1 && !authModes.defaultAuthorizationMode) {
72
74
  throw new Error('A defaultAuthorizationMode is required if multiple authorization modes are configured.');
73
75
  }
76
+ // Enable appsync to invoke a provided lambda authorizer function
77
+ authModes.lambdaConfig?.function.addPermission('appsync-auth-invoke', {
78
+ principal: new aws_iam_1.ServicePrincipal('appsync.amazonaws.com'),
79
+ action: 'lambda:InvokeFunction',
80
+ });
74
81
  // In the case of a single mode, defaultAuthorizationMode is not required, just use the provided value.
75
82
  if (authProviders.length === 1) {
76
83
  return {
@@ -106,13 +113,24 @@ const convertAuthorizationModesToTransformerAuthConfig = (authModes) => ({
106
113
  authSynthParameters: getSynthParameters(authModes),
107
114
  });
108
115
  exports.convertAuthorizationModesToTransformerAuthConfig = convertAuthorizationModesToTransformerAuthConfig;
116
+ /**
117
+ * Merge iamConfig allowListedRoles with deprecated adminRoles property, converting to strings.
118
+ * @param authModes the auth modes provided to the construct.
119
+ * @returns the list of admin roles as strings to pass into the transformer
120
+ */
121
+ const getAllowListedRoles = (authModes) => [...(authModes?.iamConfig?.allowListedRoles ?? []), ...(authModes.adminRoles ?? [])].map((roleOrRoleName) => {
122
+ if (typeof roleOrRoleName === 'string' || roleOrRoleName instanceof String) {
123
+ return roleOrRoleName;
124
+ }
125
+ return roleOrRoleName.roleName;
126
+ });
109
127
  /**
110
128
  * Transform the authorization config into the transformer synth parameters pertaining to auth.
111
129
  * @param authModes the auth modes provided to the construct.
112
130
  * @returns a record of params to be consumed by the transformer.
113
131
  */
114
132
  const getSynthParameters = (authModes) => ({
115
- adminRoles: authModes.adminRoles?.map((role) => role.roleName) ?? [],
133
+ adminRoles: getAllowListedRoles(authModes),
116
134
  identityPoolId: authModes.iamConfig?.identityPoolId,
117
135
  ...(authModes.userPoolConfig ? { userPoolId: authModes.userPoolConfig.userPool.userPoolId } : {}),
118
136
  ...(authModes?.iamConfig
@@ -122,4 +140,4 @@ const getSynthParameters = (authModes) => ({
122
140
  }
123
141
  : {}),
124
142
  });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi1tb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcm5hbC9hdXRob3JpemF0aW9uLW1vZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG1DQUFpQztBQWlCakM7OztHQUdHO0FBQ0gsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLFFBQWlDLEVBQWlDLEVBQUU7SUFDekcsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3pDLFFBQVEsUUFBUSxDQUFDLElBQUksRUFBRTtRQUNyQixLQUFLLFNBQVM7WUFDWixPQUFPO2dCQUNMLGtCQUFrQjtnQkFDbEIsWUFBWSxFQUFFO29CQUNaLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztvQkFDakMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7aUJBQ2hEO2FBQ0YsQ0FBQztRQUNKLEtBQUssU0FBUztZQUNaLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBQ2hDLEtBQUssMkJBQTJCO1lBQzlCLE9BQU87Z0JBQ0wsa0JBQWtCO2dCQUNsQixjQUFjLEVBQUU7b0JBQ2QsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVTtpQkFDekM7YUFDRixDQUFDO1FBQ0osS0FBSyxnQkFBZ0I7WUFDbkIsT0FBTztnQkFDTCxrQkFBa0I7Z0JBQ2xCLG1CQUFtQixFQUFFO29CQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDLGdCQUFnQjtvQkFDL0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxhQUFhO29CQUNqQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7b0JBQzNCLE1BQU0sRUFBRSxRQUFRLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFO29CQUNqRCxPQUFPLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRTtpQkFDbEQ7YUFDRixDQUFDO1FBQ0osS0FBSyxZQUFZO1lBQ2YsT0FB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QUFFLEVBQUUsQ0FDM0YsZ0NBQWdDLENBQUMsa0JBQWtCLENBQ3REO1NBQ0EsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBWFcsUUFBQSxnQ0FBZ0Msb0NBVzNDO0FBRUY7Ozs7R0FJRztBQUNJLE1BQU0sZ0RBQWdELEdBQUcsQ0FBQyxTQUE2QixFQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzlHLFVBQVUsRUFBRSw4QkFBOEIsQ0FBQyxTQUFTLENBQUM7SUFDckQsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0NBQ25ELENBQUMsQ0FBQztBQUhVLFFBQUEsZ0RBQWdELG9EQUcxRDtBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBNkIsRUFBdUIsRUFBRSxDQUFDLENBQUM7SUFDbEYsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtJQUNwRSxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsRUFBRSxjQUFjO0lBQ25ELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUztRQUN0QixDQUFDLENBQUM7WUFDRSx5QkFBeUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLFFBQVE7WUFDN0UsMkJBQTJCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRO1NBQ2xGO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNSLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcFN5bmNBdXRoQ29uZmlndXJhdGlvbiwgQXBwU3luY0F1dGhDb25maWd1cmF0aW9uRW50cnksIFN5bnRoUGFyYW1ldGVycyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9ncmFwaHFsLXRyYW5zZm9ybWVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ2ZuR3JhcGhRTEFwaSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcHBzeW5jJztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvbk1vZGVzLFxuICBBcGlLZXlBdXRob3JpemF0aW9uQ29uZmlnLFxuICBJQU1BdXRob3JpemF0aW9uQ29uZmlnLFxuICBMYW1iZGFBdXRob3JpemF0aW9uQ29uZmlnLFxuICBPSURDQXV0aG9yaXphdGlvbkNvbmZpZyxcbiAgVXNlclBvb2xBdXRob3JpemF0aW9uQ29uZmlnLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbnR5cGUgQXV0aG9yaXphdGlvbkNvbmZpZ01vZGUgPVxuICB8IChJQU1BdXRob3JpemF0aW9uQ29uZmlnICYgeyB0eXBlOiAnQVdTX0lBTScgfSlcbiAgfCAoVXNlclBvb2xBdXRob3JpemF0aW9uQ29uZmlnICYgeyB0eXBlOiAnQU1BWk9OX0NPR05JVE9fVVNFUl9QT09MUycgfSlcbiAgfCAoT0lEQ0F1dGhvcml6YXRpb25Db25maWcgJiB7IHR5cGU6ICdPUEVOSURfQ09OTkVDVCcgfSlcbiAgfCAoQXBpS2V5QXV0aG9yaXphdGlvbkNvbmZpZyAmIHsgdHlwZTogJ0FQSV9LRVknIH0pXG4gIHwgKExhbWJkYUF1dGhvcml6YXRpb25Db25maWcgJiB7IHR5cGU6ICdBV1NfTEFNQkRBJyB9KTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHNpbmdsZSBhdXRoIG1vZGUgY29uZmlnIGludG8gdGhlIGFtcGxpZnktaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uXG4gKiBAcGFyYW0gYXV0aE1vZGUgdGhlIGF1dGggbW9kZSB0byBjb252ZXJ0IGludG8gdGhlIEFwcHN5bmMgQ0RLIHJlcHJlc2VudGF0aW9uLlxuICovXG5jb25zdCBjb252ZXJ0QXV0aE1vZGVUb0F1dGhQcm92aWRlciA9IChhdXRoTW9kZTogQXV0aG9yaXphdGlvbkNvbmZpZ01vZGUpOiBBcHBTeW5jQXV0aENvbmZpZ3VyYXRpb25FbnRyeSA9PiB7XG4gIGNvbnN0IGF1dGhlbnRpY2F0aW9uVHlwZSA9IGF1dGhNb2RlLnR5cGU7XG4gIHN3aXRjaCAoYXV0aE1vZGUudHlwZSkge1xuICAgIGNhc2UgJ0FQSV9LRVknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXV0aGVudGljYXRpb25UeXBlLFxuICAgICAgICBhcGlLZXlDb25maWc6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYXV0aE1vZGUuZGVzY3JpcHRpb24sXG4gICAgICAgICAgYXBpS2V5RXhwaXJhdGlvbkRheXM6IGF1dGhNb2RlLmV4cGlyZXMudG9EYXlzKCksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIGNhc2UgJ0FXU19JQU0nOlxuICAgICAgcmV0dXJuIHsgYXV0aGVudGljYXRpb25UeXBlIH07XG4gICAgY2FzZSAnQU1BWk9OX0NPR05JVE9fVVNFUl9QT09MUyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhdXRoZW50aWNhdGlvblR5cGUsXG4gICAgICAgIHVzZXJQb29sQ29uZmlnOiB7XG4gICAgICAgICAgdXNlclBvb2xJZDogYXV0aE1vZGUudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSAnT1BFTklEX0NPTk5FQ1QnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXV0aGVudGljYXRpb25UeXBlLFxuICAgICAgICBvcGVuSURDb25uZWN0Q29uZmlnOiB7XG4gICAgICAgICAgbmFtZTogYXV0aE1vZGUub2lkY1Byb3ZpZGVyTmFtZSxcbiAgICAgICAgICBpc3N1ZXJVcmw6IGF1dGhNb2RlLm9pZGNJc3N1ZXJVcmwsXG4gICAgICAgICAgY2xpZW50SWQ6IGF1dGhNb2RlLmNsaWVudElkLFxuICAgICAgICAgIGlhdFRUTDogYXV0aE1vZGUudG9rZW5FeHBpcnlGcm9tSXNzdWUudG9TZWNvbmRzKCksXG4gICAgICAgICAgYXV0aFRUTDogYXV0aE1vZGUudG9rZW5FeHBpcnlGcm9tQXV0aC50b1NlY29uZHMoKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSAnQVdTX0xBTUJEQSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhdXRoZW50aWNhdGlvblR5cGUsXG4gICAgICAgIGxhbWJkYUF1dGhvcml6ZXJDb25maWc6IHtcbiAgICAgICAgICBsYW1iZGFGdW5jdGlvbjogYXV0aE1vZGUuZnVuY3Rpb24uZnVuY3Rpb25OYW1lLFxuICAgICAgICAgIHR0bFNlY29uZHM6IGF1dGhNb2RlLnR0bC50b1NlY29uZHMoKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBBdXRoTW9kZSB0eXBlICR7YXV0aGVudGljYXRpb25UeXBlfSBlbmNvdW50ZXJlZC5gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBHaXZlbiBhbiBhcHBzeW5jIGF1dGggY29uZmlndXJhdGlvbiwgY29udmVydCBpbnRvIGFwcHN5bmMgYXV0aCBwcm92aWRlciBzZXR1cC5cbiAqIEBwYXJhbSBhdXRoTW9kZXMgdGhlIGNvbmZpZyB0byB0cmFuc2Zvcm1cbiAqIEByZXR1cm5zIHRoZSBhcHBzeW5jIGNvbmZpZyBvYmplY3QuXG4gKi9cbmNvbnN0IGNvbnZlcnRBdXRoQ29uZmlnVG9BcHBTeW5jQXV0aCA9IChhdXRoTW9kZXM6IEF1dGhvcml6YXRpb25Nb2Rlcyk6IEFwcFN5bmNBdXRoQ29uZmlndXJhdGlvbiA9PiB7XG4gIC8vIENvbnZlcnQgYXV0aCBtb2RlcyBpbnRvIGFuIGFycmF5IG9mIGFwcHN5bmMgY29uZmlncywgYW5kIGluY2x1ZGUgdGhlIHR5cGUgc28gd2UgY2FuIHVzZSB0aGF0IGZvciBzd2l0Y2hpbmcgYW5kIHBhcnRpdGlvbmluZyBsYXRlci5cbiAgY29uc3QgYXV0aENvbmZpZyA9IFtcbiAgICBhdXRoTW9kZXMuYXBpS2V5Q29uZmlnID8geyB0eXBlOiAnQVBJX0tFWScsIC4uLmF1dGhNb2Rlcy5hcGlLZXlDb25maWcgfSA6IG51bGwsXG4gICAgYXV0aE1vZGVzLmxhbWJkYUNvbmZpZyA/IHsgdHlwZTogJ0FXU19MQU1CREEnLCAuLi5hdXRoTW9kZXMubGFtYmRhQ29uZmlnIH0gOiBudWxsLFxuICAgIGF1dGhNb2Rlcy5vaWRjQ29uZmlnID8geyB0eXBlOiAnT1BFTklEX0NPTk5FQ1QnLCAuLi5hdXRoTW9kZXMub2lkY0NvbmZpZyB9IDogbnVsbCxcbiAgICBhdXRoTW9kZXMudXNlclBvb2xDb25maWcgPyB7IHR5cGU6ICdBTUFaT05fQ09HTklUT19VU0VSX1BPT0xTJywgLi4uYXV0aE1vZGVzLnVzZXJQb29sQ29uZmlnIH0gOiBudWxsLFxuICAgIGF1dGhNb2Rlcy5pYW1Db25maWcgPyB7IHR5cGU6ICdBV1NfSUFNJywgLi4uYXV0aE1vZGVzLmlhbUNvbmZpZyB9IDogbnVsbCxcbiAgXS5maWx0ZXIoKG1vZGUpID0+IG1vZGUpIGFzIEF1dGhvcml6YXRpb25Db25maWdNb2RlW107XG4gIGNvbnN0IGF1dGhQcm92aWRlcnMgPSBhdXRoQ29uZmlnLm1hcChjb252ZXJ0QXV0aE1vZGVUb0F1dGhQcm92aWRlcik7XG5cbiAgLy8gVmFsaWRhdGUgaW5wdXRzIG1ha2Ugc2Vuc2UsIG5lZWRzIGF0IGxlYXN0IG9uZSBtb2RlLCBhbmQgYSBkZWZhdWx0IG1vZGUgaXMgcmVxdWlyZWQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG1vZGVzLlxuICBpZiAoYXV0aFByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBhdXRoIGNvbmZpZyBpcyByZXF1aXJlZCwgYnV0IG5vbmUgd2VyZSBmb3VuZC4nKTtcbiAgfVxuICBpZiAoYXV0aFByb3ZpZGVycy5sZW5ndGggPiAxICYmICFhdXRoTW9kZXMuZGVmYXVsdEF1dGhvcml6YXRpb25Nb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBIGRlZmF1bHRBdXRob3JpemF0aW9uTW9kZSBpcyByZXF1aXJlZCBpZiBtdWx0aXBsZSBhdXRob3JpemF0aW9uIG1vZGVzIGFyZSBjb25maWd1cmVkLicpO1xuICB9XG5cbiAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBzaW5nbGUgbW9kZSwgZGVmYXVsdEF1dGhvcml6YXRpb25Nb2RlIGlzIG5vdCByZXF1aXJlZCwganVzdCB1c2UgdGhlIHByb3ZpZGVkIHZhbHVlLlxuICBpZiAoYXV0aFByb3ZpZGVycy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVmYXVsdEF1dGhlbnRpY2F0aW9uOiBhdXRoUHJvdmlkZXJzWzBdLFxuICAgICAgYWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLy8gRm9yIG11bHRpLWF1dGgsIHBhcnRpdGlvbiBpbnRvIHRoZSBkZWZhdWx0TW9kZSBhbmQgbm9uLWRlZmF1bHQgbW9kZXMuXG4gIHJldHVybiB7XG4gICAgZGVmYXVsdEF1dGhlbnRpY2F0aW9uOiBhdXRoUHJvdmlkZXJzLmZpbHRlcigocHJvdmlkZXIpID0+IHByb3ZpZGVyLmF1dGhlbnRpY2F0aW9uVHlwZSA9PT0gYXV0aE1vZGVzLmRlZmF1bHRBdXRob3JpemF0aW9uTW9kZSlbMF0sXG4gICAgYWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzOiBhdXRoUHJvdmlkZXJzLmZpbHRlcihcbiAgICAgIChwcm92aWRlcikgPT4gcHJvdmlkZXIuYXV0aGVudGljYXRpb25UeXBlICE9PSBhdXRoTW9kZXMuZGVmYXVsdEF1dGhvcml6YXRpb25Nb2RlLFxuICAgICksXG4gIH07XG59O1xuXG50eXBlIEF1dGhTeW50aFBhcmFtZXRlcnMgPSBQaWNrPFxuICBTeW50aFBhcmFtZXRlcnMsXG4gICd1c2VyUG9vbElkJyB8ICdhdXRoZW50aWNhdGVkVXNlclJvbGVOYW1lJyB8ICd1bmF1dGhlbnRpY2F0ZWRVc2VyUm9sZU5hbWUnIHwgJ2lkZW50aXR5UG9vbElkJyB8ICdhZG1pblJvbGVzJ1xuPjtcblxuaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICAvKipcbiAgICogdXNlZCBtYWlubHkgaW4gdGhlIGJlZm9yZSBzdGVwIHRvIHBhc3MgdGhlIGF1dGhDb25maWcgZnJvbSB0aGUgdHJhbnNmb3JtZXIgY29yZSBkb3duIHRvIHRoZSBkaXJlY3RpdmVcbiAgICovXG4gIGF1dGhDb25maWc/OiBBcHBTeW5jQXV0aENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFBhcmFtcyB0byBpbmNsdWRlIHRoZSB0cmFuc2Zvcm1lci5cbiAgICovXG4gIGF1dGhTeW50aFBhcmFtZXRlcnM6IEF1dGhTeW50aFBhcmFtZXRlcnM7XG59XG5cbi8qKlxuICogVHJhbnNmb3JtcyBhZGRpdGlvbmFsQXV0aGVudGljYXRpb25UeXBlcyBmb3Igc3RvcmFnZSBpbiBDRk4gb3V0cHV0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBZGRpdGlvbmFsQXV0aGVudGljYXRpb25UeXBlcyA9IChjZm5HcmFwaHFsQXBpOiBDZm5HcmFwaFFMQXBpKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFpc0FycmF5KGNmbkdyYXBocWxBcGkuYWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gKGNmbkdyYXBocWxBcGkuYWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzIGFzIENmbkdyYXBoUUxBcGkuQWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJQcm9wZXJ0eVtdKVxuICAgIC5tYXAoXG4gICAgICAoYWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXI6IENmbkdyYXBoUUxBcGkuQWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJQcm9wZXJ0eSkgPT5cbiAgICAgICAgYWRkaXRpb25hbEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIuYXV0aGVudGljYXRpb25UeXBlLFxuICAgIClcbiAgICAuam9pbignLCcpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBsaXN0IG9mIGF1dGggbW9kZXMgaW50byB0aGUgbmVjZXNzYXJ5IGZsYWdzIGFuZCBwYXJhbXMgKGVmZmVjdGl2ZWx5IGEgcmVkdWNlciBvbiB0aGUgcnVsZSBsaXN0KVxuICogQHBhcmFtIGF1dGhNb2RlcyB0aGUgbGlzdCBvZiBhdXRoIG1vZGVzIGNvbmZpZ3VyZWQgb24gdGhlIEFQSS5cbiAqIEByZXR1cm5zIHRoZSBBdXRoQ29uZmlnIHdoaWNoIHRoZSBBdXRoVHJhbnNmb3JtZXIgbmVlZHMgYXMgaW5wdXQuXG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0QXV0aG9yaXphdGlvbk1vZGVzVG9UcmFuc2Zvcm1lckF1dGhDb25maWcgPSAoYXV0aE1vZGVzOiBBdXRob3JpemF0aW9uTW9kZXMpOiBBdXRoQ29uZmlnID0+ICh7XG4gIGF1dGhDb25maWc6IGNvbnZlcnRBdXRoQ29uZmlnVG9BcHBTeW5jQXV0aChhdXRoTW9kZXMpLFxuICBhdXRoU3ludGhQYXJhbWV0ZXJzOiBnZXRTeW50aFBhcmFtZXRlcnMoYXV0aE1vZGVzKSxcbn0pO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgYXV0aG9yaXphdGlvbiBjb25maWcgaW50byB0aGUgdHJhbnNmb3JtZXIgc3ludGggcGFyYW1ldGVycyBwZXJ0YWluaW5nIHRvIGF1dGguXG4gKiBAcGFyYW0gYXV0aE1vZGVzIHRoZSBhdXRoIG1vZGVzIHByb3ZpZGVkIHRvIHRoZSBjb25zdHJ1Y3QuXG4gKiBAcmV0dXJucyBhIHJlY29yZCBvZiBwYXJhbXMgdG8gYmUgY29uc3VtZWQgYnkgdGhlIHRyYW5zZm9ybWVyLlxuICovXG5jb25zdCBnZXRTeW50aFBhcmFtZXRlcnMgPSAoYXV0aE1vZGVzOiBBdXRob3JpemF0aW9uTW9kZXMpOiBBdXRoU3ludGhQYXJhbWV0ZXJzID0+ICh7XG4gIGFkbWluUm9sZXM6IGF1dGhNb2Rlcy5hZG1pblJvbGVzPy5tYXAoKHJvbGUpID0+IHJvbGUucm9sZU5hbWUpID8/IFtdLFxuICBpZGVudGl0eVBvb2xJZDogYXV0aE1vZGVzLmlhbUNvbmZpZz8uaWRlbnRpdHlQb29sSWQsXG4gIC4uLihhdXRoTW9kZXMudXNlclBvb2xDb25maWcgPyB7IHVzZXJQb29sSWQ6IGF1dGhNb2Rlcy51c2VyUG9vbENvbmZpZy51c2VyUG9vbC51c2VyUG9vbElkIH0gOiB7fSksXG4gIC4uLihhdXRoTW9kZXM/LmlhbUNvbmZpZ1xuICAgID8ge1xuICAgICAgICBhdXRoZW50aWNhdGVkVXNlclJvbGVOYW1lOiBhdXRoTW9kZXMuaWFtQ29uZmlnLmF1dGhlbnRpY2F0ZWRVc2VyUm9sZS5yb2xlTmFtZSxcbiAgICAgICAgdW5hdXRoZW50aWNhdGVkVXNlclJvbGVOYW1lOiBhdXRoTW9kZXMuaWFtQ29uZmlnLnVuYXV0aGVudGljYXRlZFVzZXJSb2xlLnJvbGVOYW1lLFxuICAgICAgfVxuICAgIDoge30pLFxufSk7XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi1tb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcm5hbC9hdXRob3JpemF0aW9uLW1vZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG1DQUFpQztBQUNqQyxpREFBOEQ7QUFpQjlEOzs7R0FHRztBQUNILE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxRQUFpQyxFQUFpQyxFQUFFO0lBQ3pHLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN6QyxRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7UUFDckIsS0FBSyxTQUFTO1lBQ1osT0FBTztnQkFDTCxrQkFBa0I7Z0JBQ2xCLFlBQVksRUFBRTtvQkFDWixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7b0JBQ2pDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO2lCQUNoRDthQUNGLENBQUM7UUFDSixLQUFLLFNBQVM7WUFDWixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUNoQyxLQUFLLDJCQUEyQjtZQUM5QixPQUFPO2dCQUNMLGtCQUFrQjtnQkFDbEIsY0FBYyxFQUFFO29CQUNkLFVBQVUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVU7aUJBQ3pDO2FBQ0YsQ0FBQztRQUNKLEtBQUssZ0JBQWdCO1lBQ25CLE9BQU87Z0JBQ0wsa0JBQWtCO2dCQUNsQixtQkFBbUIsRUFBRTtvQkFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0I7b0JBQy9CLFNBQVMsRUFBRSxRQUFRLENBQUMsYUFBYTtvQkFDakMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO29CQUMzQixNQUFNLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRTtvQkFDakQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUU7aUJBQ2xEO2FBQ0YsQ0FBQztRQUNKLEtBQUss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QUFDLENBQUM7SUFDbEYsVUFBVSxFQUFFLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztJQUMxQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFNBQVMsRUFBRSxjQUFjO0lBQ25ELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUztRQUN0QixDQUFDLENBQUM7WUFDRSx5QkFBeUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLFFBQVE7WUFDN0UsMkJBQTJCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRO1NBQ2xGO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNSLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcFN5bmNBdXRoQ29uZmlndXJhdGlvbiwgQXBwU3luY0F1dGhDb25maWd1cmF0aW9uRW50cnksIFN5bnRoUGFyYW1ldGVycyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9ncmFwaHFsLXRyYW5zZm9ybWVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ2ZuR3JhcGhRTEFwaSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcHBzeW5jJztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSVJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7XG4gIEF1dGhvcml6YXRpb25Nb2RlcyxcbiAgQXBpS2V5QXV0aG9yaXphdGlvbkNvbmZpZyxcbiAgSUFNQXV0aG9yaXphdGlvbkNvbmZpZyxcbiAgTGFtYmRhQXV0aG9yaXphdGlvbkNvbmZpZyxcbiAgT0lEQ0F1dGhvcml6YXRpb25Db25maWcsXG4gIFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG50eXBlIEF1dGhvcml6YXRpb25Db25maWdNb2RlID1cbiAgfCAoSUFNQXV0aG9yaXphdGlvbkNvbmZpZyAmIHsgdHlwZTogJ0FXU19JQU0nIH0pXG4gIHwgKFVzZXJQb29sQXV0aG9yaXphdGlvbkNvbmZpZyAmIHsgdHlwZTogJ0FNQVpPTl9DT0dOSVRPX1VTRVJfUE9PTFMnIH0pXG4gIHwgKE9JRENBdXRob3JpemF0aW9uQ29uZmlnICYgeyB0eXBlOiAnT1BFTklEX0NPTk5FQ1QnIH0pXG4gIHwgKEFwaUtleUF1dGhvcml6YXRpb25Db25maWcgJiB7IHR5cGU6ICdBUElfS0VZJyB9KVxuICB8IChMYW1iZGFBdXRob3JpemF0aW9uQ29uZmlnICYgeyB0eXBlOiAnQVdTX0xBTUJEQScgfSk7XG5cbi8qKlxuICogQ29udmVydHMgYSBzaW5nbGUgYXV0aCBtb2RlIGNvbmZpZyBpbnRvIHRoZSBhbXBsaWZ5LWludGVybmFsIHJlcHJlc2VudGF0aW9uLlxuICogQHBhcmFtIGF1dGhNb2RlIHRoZSBhdXRoIG1vZGUgdG8gY29udmVydCBpbnRvIHRoZSBBcHBzeW5jIENESyByZXByZXNlbnRhdGlvbi5cbiAqL1xuY29uc3QgY29udmVydEF1dGhNb2RlVG9BdXRoUHJvdmlkZXIgPSAoYXV0aE1vZGU6IEF1dGhvcml6YXRpb25Db25maWdNb2RlKTogQXBwU3luY0F1dGhDb25maWd1cmF0aW9uRW50cnkgPT4ge1xuICBjb25zdCBhdXRoZW50aWNhdGlvblR5cGUgPSBhdXRoTW9kZS50eXBlO1xuICBzd2l0Y2ggKGF1dGhNb2RlLnR5cGUpIHtcbiAgICBjYXNlICdBUElfS0VZJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGF1dGhlbnRpY2F0aW9uVHlwZSxcbiAgICAgICAgYXBpS2V5Q29uZmlnOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGF1dGhNb2RlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGFwaUtleUV4cGlyYXRpb25EYXlzOiBhdXRoTW9kZS5leHBpcmVzLnRvRGF5cygpLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlICdBV1NfSUFNJzpcbiAgICAgIHJldHVybiB7IGF1dGhlbnRpY2F0aW9uVHlwZSB9O1xuICAgIGNhc2UgJ0FNQVpPTl9DT0dOSVRPX1VTRVJfUE9PTFMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXV0aGVudGljYXRpb25UeXBlLFxuICAgICAgICB1c2VyUG9vbENvbmZpZzoge1xuICAgICAgICAgIHVzZXJQb29sSWQ6IGF1dGhNb2RlLnVzZXJQb29sLnVzZXJQb29sSWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIGNhc2UgJ09QRU5JRF9DT05ORUNUJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGF1dGhlbnRpY2F0aW9uVHlwZSxcbiAgICAgICAgb3BlbklEQ29ubmVjdENvbmZpZzoge1xuICAgICAgICAgIG5hbWU6IGF1dGhNb2RlLm9pZGNQcm92aWRlck5hbWUsXG4gICAgICAgICAgaXNzdWVyVXJsOiBhdXRoTW9kZS5vaWRjSXNzdWVyVXJsLFxuICAgICAgICAgIGNsaWVudElkOiBhdXRoTW9kZS5jbGllbnRJZCxcbiAgICAgICAgICBpYXRUVEw6IGF1dGhNb2RlLnRva2VuRXhwaXJ5RnJvbUlzc3VlLnRvU2Vjb25kcygpLFxuICAgICAgICAgIGF1dGhUVEw6IGF1dGhNb2RlLnRva2VuRXhwaXJ5RnJvbUF1dGgudG9TZWNvbmRzKCksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIGNhc2UgJ0FXU19MQU1CREEnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXV0aGVudGljYXRpb25UeXBlLFxuICAgICAgICBsYW1iZGFBdXRob3JpemVyQ29uZmlnOiB7XG4gICAgICAgICAgbGFtYmRhQXJuOiBhdXRoTW9kZS5mdW5jdGlvbi5mdW5jdGlvbkFybixcbiAgICAgICAgICBsYW1iZGFGdW5jdGlvbjogYXV0aE1vZGUuZnVuY3Rpb24uZnVuY3Rpb25OYW1lLFxuICAgICAgICAgIHR0bFNlY29uZHM6IGF1dGhNb2RlLnR0bC50b1NlY29uZHMoKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBBdXRoTW9kZSB0eXBlICR7YXV0aGVudGljYXRpb25UeXBlfSBlbmNvdW50ZXJlZC5gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBHaXZlbiBhbiBhcHBzeW5jIGF1dGggY29uZmlndXJhdGlvbiwgY29udmVydCBpbnRvIGFwcHN5bmMgYXV0aCBwcm92aWRlciBzZXR1cC5cbiAqIEBwYXJhbSBhdXRoTW9kZXMgdGhlIGNvbmZpZyB0byB0cmFuc2Zvcm1cbiAqIEByZXR1cm5zIHRoZSBhcHBzeW5jIGNvbmZpZyBvYmplY3QuXG4gKi9cbmNvbnN0IGNvbnZlcnRBdXRoQ29uZmlnVG9BcHBTeW5jQXV0aCA9IChhdXRoTW9kZXM6IEF1dGhvcml6YXRpb25Nb2Rlcyk6IEFwcFN5bmNBdXRoQ29uZmlndXJhdGlvbiA9PiB7XG4gIC8vIENvbnZlcnQgYXV0aCBtb2RlcyBpbnRvIGFuIGFycmF5IG9mIGFwcHN5bmMgY29uZmlncywgYW5kIGluY2x1ZGUgdGhlIHR5cGUgc28gd2UgY2FuIHVzZSB0aGF0IGZvciBzd2l0Y2hpbmcgYW5kIHBhcnRpdGlvbmluZyBsYXRlci5cbiAgY29uc3QgYXV0aENvbmZpZyA9IFtcbiAgICBhdXRoTW9kZXMuYXBpS2V5Q29uZmlnID8geyB0eXBlOiAnQVBJX0tFWScsIC4uLmF1dGhNb2Rlcy5hcGlLZXlDb25maWcgfSA6IG51bGwsXG4gICAgYXV0aE1vZGVzLmxhbWJkYUNvbmZpZyA/IHsgdHlwZTogJ0FXU19MQU1CREEnLCAuLi5hdXRoTW9kZXMubGFtYmRhQ29uZmlnIH0gOiBudWxsLFxuICAgIGF1dGhNb2Rlcy5vaWRjQ29uZmlnID8geyB0eXBlOiAnT1BFTklEX0NPTk5FQ1QnLCAuLi5hdXRoTW9kZXMub2lkY0NvbmZpZyB9IDogbnVsbCxcbiAgICBhdXRoTW9kZXMudXNlclBvb2xDb25maWcgPyB7IHR5cGU6ICdBTUFaT05fQ09HTklUT19VU0VSX1BPT0xTJywgLi4uYXV0aE1vZGVzLnVzZXJQb29sQ29uZmlnIH0gOiBudWxsLFxuICAgIGF1dGhNb2Rlcy5pYW1Db25maWcgPyB7IHR5cGU6ICdBV1NfSUFNJywgLi4uYXV0aE1vZGVzLmlhbUNvbmZpZyB9IDogbnVsbCxcbiAgXS5maWx0ZXIoKG1vZGUpID0+IG1vZGUpIGFzIEF1dGhvcml6YXRpb25Db25maWdNb2RlW107XG4gIGNvbnN0IGF1dGhQcm92aWRlcnMgPSBhdXRoQ29uZmlnLm1hcChjb252ZXJ0QXV0aE1vZGVUb0F1dGhQcm92aWRlcik7XG5cbiAgLy8gVmFsaWRhdGUgaW5wdXRzIG1ha2Ugc2Vuc2UsIG5lZWRzIGF0IGxlYXN0IG9uZSBtb2RlLCBhbmQgYSBkZWZhdWx0IG1vZGUgaXMgcmVxdWlyZWQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG1vZGVzLlxuICBpZiAoYXV0aFByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBhdXRoIGNvbmZpZyBpcyByZXF1aXJlZCwgYnV0IG5vbmUgd2VyZSBmb3VuZC4nKTtcbiAgfVxuICBpZiAoYXV0aFByb3ZpZGVycy5sZW5ndGggPiAxICYmICFhdXRoTW9kZXMuZGVmYXVsdEF1dGhvcml6YXRpb25Nb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBIGRlZmF1bHRBdXRob3JpemF0aW9uTW9kZSBpcyByZXF1aXJlZCBpZiBtdWx0aXBsZSBhdXRob3JpemF0aW9uIG1vZGVzIGFyZSBjb25maWd1cmVkLicpO1xuICB9XG5cbiAgLy8gRW5hYmxlIGFwcHN5bmMgdG8gaW52b2tlIGEgcHJvdmlkZWQgbGFtYmRhIGF1dGhvcml6ZXIgZnVuY3Rpb25cbiAgYXV0aE1vZGVzLmxhbWJkYUNvbmZpZz8uZnVuY3Rpb24uYWRkUGVybWlzc2lvbignYXBwc3luYy1hdXRoLWludm9rZScsIHtcbiAgICBwcmluY2lwYWw6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdhcHBzeW5jLmFtYXpvbmF3cy5jb20nKSxcbiAgICBhY3Rpb246ICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICB9KTtcblxuICAvLyBJbiB0aGUgY2FzZSBvZiBhIHNpbmdsZSBtb2RlLCBkZWZhdWx0QXV0aG9yaXphdGlvbk1vZGUgaXMgbm90IHJlcXVpcmVkLCBqdXN0IHVzZSB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gIGlmIChhdXRoUHJvdmlkZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0QXV0aGVudGljYXRpb246IGF1dGhQcm92aWRlcnNbMF0sXG4gICAgICBhZGRpdGlvbmFsQXV0aGVudGljYXRpb25Qcm92aWRlcnM6IFtdLFxuICAgIH07XG4gIH1cblxuICAvLyBGb3IgbXVsdGktYXV0aCwgcGFydGl0aW9uIGludG8gdGhlIGRlZmF1bHRNb2RlIGFuZCBub24tZGVmYXVsdCBtb2Rlcy5cbiAgcmV0dXJuIHtcbiAgICBkZWZhdWx0QXV0aGVudGljYXRpb246IGF1dGhQcm92aWRlcnMuZmlsdGVyKChwcm92aWRlcikgPT4gcHJvdmlkZXIuYXV0aGVudGljYXRpb25UeXBlID09PSBhdXRoTW9kZXMuZGVmYXVsdEF1dGhvcml6YXRpb25Nb2RlKVswXSxcbiAgICBhZGRpdGlvbmFsQXV0aGVudGljYXRpb25Qcm92aWRlcnM6IGF1dGhQcm92aWRlcnMuZmlsdGVyKFxuICAgICAgKHByb3ZpZGVyKSA9PiBwcm92aWRlci5hdXRoZW50aWNhdGlvblR5cGUgIT09IGF1dGhNb2Rlcy5kZWZhdWx0QXV0aG9yaXphdGlvbk1vZGUsXG4gICAgKSxcbiAgfTtcbn07XG5cbnR5cGUgQXV0aFN5bnRoUGFyYW1ldGVycyA9IFBpY2s8XG4gIFN5bnRoUGFyYW1ldGVycyxcbiAgJ3VzZXJQb29sSWQnIHwgJ2F1dGhlbnRpY2F0ZWRVc2VyUm9sZU5hbWUnIHwgJ3VuYXV0aGVudGljYXRlZFVzZXJSb2xlTmFtZScgfCAnaWRlbnRpdHlQb29sSWQnIHwgJ2FkbWluUm9sZXMnXG4+O1xuXG5pbnRlcmZhY2UgQXV0aENvbmZpZyB7XG4gIC8qKlxuICAgKiB1c2VkIG1haW5seSBpbiB0aGUgYmVmb3JlIHN0ZXAgdG8gcGFzcyB0aGUgYXV0aENvbmZpZyBmcm9tIHRoZSB0cmFuc2Zvcm1lciBjb3JlIGRvd24gdG8gdGhlIGRpcmVjdGl2ZVxuICAgKi9cbiAgYXV0aENvbmZpZz86IEFwcFN5bmNBdXRoQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogUGFyYW1zIHRvIGluY2x1ZGUgdGhlIHRyYW5zZm9ybWVyLlxuICAgKi9cbiAgYXV0aFN5bnRoUGFyYW1ldGVyczogQXV0aFN5bnRoUGFyYW1ldGVycztcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1zIGFkZGl0aW9uYWxBdXRoZW50aWNhdGlvblR5cGVzIGZvciBzdG9yYWdlIGluIENGTiBvdXRwdXRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFkZGl0aW9uYWxBdXRoZW50aWNhdGlvblR5cGVzID0gKGNmbkdyYXBocWxBcGk6IENmbkdyYXBoUUxBcGkpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIWlzQXJyYXkoY2ZuR3JhcGhxbEFwaS5hZGRpdGlvbmFsQXV0aGVudGljYXRpb25Qcm92aWRlcnMpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiAoY2ZuR3JhcGhxbEFwaS5hZGRpdGlvbmFsQXV0aGVudGljYXRpb25Qcm92aWRlcnMgYXMgQ2ZuR3JhcGhRTEFwaS5BZGRpdGlvbmFsQXV0aGVudGljYXRpb25Qcm92aWRlclByb3BlcnR5W10pXG4gICAgLm1hcChcbiAgICAgIChhZGRpdGlvbmFsQXV0aGVudGljYXRpb25Qcm92aWRlcjogQ2ZuR3JhcGhRTEFwaS5BZGRpdGlvbmFsQXV0aGVudGljYXRpb25Qcm92aWRlclByb3BlcnR5KSA9PlxuICAgICAgICBhZGRpdGlvbmFsQXV0aGVudGljYXRpb25Qcm92aWRlci5hdXRoZW50aWNhdGlvblR5cGUsXG4gICAgKVxuICAgIC5qb2luKCcsJyk7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdGhlIGxpc3Qgb2YgYXV0aCBtb2RlcyBpbnRvIHRoZSBuZWNlc3NhcnkgZmxhZ3MgYW5kIHBhcmFtcyAoZWZmZWN0aXZlbHkgYSByZWR1Y2VyIG9uIHRoZSBydWxlIGxpc3QpXG4gKiBAcGFyYW0gYXV0aE1vZGVzIHRoZSBsaXN0IG9mIGF1dGggbW9kZXMgY29uZmlndXJlZCBvbiB0aGUgQVBJLlxuICogQHJldHVybnMgdGhlIEF1dGhDb25maWcgd2hpY2ggdGhlIEF1dGhUcmFuc2Zvcm1lciBuZWVkcyBhcyBpbnB1dC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnRBdXRob3JpemF0aW9uTW9kZXNUb1RyYW5zZm9ybWVyQXV0aENvbmZpZyA9IChhdXRoTW9kZXM6IEF1dGhvcml6YXRpb25Nb2Rlcyk6IEF1dGhDb25maWcgPT4gKHtcbiAgYXV0aENvbmZpZzogY29udmVydEF1dGhDb25maWdUb0FwcFN5bmNBdXRoKGF1dGhNb2RlcyksXG4gIGF1dGhTeW50aFBhcmFtZXRlcnM6IGdldFN5bnRoUGFyYW1ldGVycyhhdXRoTW9kZXMpLFxufSk7XG5cbi8qKlxuICogTWVyZ2UgaWFtQ29uZmlnIGFsbG93TGlzdGVkUm9sZXMgd2l0aCBkZXByZWNhdGVkIGFkbWluUm9sZXMgcHJvcGVydHksIGNvbnZlcnRpbmcgdG8gc3RyaW5ncy5cbiAqIEBwYXJhbSBhdXRoTW9kZXMgdGhlIGF1dGggbW9kZXMgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdC5cbiAqIEByZXR1cm5zIHRoZSBsaXN0IG9mIGFkbWluIHJvbGVzIGFzIHN0cmluZ3MgdG8gcGFzcyBpbnRvIHRoZSB0cmFuc2Zvcm1lclxuICovXG5jb25zdCBnZXRBbGxvd0xpc3RlZFJvbGVzID0gKGF1dGhNb2RlczogQXV0aG9yaXphdGlvbk1vZGVzKTogc3RyaW5nW10gPT5cbiAgWy4uLihhdXRoTW9kZXM/LmlhbUNvbmZpZz8uYWxsb3dMaXN0ZWRSb2xlcyA/PyBbXSksIC4uLihhdXRoTW9kZXMuYWRtaW5Sb2xlcyA/PyBbXSldLm1hcCgocm9sZU9yUm9sZU5hbWU6IElSb2xlIHwgc3RyaW5nKSA9PiB7XG4gICAgaWYgKHR5cGVvZiByb2xlT3JSb2xlTmFtZSA9PT0gJ3N0cmluZycgfHwgcm9sZU9yUm9sZU5hbWUgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgIHJldHVybiByb2xlT3JSb2xlTmFtZSBhcyBzdHJpbmc7XG4gICAgfVxuICAgIHJldHVybiByb2xlT3JSb2xlTmFtZS5yb2xlTmFtZTtcbiAgfSk7XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBhdXRob3JpemF0aW9uIGNvbmZpZyBpbnRvIHRoZSB0cmFuc2Zvcm1lciBzeW50aCBwYXJhbWV0ZXJzIHBlcnRhaW5pbmcgdG8gYXV0aC5cbiAqIEBwYXJhbSBhdXRoTW9kZXMgdGhlIGF1dGggbW9kZXMgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdC5cbiAqIEByZXR1cm5zIGEgcmVjb3JkIG9mIHBhcmFtcyB0byBiZSBjb25zdW1lZCBieSB0aGUgdHJhbnNmb3JtZXIuXG4gKi9cbmNvbnN0IGdldFN5bnRoUGFyYW1ldGVycyA9IChhdXRoTW9kZXM6IEF1dGhvcml6YXRpb25Nb2Rlcyk6IEF1dGhTeW50aFBhcmFtZXRlcnMgPT4gKHtcbiAgYWRtaW5Sb2xlczogZ2V0QWxsb3dMaXN0ZWRSb2xlcyhhdXRoTW9kZXMpLFxuICBpZGVudGl0eVBvb2xJZDogYXV0aE1vZGVzLmlhbUNvbmZpZz8uaWRlbnRpdHlQb29sSWQsXG4gIC4uLihhdXRoTW9kZXMudXNlclBvb2xDb25maWcgPyB7IHVzZXJQb29sSWQ6IGF1dGhNb2Rlcy51c2VyUG9vbENvbmZpZy51c2VyUG9vbC51c2VyUG9vbElkIH0gOiB7fSksXG4gIC4uLihhdXRoTW9kZXM/LmlhbUNvbmZpZ1xuICAgID8ge1xuICAgICAgICBhdXRoZW50aWNhdGVkVXNlclJvbGVOYW1lOiBhdXRoTW9kZXMuaWFtQ29uZmlnLmF1dGhlbnRpY2F0ZWRVc2VyUm9sZS5yb2xlTmFtZSxcbiAgICAgICAgdW5hdXRoZW50aWNhdGVkVXNlclJvbGVOYW1lOiBhdXRoTW9kZXMuaWFtQ29uZmlnLnVuYXV0aGVudGljYXRlZFVzZXJSb2xlLnJvbGVOYW1lLFxuICAgICAgfVxuICAgIDoge30pLFxufSk7XG4iXX0=