payload 2.4.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/components/elements.d.ts +2 -0
  2. package/components/elements.js +9 -1
  3. package/components/forms.d.ts +4 -0
  4. package/components/forms.js +17 -1
  5. package/dist/admin/components/elements/DatePicker/index.scss +4 -0
  6. package/dist/admin/components/elements/Header/index.d.ts.map +1 -1
  7. package/dist/admin/components/elements/Header/index.js +72 -5
  8. package/dist/admin/components/elements/Header/index.scss +62 -2
  9. package/dist/admin/components/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  10. package/dist/admin/components/elements/ListDrawer/DrawerContent.js +12 -4
  11. package/dist/admin/components/elements/Nav/index.scss +3 -7
  12. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.js +2 -2
  13. package/dist/admin/components/forms/Form/getDataByPath.d.ts.map +1 -1
  14. package/dist/admin/components/forms/Form/getDataByPath.js +4 -1
  15. package/dist/admin/components/forms/field-types/JSON/index.d.ts.map +1 -1
  16. package/dist/admin/components/forms/field-types/JSON/index.js +6 -2
  17. package/dist/admin/components/forms/field-types/Relationship/index.d.ts.map +1 -1
  18. package/dist/admin/components/forms/field-types/Relationship/index.js +8 -3
  19. package/dist/admin/components/forms/field-types/Relationship/types.d.ts +1 -1
  20. package/dist/admin/components/forms/field-types/Relationship/types.d.ts.map +1 -1
  21. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.d.ts.map +1 -1
  22. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.js +12 -1
  23. package/dist/admin/components/modals/LeaveWithoutSaving/index.d.ts.map +1 -1
  24. package/dist/admin/components/modals/LeaveWithoutSaving/index.js +10 -2
  25. package/dist/admin/components/templates/Default/index.d.ts +5 -1
  26. package/dist/admin/components/templates/Default/index.d.ts.map +1 -1
  27. package/dist/admin/components/templates/Default/index.js +1 -1
  28. package/dist/admin/components/templates/Default/index.scss +27 -9
  29. package/dist/admin/components/utilities/ActionsProvider/index.d.ts +11 -0
  30. package/dist/admin/components/utilities/ActionsProvider/index.d.ts.map +1 -0
  31. package/dist/admin/components/utilities/ActionsProvider/index.js +86 -0
  32. package/dist/admin/components/views/API/index.d.ts.map +1 -1
  33. package/dist/admin/components/views/API/index.js +15 -1
  34. package/dist/admin/components/views/Dashboard/index.d.ts.map +1 -1
  35. package/dist/admin/components/views/Dashboard/index.js +8 -1
  36. package/dist/admin/components/views/Global/Default.d.ts.map +1 -1
  37. package/dist/admin/components/views/Global/Default.js +60 -2
  38. package/dist/admin/components/views/LivePreview/index.d.ts.map +1 -1
  39. package/dist/admin/components/views/LivePreview/index.js +17 -1
  40. package/dist/admin/components/views/Routes/index.d.ts.map +1 -1
  41. package/dist/admin/components/views/Routes/index.js +4 -3
  42. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +6 -3
  43. package/dist/admin/components/views/Version/SelectLocales/index.d.ts.map +1 -1
  44. package/dist/admin/components/views/Version/SelectLocales/index.js +16 -3
  45. package/dist/admin/components/views/Version/Version.d.ts.map +1 -1
  46. package/dist/admin/components/views/Version/Version.js +15 -1
  47. package/dist/admin/components/views/Versions/index.d.ts.map +1 -1
  48. package/dist/admin/components/views/Versions/index.js +31 -5
  49. package/dist/admin/components/views/collections/Edit/Default.d.ts.map +1 -1
  50. package/dist/admin/components/views/collections/Edit/Default.js +22 -1
  51. package/dist/admin/components/views/collections/List/formatFields.d.ts.map +1 -1
  52. package/dist/admin/components/views/collections/List/formatFields.js +20 -17
  53. package/dist/admin/components/views/collections/List/index.d.ts.map +1 -1
  54. package/dist/admin/components/views/collections/List/index.js +22 -3
  55. package/dist/admin/hooks/useThumbnail.d.ts.map +1 -1
  56. package/dist/admin/hooks/useThumbnail.js +4 -1
  57. package/dist/auth/baseFields/verification.d.ts.map +1 -1
  58. package/dist/auth/baseFields/verification.js +6 -1
  59. package/dist/auth/graphql/resolvers/access.d.ts.map +1 -1
  60. package/dist/auth/graphql/resolvers/access.js +3 -3
  61. package/dist/auth/graphql/resolvers/forgotPassword.d.ts.map +1 -1
  62. package/dist/auth/graphql/resolvers/forgotPassword.js +3 -3
  63. package/dist/auth/graphql/resolvers/init.d.ts.map +1 -1
  64. package/dist/auth/graphql/resolvers/init.js +3 -3
  65. package/dist/auth/graphql/resolvers/login.d.ts.map +1 -1
  66. package/dist/auth/graphql/resolvers/login.js +3 -3
  67. package/dist/auth/graphql/resolvers/logout.d.ts.map +1 -1
  68. package/dist/auth/graphql/resolvers/logout.js +3 -3
  69. package/dist/auth/graphql/resolvers/me.d.ts.map +1 -1
  70. package/dist/auth/graphql/resolvers/me.js +3 -3
  71. package/dist/auth/graphql/resolvers/refresh.d.ts.map +1 -1
  72. package/dist/auth/graphql/resolvers/refresh.js +3 -3
  73. package/dist/auth/graphql/resolvers/resetPassword.d.ts.map +1 -1
  74. package/dist/auth/graphql/resolvers/resetPassword.js +8 -5
  75. package/dist/auth/graphql/resolvers/unlock.d.ts.map +1 -1
  76. package/dist/auth/graphql/resolvers/unlock.js +3 -3
  77. package/dist/auth/graphql/resolvers/verifyEmail.d.ts.map +1 -1
  78. package/dist/auth/graphql/resolvers/verifyEmail.js +8 -5
  79. package/dist/auth/operations/local/forgotPassword.d.ts +2 -1
  80. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  81. package/dist/auth/operations/local/forgotPassword.js +3 -3
  82. package/dist/auth/operations/local/login.d.ts +2 -1
  83. package/dist/auth/operations/local/login.d.ts.map +1 -1
  84. package/dist/auth/operations/local/login.js +10 -6
  85. package/dist/auth/operations/local/resetPassword.d.ts +2 -1
  86. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  87. package/dist/auth/operations/local/resetPassword.js +3 -3
  88. package/dist/auth/operations/local/unlock.d.ts +2 -1
  89. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  90. package/dist/auth/operations/local/unlock.js +3 -3
  91. package/dist/auth/operations/local/verifyEmail.d.ts +2 -1
  92. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  93. package/dist/auth/operations/local/verifyEmail.js +3 -3
  94. package/dist/collections/config/schema.d.ts.map +1 -1
  95. package/dist/collections/config/schema.js +5 -2
  96. package/dist/collections/config/types.d.ts +4 -1
  97. package/dist/collections/config/types.d.ts.map +1 -1
  98. package/dist/collections/config/types.js +1 -1
  99. package/dist/collections/graphql/init.d.ts.map +1 -1
  100. package/dist/collections/graphql/init.js +19 -9
  101. package/dist/collections/graphql/resolvers/create.d.ts.map +1 -1
  102. package/dist/collections/graphql/resolvers/create.js +7 -6
  103. package/dist/collections/graphql/resolvers/delete.d.ts.map +1 -1
  104. package/dist/collections/graphql/resolvers/delete.js +10 -5
  105. package/dist/collections/graphql/resolvers/docAccess.js +3 -3
  106. package/dist/collections/graphql/resolvers/find.d.ts.map +1 -1
  107. package/dist/collections/graphql/resolvers/find.js +10 -5
  108. package/dist/collections/graphql/resolvers/findByID.d.ts.map +1 -1
  109. package/dist/collections/graphql/resolvers/findByID.js +10 -6
  110. package/dist/collections/graphql/resolvers/findVersionByID.d.ts.map +1 -1
  111. package/dist/collections/graphql/resolvers/findVersionByID.js +10 -5
  112. package/dist/collections/graphql/resolvers/findVersions.d.ts.map +1 -1
  113. package/dist/collections/graphql/resolvers/findVersions.js +10 -5
  114. package/dist/collections/graphql/resolvers/restoreVersion.js +3 -3
  115. package/dist/collections/graphql/resolvers/update.d.ts.map +1 -1
  116. package/dist/collections/graphql/resolvers/update.js +10 -5
  117. package/dist/collections/operations/local/create.d.ts.map +1 -1
  118. package/dist/collections/operations/local/create.js +8 -5
  119. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  120. package/dist/collections/operations/local/delete.js +8 -5
  121. package/dist/collections/operations/local/find.d.ts.map +1 -1
  122. package/dist/collections/operations/local/find.js +8 -12
  123. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  124. package/dist/collections/operations/local/findByID.js +8 -12
  125. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  126. package/dist/collections/operations/local/findVersionByID.js +8 -12
  127. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  128. package/dist/collections/operations/local/findVersions.js +8 -5
  129. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  130. package/dist/collections/operations/local/restoreVersion.js +7 -3
  131. package/dist/collections/operations/local/update.d.ts.map +1 -1
  132. package/dist/collections/operations/local/update.js +7 -4
  133. package/dist/config/schema.d.ts.map +1 -1
  134. package/dist/config/schema.js +3 -1
  135. package/dist/config/shared/componentSchema.d.ts.map +1 -1
  136. package/dist/config/shared/componentSchema.js +2 -1
  137. package/dist/config/types.d.ts +10 -0
  138. package/dist/config/types.d.ts.map +1 -1
  139. package/dist/config/types.js +1 -1
  140. package/dist/database/types.d.ts +2 -2
  141. package/dist/database/types.d.ts.map +1 -1
  142. package/dist/errors/DuplicateFieldName.d.ts +6 -0
  143. package/dist/errors/DuplicateFieldName.d.ts.map +1 -0
  144. package/dist/errors/DuplicateFieldName.js +24 -0
  145. package/dist/errors/index.d.ts +1 -0
  146. package/dist/errors/index.d.ts.map +1 -1
  147. package/dist/errors/index.js +5 -1
  148. package/dist/exports/components/elements.d.ts +2 -0
  149. package/dist/exports/components/elements.d.ts.map +1 -1
  150. package/dist/exports/components/elements.js +9 -1
  151. package/dist/exports/components/forms.d.ts +4 -0
  152. package/dist/exports/components/forms.d.ts.map +1 -1
  153. package/dist/exports/components/forms.js +17 -1
  154. package/dist/express/middleware/index.js +3 -3
  155. package/dist/fields/config/sanitize.d.ts +2 -1
  156. package/dist/fields/config/sanitize.d.ts.map +1 -1
  157. package/dist/fields/config/sanitize.js +14 -3
  158. package/dist/fields/config/schema.d.ts.map +1 -1
  159. package/dist/fields/config/schema.js +3 -2
  160. package/dist/fields/config/types.d.ts +1 -1
  161. package/dist/fields/config/types.d.ts.map +1 -1
  162. package/dist/fields/config/types.js +1 -1
  163. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  164. package/dist/fields/hooks/afterRead/promise.js +4 -2
  165. package/dist/fields/validations.d.ts.map +1 -1
  166. package/dist/fields/validations.js +12 -2
  167. package/dist/globals/graphql/init.d.ts.map +1 -1
  168. package/dist/globals/graphql/init.js +8 -5
  169. package/dist/globals/graphql/resolvers/docAccess.js +3 -3
  170. package/dist/globals/graphql/resolvers/findOne.js +3 -3
  171. package/dist/globals/graphql/resolvers/findVersionByID.js +3 -3
  172. package/dist/globals/graphql/resolvers/findVersions.js +3 -3
  173. package/dist/globals/graphql/resolvers/restoreVersion.js +3 -3
  174. package/dist/globals/graphql/resolvers/update.js +3 -3
  175. package/dist/globals/operations/local/findOne.d.ts +2 -1
  176. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  177. package/dist/globals/operations/local/findOne.js +6 -4
  178. package/dist/globals/operations/local/findVersionByID.d.ts +2 -1
  179. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  180. package/dist/globals/operations/local/findVersionByID.js +7 -4
  181. package/dist/globals/operations/local/findVersions.d.ts +2 -1
  182. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  183. package/dist/globals/operations/local/findVersions.js +7 -4
  184. package/dist/globals/operations/local/restoreVersion.d.ts +2 -1
  185. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  186. package/dist/globals/operations/local/restoreVersion.js +7 -4
  187. package/dist/globals/operations/local/update.d.ts +2 -1
  188. package/dist/globals/operations/local/update.d.ts.map +1 -1
  189. package/dist/globals/operations/local/update.js +7 -4
  190. package/dist/graphql/registerSchema.d.ts.map +1 -1
  191. package/dist/graphql/registerSchema.js +2 -3
  192. package/dist/graphql/schema/buildMutationInputType.d.ts +1 -1
  193. package/dist/graphql/schema/buildMutationInputType.d.ts.map +1 -1
  194. package/dist/graphql/schema/buildMutationInputType.js +22 -11
  195. package/dist/graphql/schema/buildObjectType.d.ts.map +1 -1
  196. package/dist/graphql/schema/buildObjectType.js +37 -13
  197. package/dist/graphql/schema/buildPoliciesType.d.ts.map +1 -1
  198. package/dist/graphql/schema/buildPoliciesType.js +3 -2
  199. package/dist/graphql/utilities/wrapCustomResolver.d.ts.map +1 -1
  200. package/dist/graphql/utilities/wrapCustomResolver.js +3 -3
  201. package/dist/localization/middleware.d.ts +1 -5
  202. package/dist/localization/middleware.d.ts.map +1 -1
  203. package/dist/localization/middleware.js +36 -40
  204. package/dist/payload.d.ts +0 -1
  205. package/dist/payload.d.ts.map +1 -1
  206. package/dist/payload.js +1 -1
  207. package/dist/translations/defaultOptions.js +3 -1
  208. package/dist/uploads/generateFileData.d.ts.map +1 -1
  209. package/dist/uploads/generateFileData.js +8 -6
  210. package/dist/uploads/getExternalFile.d.ts +9 -0
  211. package/dist/uploads/getExternalFile.d.ts.map +1 -0
  212. package/dist/uploads/getExternalFile.js +76 -0
  213. package/dist/uploads/imageResizer.d.ts.map +1 -1
  214. package/dist/uploads/imageResizer.js +4 -2
  215. package/dist/utilities/isolateObjectProperty.d.ts +5 -0
  216. package/dist/utilities/isolateObjectProperty.d.ts.map +1 -0
  217. package/dist/utilities/isolateObjectProperty.js +38 -0
  218. package/package.json +2 -2
  219. package/dist/uploads/getFileByURL.d.ts +0 -4
  220. package/dist/uploads/getFileByURL.d.ts.map +0 -1
  221. package/dist/uploads/getFileByURL.js +0 -38
  222. package/dist/utilities/isolateTransactionID.d.ts +0 -6
  223. package/dist/utilities/isolateTransactionID.d.ts.map +0 -1
  224. package/dist/utilities/isolateTransactionID.js +0 -38
@@ -89,4 +89,4 @@ function fieldIsLocalized(field) {
89
89
  return 'localized' in field && field.localized;
90
90
  }
91
91
 
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovXG5pbXBvcnQgdHlwZSB7IEVkaXRvclByb3BzIH0gZnJvbSAnQG1vbmFjby1lZGl0b3IvcmVhY3QnXG5pbXBvcnQgdHlwZSB7IFRGdW5jdGlvbiB9IGZyb20gJ2kxOG5leHQnXG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IG1vbmFjb2VkaXRvciBmcm9tICdtb25hY28tZWRpdG9yJyAvLyBJTVBPUlRBTlQgLSBETyBOT1QgUkVNT1ZFOiBUaGlzIGlzIHJlcXVpcmVkIGZvciBwbnBtJ3MgZGVmYXVsdCBpc29sYXRlZCBtb2RlIHRvIHdvcmsgLSBldmVuIHRob3VnaCB0aGUgaW1wb3J0IGlzIG5vdCB1c2VkLiBUaGlzIGlzIGR1ZSB0byBhIHR5cGVzY3JpcHQgYnVnOiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzQ3NjYzI2lzc3VlY29tbWVudC0xNTE5MTM4MTg5LiAodHNidWdpc29sYXRlZG1vZGUpXG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25hbERhdGVQcm9wcyB9IGZyb20gJy4uLy4uL2FkbWluL2NvbXBvbmVudHMvZWxlbWVudHMvRGF0ZVBpY2tlci90eXBlcydcbmltcG9ydCB0eXBlIHsgUHJvcHMgYXMgRXJyb3JQcm9wcyB9IGZyb20gJy4uLy4uL2FkbWluL2NvbXBvbmVudHMvZm9ybXMvRXJyb3IvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IERlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9GaWVsZERlc2NyaXB0aW9uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQcm9wcyBhcyBMYWJlbFByb3BzIH0gZnJvbSAnLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9MYWJlbC90eXBlcydcbmltcG9ydCB0eXBlIHsgUm93TGFiZWwgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL1Jvd0xhYmVsL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi4vLi4vYXV0aCdcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZywgVHlwZVdpdGhJRCB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCwgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IE9wZXJhdGlvbiwgV2hlcmUgfSBmcm9tICcuLi8uLi90eXBlcydcblxuZXhwb3J0IHR5cGUgRmllbGRIb29rQXJnczxUIGV4dGVuZHMgVHlwZVdpdGhJRCA9IGFueSwgUCA9IGFueSwgUyA9IGFueT4gPSB7XG4gIC8qKiBUaGUgY29sbGVjdGlvbiB3aGljaCB0aGUgZmllbGQgYmVsb25ncyB0by4gSWYgdGhlIGZpZWxkIGJlbG9uZ3MgdG8gYSBnbG9iYWwsIHRoaXMgd2lsbCBiZSBudWxsLiAqL1xuICBjb2xsZWN0aW9uOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgbnVsbFxuICBjb250ZXh0OiBSZXF1ZXN0Q29udGV4dFxuICAvKiogVGhlIGRhdGEgcGFzc2VkIHRvIHVwZGF0ZSB0aGUgZG9jdW1lbnQgd2l0aGluIGNyZWF0ZSBhbmQgdXBkYXRlIG9wZXJhdGlvbnMsIGFuZCB0aGUgZnVsbCBkb2N1bWVudCBpdHNlbGYgaW4gdGhlIGFmdGVyUmVhZCBob29rLiAqL1xuICBkYXRhPzogUGFydGlhbDxUPlxuICAvKiogVGhlIGZpZWxkIHdoaWNoIHRoZSBob29rIGlzIHJ1bm5pbmcgYWdhaW5zdC4gKi9cbiAgZmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YVxuICAvKiogQm9vbGVhbiB0byBkZW5vdGUgaWYgdGhpcyBob29rIGlzIHJ1bm5pbmcgYWdhaW5zdCBmaW5kaW5nIG9uZSwgb3IgZmluZGluZyBtYW55IHdpdGhpbiB0aGUgYWZ0ZXJSZWFkIGhvb2suICovXG4gIGZpbmRNYW55PzogYm9vbGVhblxuICAvKiogVGhlIGdsb2JhbCB3aGljaCB0aGUgZmllbGQgYmVsb25ncyB0by4gSWYgdGhlIGZpZWxkIGJlbG9uZ3MgdG8gYSBjb2xsZWN0aW9uLCB0aGlzIHdpbGwgYmUgbnVsbC4gKi9cbiAgZ2xvYmFsOiBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfCBudWxsXG4gIC8qKiBBIHN0cmluZyByZWxhdGluZyB0byB3aGljaCBvcGVyYXRpb24gdGhlIGZpZWxkIHR5cGUgaXMgY3VycmVudGx5IGV4ZWN1dGluZyB3aXRoaW4uIFVzZWZ1bCB3aXRoaW4gYmVmb3JlVmFsaWRhdGUsIGJlZm9yZUNoYW5nZSwgYW5kIGFmdGVyQ2hhbmdlIGhvb2tzIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBjcmVhdGUgYW5kIHVwZGF0ZSBvcGVyYXRpb25zLiAqL1xuICBvcGVyYXRpb24/OiAnY3JlYXRlJyB8ICdkZWxldGUnIHwgJ3JlYWQnIHwgJ3VwZGF0ZSdcbiAgLyoqIFRoZSBmdWxsIG9yaWdpbmFsIGRvY3VtZW50IGluIGB1cGRhdGVgIG9wZXJhdGlvbnMuIEluIHRoZSBgYWZ0ZXJDaGFuZ2VgIGhvb2ssIHRoaXMgaXMgdGhlIHJlc3VsdGluZyBkb2N1bWVudCBvZiB0aGUgb3BlcmF0aW9uLiAqL1xuICBvcmlnaW5hbERvYz86IFRcbiAgLyoqIFRoZSBkb2N1bWVudCBiZWZvcmUgY2hhbmdlcyB3ZXJlIGFwcGxpZWQsIG9ubHkgaW4gYGFmdGVyQ2hhbmdlYCBob29rcy4gKi9cbiAgcHJldmlvdXNEb2M/OiBUXG4gIC8qKiBUaGUgc2libGluZyBkYXRhIGZyb20gdGhlIHByZXZpb3VzIGRvY3VtZW50IGluIGBhZnRlckNoYW5nZWAgaG9vay4gKi9cbiAgcHJldmlvdXNTaWJsaW5nRG9jPzogVFxuICBwcmV2aW91c1ZhbHVlPzogUFxuICAvKiogVGhlIEV4cHJlc3MgcmVxdWVzdCBvYmplY3QuIEl0IGlzIG1vY2tlZCBmb3IgTG9jYWwgQVBJIG9wZXJhdGlvbnMuICovXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgLyoqIFRoZSBzaWJsaW5nIGRhdGEgcGFzc2VkIHRvIGEgZmllbGQgdGhhdCB0aGUgaG9vayBpcyBydW5uaW5nIGFnYWluc3QuICovXG4gIHNpYmxpbmdEYXRhOiBQYXJ0aWFsPFM+XG4gIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkLiAqL1xuICB2YWx1ZT86IFBcbn1cblxuZXhwb3J0IHR5cGUgRmllbGRIb29rPFQgZXh0ZW5kcyBUeXBlV2l0aElEID0gYW55LCBQID0gYW55LCBTID0gYW55PiA9IChcbiAgYXJnczogRmllbGRIb29rQXJnczxULCBQLCBTPixcbikgPT4gUCB8IFByb21pc2U8UD5cblxuZXhwb3J0IHR5cGUgRmllbGRBY2Nlc3M8VCBleHRlbmRzIFR5cGVXaXRoSUQgPSBhbnksIFAgPSBhbnksIFUgPSBhbnk+ID0gKGFyZ3M6IHtcbiAgLyoqXG4gICAqIFRoZSBpbmNvbWluZyBkYXRhIHVzZWQgdG8gYGNyZWF0ZWAgb3IgYHVwZGF0ZWAgdGhlIGRvY3VtZW50IHdpdGguIGBkYXRhYCBpcyB1bmRlZmluZWQgZHVyaW5nIHRoZSBgcmVhZGAgb3BlcmF0aW9uLlxuICAgKi9cbiAgZGF0YT86IFBhcnRpYWw8VD5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBkYXRhIG9mIHRoZSBkb2N1bWVudCBiZWZvcmUgdGhlIGB1cGRhdGVgIGlzIGFwcGxpZWQuIGBkb2NgIGlzIHVuZGVmaW5lZCBkdXJpbmcgdGhlIGBjcmVhdGVgIG9wZXJhdGlvbi5cbiAgICovXG4gIGRvYz86IFRcbiAgLyoqXG4gICAqIFRoZSBgaWRgIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGJlaW5nIHJlYWQgb3IgdXBkYXRlZC4gYGlkYCBpcyB1bmRlZmluZWQgZHVyaW5nIHRoZSBgY3JlYXRlYCBvcGVyYXRpb24uXG4gICAqL1xuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICAvKiogVGhlIGBFeHByZXNzYCByZXF1ZXN0IG9iamVjdCBjb250YWluaW5nIHRoZSBjdXJyZW50bHkgYXV0aGVudGljYXRlZCBgdXNlcmAgKi9cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdDxVPlxuICAvKipcbiAgICogSW1tZWRpYXRlbHkgYWRqYWNlbnQgZGF0YSB0byB0aGlzIGZpZWxkLiBGb3IgZXhhbXBsZSwgaWYgdGhpcyBpcyBhIGBncm91cGAgZmllbGQsIHRoZW4gYHNpYmxpbmdEYXRhYCB3aWxsIGJlIHRoZSBvdGhlciBmaWVsZHMgd2l0aGluIHRoZSBncm91cC5cbiAgICovXG4gIHNpYmxpbmdEYXRhPzogUGFydGlhbDxQPlxufSkgPT4gUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW5cblxuZXhwb3J0IHR5cGUgQ29uZGl0aW9uPFQgZXh0ZW5kcyBUeXBlV2l0aElEID0gYW55LCBQID0gYW55PiA9IChcbiAgZGF0YTogUGFydGlhbDxUPixcbiAgc2libGluZ0RhdGE6IFBhcnRpYWw8UD4sXG4gIHsgdXNlciB9OiB7IHVzZXI6IFVzZXIgfSxcbikgPT4gYm9vbGVhblxuXG5leHBvcnQgdHlwZSBGaWx0ZXJPcHRpb25zUHJvcHM8VCA9IGFueT4gPSB7XG4gIGRhdGE6IFRcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICByZWxhdGlvblRvOiBzdHJpbmdcbiAgc2libGluZ0RhdGE6IHVua25vd25cbiAgdXNlcjogUGFydGlhbDxVc2VyPlxufVxuXG5leHBvcnQgdHlwZSBGaWx0ZXJPcHRpb25zPFQgPSBhbnk+ID1cbiAgfCAoKG9wdGlvbnM6IEZpbHRlck9wdGlvbnNQcm9wczxUPikgPT4gUHJvbWlzZTxXaGVyZT4gfCBXaGVyZSlcbiAgfCBXaGVyZVxuICB8IG51bGxcblxudHlwZSBBZG1pbiA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGNvbXBvbmVudHM/OiB7XG4gICAgQ2VsbD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgIEZpZWxkPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gICAgRmlsdGVyPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gIH1cbiAgLyoqXG4gICAqIFlvdSBjYW4gcHJvZ3JhbW1hdGljYWxseSBzaG93IC8gaGlkZSBmaWVsZHMgYmFzZWQgb24gd2hhdCBvdGhlciBmaWVsZHMgYXJlIGRvaW5nLlxuICAgKiBUaGlzIGlzIGFsc28gcnVuIG9uIHRoZSBzZXJ2ZXIsIHRvIGRldGVybWluZSBpZiB0aGUgZmllbGQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICovXG4gIGNvbmRpdGlvbj86IENvbmRpdGlvblxuICBkZXNjcmlwdGlvbj86IERlc2NyaXB0aW9uXG4gIGRpc2FibGVCdWxrRWRpdD86IGJvb2xlYW5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGhpZGRlbj86IGJvb2xlYW5cbiAgcG9zaXRpb24/OiAnc2lkZWJhcidcbiAgcmVhZE9ubHk/OiBib29sZWFuXG4gIHN0eWxlPzogQ1NTUHJvcGVydGllc1xuICB3aWR0aD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBMYWJlbHMgPSB7XG4gIHBsdXJhbDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xuICBzaW5ndWxhcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBWYWxpZGF0ZU9wdGlvbnM8VERhdGEsIFRTaWJsaW5nRGF0YSwgVEZpZWxkQ29uZmlnPiA9IHtcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogUGFydGlhbDxURGF0YT5cbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgb3BlcmF0aW9uPzogT3BlcmF0aW9uXG4gIHBheWxvYWQ/OiBQYXlsb2FkXG4gIHJlcT86IFBheWxvYWRSZXF1ZXN0XG4gIHNpYmxpbmdEYXRhOiBQYXJ0aWFsPFRTaWJsaW5nRGF0YT5cbiAgdDogVEZ1bmN0aW9uXG4gIHVzZXI/OiBQYXJ0aWFsPFVzZXI+XG59ICYgVEZpZWxkQ29uZmlnXG5cbi8vIFRPRE86IEhhdmluZyBURmllbGRDb25maWcgYXMgYW55IGJyZWFrcyBhbGwgdHlwZSBjaGVja2luZyAvIGF1dG8tY29tcGxldGlvbnMgZm9yIHRoZSBiYXNlIFZhbGlkYXRlT3B0aW9ucyBwcm9wZXJ0aWVzLlxuZXhwb3J0IHR5cGUgVmFsaWRhdGU8VFZhbHVlID0gYW55LCBURGF0YSA9IGFueSwgVFNpYmxpbmdEYXRhID0gYW55LCBURmllbGRDb25maWcgPSBhbnk+ID0gKFxuICB2YWx1ZTogVFZhbHVlLFxuICBvcHRpb25zOiBWYWxpZGF0ZU9wdGlvbnM8VERhdGEsIFRTaWJsaW5nRGF0YSwgVEZpZWxkQ29uZmlnPixcbikgPT4gUHJvbWlzZTxzdHJpbmcgfCB0cnVlPiB8IHN0cmluZyB8IHRydWVcblxuZXhwb3J0IHR5cGUgT3B0aW9uT2JqZWN0ID0ge1xuICBsYWJlbDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xuICB2YWx1ZTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIE9wdGlvbiA9IE9wdGlvbk9iamVjdCB8IHN0cmluZ1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQmFzZSB7XG4gIGFjY2Vzcz86IHtcbiAgICBjcmVhdGU/OiBGaWVsZEFjY2Vzc1xuICAgIHJlYWQ/OiBGaWVsZEFjY2Vzc1xuICAgIHVwZGF0ZT86IEZpZWxkQWNjZXNzXG4gIH1cbiAgYWRtaW4/OiBBZG1pblxuICAvKiogRXh0ZW5zaW9uIHBvaW50IHRvIGFkZCB5b3VyIGN1c3RvbSBkYXRhLiAqL1xuICBjdXN0b20/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIGRlZmF1bHRWYWx1ZT86IGFueVxuICBoaWRkZW4/OiBib29sZWFuXG4gIGhvb2tzPzoge1xuICAgIGFmdGVyQ2hhbmdlPzogRmllbGRIb29rW11cbiAgICBhZnRlclJlYWQ/OiBGaWVsZEhvb2tbXVxuICAgIGJlZm9yZUNoYW5nZT86IEZpZWxkSG9va1tdXG4gICAgYmVmb3JlVmFsaWRhdGU/OiBGaWVsZEhvb2tbXVxuICB9XG4gIGluZGV4PzogYm9vbGVhblxuICBsYWJlbD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBmYWxzZSB8IHN0cmluZ1xuICBsb2NhbGl6ZWQ/OiBib29sZWFuXG4gIG5hbWU6IHN0cmluZ1xuICByZXF1aXJlZD86IGJvb2xlYW5cbiAgc2F2ZVRvSldUPzogYm9vbGVhbiB8IHN0cmluZ1xuICB1bmlxdWU/OiBib29sZWFuXG4gIHZhbGlkYXRlPzogVmFsaWRhdGVcbn1cblxuZXhwb3J0IHR5cGUgTnVtYmVyRmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgLyoqIFNldCB0aGlzIHByb3BlcnR5IHRvIGEgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBicm93c2VyIGF1dG9jb21wbGV0ZS4gKi9cbiAgICBhdXRvQ29tcGxldGU/OiBzdHJpbmdcbiAgICBjb21wb25lbnRzPzoge1xuICAgICAgRXJyb3I/OiBSZWFjdC5Db21wb25lbnRUeXBlPEVycm9yUHJvcHM+XG4gICAgICBMYWJlbD86IFJlYWN0LkNvbXBvbmVudFR5cGU8TGFiZWxQcm9wcz5cbiAgICAgIGFmdGVySW5wdXQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgICAgYmVmb3JlSW5wdXQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgIH1cbiAgICAvKiogU2V0IHRoaXMgcHJvcGVydHkgdG8gZGVmaW5lIGEgcGxhY2Vob2xkZXIgc3RyaW5nIGZvciB0aGUgZmllbGQuICovXG4gICAgcGxhY2Vob2xkZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG4gICAgLyoqIFNldCBhIHZhbHVlIGZvciB0aGUgbnVtYmVyIGZpZWxkIHRvIGluY3JlbWVudCAvIGRlY3JlbWVudCB1c2luZyBicm93c2VyIGNvbnRyb2xzLiAqL1xuICAgIHN0ZXA/OiBudW1iZXJcbiAgfVxuICAvKiogTWF4aW11bSB2YWx1ZSBhY2NlcHRlZC4gVXNlZCBpbiB0aGUgZGVmYXVsdCBgdmFsaWRhdGlvbmAgZnVuY3Rpb24uICovXG4gIG1heD86IG51bWJlclxuICAvKiogTWluaW11bSB2YWx1ZSBhY2NlcHRlZC4gVXNlZCBpbiB0aGUgZGVmYXVsdCBgdmFsaWRhdGlvbmAgZnVuY3Rpb24uICovXG4gIG1pbj86IG51bWJlclxuICB0eXBlOiAnbnVtYmVyJ1xufSAmIChcbiAgICB8IHtcbiAgICAgICAgLyoqIE1ha2VzIHRoaXMgZmllbGQgYW4gb3JkZXJlZCBhcnJheSBvZiBudW1iZXJzIGluc3RlYWQgb2YganVzdCBhIHNpbmdsZSBudW1iZXIuICovXG4gICAgICAgIGhhc01hbnk6IHRydWVcbiAgICAgICAgLyoqIE1heGltdW0gbnVtYmVyIG9mIG51bWJlcnMgaW4gdGhlIG51bWJlcnMgYXJyYXksIGlmIGBoYXNNYW55YCBpcyBzZXQgdG8gdHJ1ZS4gKi9cbiAgICAgICAgbWF4Um93cz86IG51bWJlclxuICAgICAgICAvKiogTWluaW11bSBudW1iZXIgb2YgbnVtYmVycyBpbiB0aGUgbnVtYmVycyBhcnJheSwgaWYgYGhhc01hbnlgIGlzIHNldCB0byB0cnVlLiAqL1xuICAgICAgICBtaW5Sb3dzPzogbnVtYmVyXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIC8qKiBNYWtlcyB0aGlzIGZpZWxkIGFuIG9yZGVyZWQgYXJyYXkgb2YgbnVtYmVycyBpbnN0ZWFkIG9mIGp1c3QgYSBzaW5nbGUgbnVtYmVyLiAqL1xuICAgICAgICBoYXNNYW55PzogZmFsc2UgfCB1bmRlZmluZWRcbiAgICAgICAgLyoqIE1heGltdW0gbnVtYmVyIG9mIG51bWJlcnMgaW4gdGhlIG51bWJlcnMgYXJyYXksIGlmIGBoYXNNYW55YCBpcyBzZXQgdG8gdHJ1ZS4gKi9cbiAgICAgICAgbWF4Um93cz86IHVuZGVmaW5lZFxuICAgICAgICAvKiogTWluaW11bSBudW1iZXIgb2YgbnVtYmVycyBpbiB0aGUgbnVtYmVycyBhcnJheSwgaWYgYGhhc01hbnlgIGlzIHNldCB0byB0cnVlLiAqL1xuICAgICAgICBtaW5Sb3dzPzogdW5kZWZpbmVkXG4gICAgICB9XG4gIClcblxuZXhwb3J0IHR5cGUgVGV4dEZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGF1dG9Db21wbGV0ZT86IHN0cmluZ1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgICAgYWZ0ZXJJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICBiZWZvcmVJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgfVxuICAgIHBsYWNlaG9sZGVyPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xuICAgIHJ0bD86IGJvb2xlYW5cbiAgfVxuICBtYXhMZW5ndGg/OiBudW1iZXJcbiAgbWluTGVuZ3RoPzogbnVtYmVyXG4gIHR5cGU6ICd0ZXh0J1xufVxuXG5leHBvcnQgdHlwZSBFbWFpbEZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGF1dG9Db21wbGV0ZT86IHN0cmluZ1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgICAgYWZ0ZXJJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICBiZWZvcmVJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgfVxuICAgIHBsYWNlaG9sZGVyPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xuICB9XG4gIHR5cGU6ICdlbWFpbCdcbn1cblxuZXhwb3J0IHR5cGUgVGV4dGFyZWFGaWVsZCA9IEZpZWxkQmFzZSAmIHtcbiAgYWRtaW4/OiBBZG1pbiAmIHtcbiAgICBjb21wb25lbnRzPzoge1xuICAgICAgRXJyb3I/OiBSZWFjdC5Db21wb25lbnRUeXBlPEVycm9yUHJvcHM+XG4gICAgICBMYWJlbD86IFJlYWN0LkNvbXBvbmVudFR5cGU8TGFiZWxQcm9wcz5cbiAgICAgIGFmdGVySW5wdXQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgICAgYmVmb3JlSW5wdXQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgIH1cbiAgICBwbGFjZWhvbGRlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBzdHJpbmdcbiAgICByb3dzPzogbnVtYmVyXG4gICAgcnRsPzogYm9vbGVhblxuICB9XG4gIG1heExlbmd0aD86IG51bWJlclxuICBtaW5MZW5ndGg/OiBudW1iZXJcbiAgdHlwZTogJ3RleHRhcmVhJ1xufVxuXG5leHBvcnQgdHlwZSBDaGVja2JveEZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgICAgYWZ0ZXJJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICBiZWZvcmVJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgfVxuICB9XG4gIHR5cGU6ICdjaGVja2JveCdcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZUZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgICAgYWZ0ZXJJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICBiZWZvcmVJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgfVxuICAgIGRhdGU/OiBDb25kaXRpb25hbERhdGVQcm9wc1xuICAgIHBsYWNlaG9sZGVyPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xuICB9XG4gIHR5cGU6ICdkYXRlJ1xufVxuXG5leHBvcnQgdHlwZSBHcm91cEZpZWxkID0gT21pdDxGaWVsZEJhc2UsICdyZXF1aXJlZCcgfCAndmFsaWRhdGlvbic+ICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGhpZGVHdXR0ZXI/OiBib29sZWFuXG4gIH1cbiAgZmllbGRzOiBGaWVsZFtdXG4gIC8qKiBDdXN0b21pemUgZ2VuZXJhdGVkIEdyYXBoUUwgYW5kIFR5cGVzY3JpcHQgc2NoZW1hIG5hbWVzLlxuICAgKiBCeSBkZWZhdWx0IGl0IGlzIGJvdW5kIHRvIHRoZSBjb2xsZWN0aW9uLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd291bGQgbGlrZSB0byBnZW5lcmF0ZSBhIHRvcCBsZXZlbCB0eXBlIHRvIHNoYXJlIGFtb25nc3QgY29sbGVjdGlvbnMvZmllbGRzLlxuICAgKiAqKk5vdGUqKjogVG9wIGxldmVsIHR5cGVzIGNhbiBjb2xsaWRlLCBlbnN1cmUgdGhleSBhcmUgdW5pcXVlIGFtb25nIGNvbGxlY3Rpb25zLCBhcnJheXMsIGdyb3VwcywgYmxvY2tzLCB0YWJzLlxuICAgKi9cbiAgaW50ZXJmYWNlTmFtZT86IHN0cmluZ1xuICB0eXBlOiAnZ3JvdXAnXG59XG5cbmV4cG9ydCB0eXBlIFJvd0FkbWluID0gT21pdDxBZG1pbiwgJ2Rlc2NyaXB0aW9uJz5cblxuZXhwb3J0IHR5cGUgUm93RmllbGQgPSBPbWl0PEZpZWxkQmFzZSwgJ2FkbWluJyB8ICdsYWJlbCcgfCAnbmFtZSc+ICYge1xuICBhZG1pbj86IFJvd0FkbWluXG4gIGZpZWxkczogRmllbGRbXVxuICB0eXBlOiAncm93J1xufVxuXG5leHBvcnQgdHlwZSBDb2xsYXBzaWJsZUZpZWxkID0gT21pdDxGaWVsZEJhc2UsICdsYWJlbCcgfCAnbmFtZSc+ICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGluaXRDb2xsYXBzZWQ/OiBib29sZWFuIHwgZmFsc2VcbiAgfVxuICBmaWVsZHM6IEZpZWxkW11cbiAgbGFiZWw6IFJvd0xhYmVsXG4gIHR5cGU6ICdjb2xsYXBzaWJsZSdcbn1cblxuZXhwb3J0IHR5cGUgVGFic0FkbWluID0gT21pdDxBZG1pbiwgJ2Rlc2NyaXB0aW9uJz5cblxudHlwZSBUYWJCYXNlID0gT21pdDxGaWVsZEJhc2UsICdyZXF1aXJlZCcgfCAndmFsaWRhdGlvbic+ICYge1xuICBkZXNjcmlwdGlvbj86IERlc2NyaXB0aW9uXG4gIGZpZWxkczogRmllbGRbXVxuICBpbnRlcmZhY2VOYW1lPzogc3RyaW5nXG4gIHNhdmVUb0pXVD86IGJvb2xlYW4gfCBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTmFtZWRUYWIgPSBUYWJCYXNlICYge1xuICAvKiogQ3VzdG9taXplIGdlbmVyYXRlZCBHcmFwaFFMIGFuZCBUeXBlc2NyaXB0IHNjaGVtYSBuYW1lcy5cbiAgICogVGhlIHNsdWcgaXMgdXNlZCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd291bGQgbGlrZSB0byBnZW5lcmF0ZSBhIHRvcCBsZXZlbCB0eXBlIHRvIHNoYXJlIGFtb25nc3QgY29sbGVjdGlvbnMvZmllbGRzLlxuICAgKiAqKk5vdGUqKjogVG9wIGxldmVsIHR5cGVzIGNhbiBjb2xsaWRlLCBlbnN1cmUgdGhleSBhcmUgdW5pcXVlIGFtb25nIGNvbGxlY3Rpb25zLCBhcnJheXMsIGdyb3VwcywgYmxvY2tzLCB0YWJzLlxuICAgKi9cbiAgaW50ZXJmYWNlTmFtZT86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBVbm5hbWVkVGFiID0gT21pdDxUYWJCYXNlLCAnbmFtZSc+ICYge1xuICBpbnRlcmZhY2VOYW1lPzogbmV2ZXJcbiAgbGFiZWw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBzdHJpbmdcbiAgbG9jYWxpemVkPzogbmV2ZXJcbn1cblxuZXhwb3J0IHR5cGUgVGFiID0gTmFtZWRUYWIgfCBVbm5hbWVkVGFiXG5cbmV4cG9ydCB0eXBlIFRhYnNGaWVsZCA9IE9taXQ8RmllbGRCYXNlLCAnYWRtaW4nIHwgJ2xvY2FsaXplZCcgfCAnbmFtZScgfCAnc2F2ZVRvSldUJz4gJiB7XG4gIGFkbWluPzogVGFic0FkbWluXG4gIHRhYnM6IFRhYltdXG4gIHR5cGU6ICd0YWJzJ1xufVxuXG5leHBvcnQgdHlwZSBUYWJBc0ZpZWxkID0gVGFiICYge1xuICBuYW1lPzogc3RyaW5nXG4gIHR5cGU6ICd0YWInXG59XG5cbmV4cG9ydCB0eXBlIFVJRmllbGQgPSB7XG4gIGFkbWluOiB7XG4gICAgY29tcG9uZW50cz86IHtcbiAgICAgIENlbGw/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgICAgIEZpZWxkOiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgICAgIEZpbHRlcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgIH1cbiAgICBjb25kaXRpb24/OiBDb25kaXRpb25cbiAgICBkaXNhYmxlQnVsa0VkaXQ/OiBib29sZWFuXG4gICAgcG9zaXRpb24/OiBzdHJpbmdcbiAgICB3aWR0aD86IHN0cmluZ1xuICB9XG4gIC8qKiBFeHRlbnNpb24gcG9pbnQgdG8gYWRkIHlvdXIgY3VzdG9tIGRhdGEuICovXG4gIGN1c3RvbT86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgbGFiZWw/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICB0eXBlOiAndWknXG59XG5cbmV4cG9ydCB0eXBlIFVwbG9hZEZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IHtcbiAgICBjb21wb25lbnRzPzoge1xuICAgICAgRXJyb3I/OiBSZWFjdC5Db21wb25lbnRUeXBlPEVycm9yUHJvcHM+XG4gICAgICBMYWJlbD86IFJlYWN0LkNvbXBvbmVudFR5cGU8TGFiZWxQcm9wcz5cbiAgICB9XG4gIH1cbiAgZmlsdGVyT3B0aW9ucz86IEZpbHRlck9wdGlvbnNcbiAgbWF4RGVwdGg/OiBudW1iZXJcbiAgcmVsYXRpb25Ubzogc3RyaW5nXG4gIHR5cGU6ICd1cGxvYWQnXG59XG5cbnR5cGUgQ29kZUFkbWluID0gQWRtaW4gJiB7XG4gIGNvbXBvbmVudHM/OiB7XG4gICAgRXJyb3I/OiBSZWFjdC5Db21wb25lbnRUeXBlPEVycm9yUHJvcHM+XG4gICAgTGFiZWw/OiBSZWFjdC5Db21wb25lbnRUeXBlPExhYmVsUHJvcHM+XG4gIH1cbiAgZWRpdG9yT3B0aW9ucz86IEVkaXRvclByb3BzWydvcHRpb25zJ11cbiAgbGFuZ3VhZ2U/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ29kZUZpZWxkID0gT21pdDxGaWVsZEJhc2UsICdhZG1pbic+ICYge1xuICBhZG1pbj86IENvZGVBZG1pblxuICBtYXhMZW5ndGg/OiBudW1iZXJcbiAgbWluTGVuZ3RoPzogbnVtYmVyXG4gIHR5cGU6ICdjb2RlJ1xufVxuXG50eXBlIEpTT05BZG1pbiA9IEFkbWluICYge1xuICBjb21wb25lbnRzPzoge1xuICAgIEVycm9yPzogUmVhY3QuQ29tcG9uZW50VHlwZTxFcnJvclByb3BzPlxuICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICB9XG4gIGVkaXRvck9wdGlvbnM/OiBFZGl0b3JQcm9wc1snb3B0aW9ucyddXG59XG5cbmV4cG9ydCB0eXBlIEpTT05GaWVsZCA9IE9taXQ8RmllbGRCYXNlLCAnYWRtaW4nPiAmIHtcbiAgYWRtaW4/OiBKU09OQWRtaW5cbiAgdHlwZTogJ2pzb24nXG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgIH1cbiAgICBpc0NsZWFyYWJsZT86IGJvb2xlYW5cbiAgICBpc1NvcnRhYmxlPzogYm9vbGVhblxuICB9XG4gIGhhc01hbnk/OiBib29sZWFuXG4gIG9wdGlvbnM6IE9wdGlvbltdXG4gIHR5cGU6ICdzZWxlY3QnXG59XG5cbnR5cGUgU2hhcmVkUmVsYXRpb25zaGlwUHJvcGVydGllcyA9IEZpZWxkQmFzZSAmIHtcbiAgZmlsdGVyT3B0aW9ucz86IEZpbHRlck9wdGlvbnNcbiAgaGFzTWFueT86IGJvb2xlYW5cbiAgbWF4RGVwdGg/OiBudW1iZXJcbiAgdHlwZTogJ3JlbGF0aW9uc2hpcCdcbn0gJiAoXG4gICAgfCB7XG4gICAgICAgIGhhc01hbnk6IHRydWVcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSAnbWF4Um93cycgaW5zdGVhZFxuICAgICAgICAgKi9cbiAgICAgICAgbWF4PzogbnVtYmVyXG4gICAgICAgIG1heFJvd3M/OiBudW1iZXJcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSAnbWluUm93cycgaW5zdGVhZFxuICAgICAgICAgKi9cbiAgICAgICAgbWluPzogbnVtYmVyXG4gICAgICAgIG1pblJvd3M/OiBudW1iZXJcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgaGFzTWFueT86IGZhbHNlIHwgdW5kZWZpbmVkXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgJ21heFJvd3MnIGluc3RlYWRcbiAgICAgICAgICovXG4gICAgICAgIG1heD86IHVuZGVmaW5lZFxuICAgICAgICBtYXhSb3dzPzogdW5kZWZpbmVkXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgJ21pblJvd3MnIGluc3RlYWRcbiAgICAgICAgICovXG4gICAgICAgIG1pbj86IHVuZGVmaW5lZFxuICAgICAgICBtaW5Sb3dzPzogdW5kZWZpbmVkXG4gICAgICB9XG4gIClcblxudHlwZSBSZWxhdGlvbnNoaXBBZG1pbiA9IEFkbWluICYge1xuICBhbGxvd0NyZWF0ZT86IGJvb2xlYW5cbiAgY29tcG9uZW50cz86IHtcbiAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICBMYWJlbD86IFJlYWN0LkNvbXBvbmVudFR5cGU8TGFiZWxQcm9wcz5cbiAgfVxuICBpc1NvcnRhYmxlPzogYm9vbGVhblxufVxuZXhwb3J0IHR5cGUgUG9seW1vcnBoaWNSZWxhdGlvbnNoaXBGaWVsZCA9IFNoYXJlZFJlbGF0aW9uc2hpcFByb3BlcnRpZXMgJiB7XG4gIGFkbWluPzogUmVsYXRpb25zaGlwQWRtaW4gJiB7XG4gICAgc29ydE9wdGlvbnM/OiB7IFtjb2xsZWN0aW9uU2x1Zzogc3RyaW5nXTogc3RyaW5nIH1cbiAgfVxuICByZWxhdGlvblRvOiBzdHJpbmdbXVxufVxuZXhwb3J0IHR5cGUgU2luZ2xlUmVsYXRpb25zaGlwRmllbGQgPSBTaGFyZWRSZWxhdGlvbnNoaXBQcm9wZXJ0aWVzICYge1xuICBhZG1pbj86IFJlbGF0aW9uc2hpcEFkbWluICYge1xuICAgIHNvcnRPcHRpb25zPzogc3RyaW5nXG4gIH1cbiAgcmVsYXRpb25Ubzogc3RyaW5nXG59XG5leHBvcnQgdHlwZSBSZWxhdGlvbnNoaXBGaWVsZCA9IFBvbHltb3JwaGljUmVsYXRpb25zaGlwRmllbGQgfCBTaW5nbGVSZWxhdGlvbnNoaXBGaWVsZFxuXG5leHBvcnQgdHlwZSBWYWx1ZVdpdGhSZWxhdGlvbiA9IHtcbiAgcmVsYXRpb25Ubzogc3RyaW5nXG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFZhbHVlV2l0aFJlbGF0aW9uIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ3JlbGF0aW9uVG8nIGluIHZhbHVlICYmICd2YWx1ZScgaW4gdmFsdWVcbn1cblxuZXhwb3J0IHR5cGUgUmVsYXRpb25zaGlwVmFsdWUgPVxuICB8IChudW1iZXIgfCBzdHJpbmcpW11cbiAgfCBWYWx1ZVdpdGhSZWxhdGlvblxuICB8IFZhbHVlV2l0aFJlbGF0aW9uW11cbiAgfCAobnVtYmVyIHwgc3RyaW5nKVxuXG5leHBvcnQgdHlwZSBSaWNoVGV4dEZpZWxkPFxuICBWYWx1ZSBleHRlbmRzIG9iamVjdCA9IGFueSxcbiAgQWRhcHRlclByb3BzID0gYW55LFxuICBFeHRyYVByb3BlcnRpZXMgPSB7fSxcbj4gPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW5cbiAgZWRpdG9yPzogUmljaFRleHRBZGFwdGVyPFZhbHVlLCBBZGFwdGVyUHJvcHMsIEFkYXB0ZXJQcm9wcz5cbiAgdHlwZTogJ3JpY2hUZXh0J1xufSAmIEV4dHJhUHJvcGVydGllc1xuXG5leHBvcnQgdHlwZSBBcnJheUZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBSb3dMYWJlbD86IFJvd0xhYmVsXG4gICAgfSAmIEFkbWluWydjb21wb25lbnRzJ11cbiAgICBpbml0Q29sbGFwc2VkPzogYm9vbGVhbiB8IGZhbHNlXG4gIH1cbiAgZmllbGRzOiBGaWVsZFtdXG4gIC8qKiBDdXN0b21pemUgZ2VuZXJhdGVkIEdyYXBoUUwgYW5kIFR5cGVzY3JpcHQgc2NoZW1hIG5hbWVzLlxuICAgKiBCeSBkZWZhdWx0IGl0IGlzIGJvdW5kIHRvIHRoZSBjb2xsZWN0aW9uLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd291bGQgbGlrZSB0byBnZW5lcmF0ZSBhIHRvcCBsZXZlbCB0eXBlIHRvIHNoYXJlIGFtb25nc3QgY29sbGVjdGlvbnMvZmllbGRzLlxuICAgKiAqKk5vdGUqKjogVG9wIGxldmVsIHR5cGVzIGNhbiBjb2xsaWRlLCBlbnN1cmUgdGhleSBhcmUgdW5pcXVlIGFtb25nIGNvbGxlY3Rpb25zLCBhcnJheXMsIGdyb3VwcywgYmxvY2tzLCB0YWJzLlxuICAgKi9cbiAgaW50ZXJmYWNlTmFtZT86IHN0cmluZ1xuICBsYWJlbHM/OiBMYWJlbHNcbiAgbWF4Um93cz86IG51bWJlclxuICBtaW5Sb3dzPzogbnVtYmVyXG4gIHR5cGU6ICdhcnJheSdcbn1cblxuZXhwb3J0IHR5cGUgUmFkaW9GaWVsZCA9IEZpZWxkQmFzZSAmIHtcbiAgYWRtaW4/OiBBZG1pbiAmIHtcbiAgICBjb21wb25lbnRzPzoge1xuICAgICAgRXJyb3I/OiBSZWFjdC5Db21wb25lbnRUeXBlPEVycm9yUHJvcHM+XG4gICAgICBMYWJlbD86IFJlYWN0LkNvbXBvbmVudFR5cGU8TGFiZWxQcm9wcz5cbiAgICB9XG4gICAgbGF5b3V0PzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuICB9XG4gIG9wdGlvbnM6IE9wdGlvbltdXG4gIHR5cGU6ICdyYWRpbydcbn1cblxuZXhwb3J0IHR5cGUgQmxvY2sgPSB7XG4gIGZpZWxkczogRmllbGRbXVxuICAvKiogQGRlcHJlY2F0ZWQgLSBwbGVhc2UgbWlncmF0ZSB0byB0aGUgaW50ZXJmYWNlTmFtZSBwcm9wZXJ0eSBpbnN0ZWFkLiAqL1xuICBncmFwaFFMPzoge1xuICAgIHNpbmd1bGFyTmFtZT86IHN0cmluZ1xuICB9XG4gIGltYWdlQWx0VGV4dD86IHN0cmluZ1xuICBpbWFnZVVSTD86IHN0cmluZ1xuICAvKiogQ3VzdG9taXplIGdlbmVyYXRlZCBHcmFwaFFMIGFuZCBUeXBlc2NyaXB0IHNjaGVtYSBuYW1lcy5cbiAgICogVGhlIHNsdWcgaXMgdXNlZCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd291bGQgbGlrZSB0byBnZW5lcmF0ZSBhIHRvcCBsZXZlbCB0eXBlIHRvIHNoYXJlIGFtb25nc3QgY29sbGVjdGlvbnMvZmllbGRzLlxuICAgKiAqKk5vdGUqKjogVG9wIGxldmVsIHR5cGVzIGNhbiBjb2xsaWRlLCBlbnN1cmUgdGhleSBhcmUgdW5pcXVlIGFtb25nIGNvbGxlY3Rpb25zLCBhcnJheXMsIGdyb3VwcywgYmxvY2tzLCB0YWJzLlxuICAgKi9cbiAgaW50ZXJmYWNlTmFtZT86IHN0cmluZ1xuICBsYWJlbHM/OiBMYWJlbHNcbiAgc2x1Zzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEJsb2NrRmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgaW5pdENvbGxhcHNlZD86IGJvb2xlYW4gfCBmYWxzZVxuICB9XG4gIGJsb2NrczogQmxvY2tbXVxuICBkZWZhdWx0VmFsdWU/OiB1bmtub3duXG4gIGxhYmVscz86IExhYmVsc1xuICBtYXhSb3dzPzogbnVtYmVyXG4gIG1pblJvd3M/OiBudW1iZXJcbiAgdHlwZTogJ2Jsb2Nrcydcbn1cblxuZXhwb3J0IHR5cGUgUG9pbnRGaWVsZCA9IEZpZWxkQmFzZSAmIHtcbiAgdHlwZTogJ3BvaW50J1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZCA9XG4gIHwgQXJyYXlGaWVsZFxuICB8IEJsb2NrRmllbGRcbiAgfCBDaGVja2JveEZpZWxkXG4gIHwgQ29kZUZpZWxkXG4gIHwgQ29sbGFwc2libGVGaWVsZFxuICB8IERhdGVGaWVsZFxuICB8IEVtYWlsRmllbGRcbiAgfCBHcm91cEZpZWxkXG4gIHwgSlNPTkZpZWxkXG4gIHwgTnVtYmVyRmllbGRcbiAgfCBQb2ludEZpZWxkXG4gIHwgUmFkaW9GaWVsZFxuICB8IFJlbGF0aW9uc2hpcEZpZWxkXG4gIHwgUmljaFRleHRGaWVsZFxuICB8IFJvd0ZpZWxkXG4gIHwgU2VsZWN0RmllbGRcbiAgfCBUYWJzRmllbGRcbiAgfCBUZXh0RmllbGRcbiAgfCBUZXh0YXJlYUZpZWxkXG4gIHwgVUlGaWVsZFxuICB8IFVwbG9hZEZpZWxkXG5cbmV4cG9ydCB0eXBlIEZpZWxkQWZmZWN0aW5nRGF0YSA9XG4gIHwgQXJyYXlGaWVsZFxuICB8IEJsb2NrRmllbGRcbiAgfCBDaGVja2JveEZpZWxkXG4gIHwgQ29kZUZpZWxkXG4gIHwgRGF0ZUZpZWxkXG4gIHwgRW1haWxGaWVsZFxuICB8IEdyb3VwRmllbGRcbiAgfCBKU09ORmllbGRcbiAgfCBOdW1iZXJGaWVsZFxuICB8IFBvaW50RmllbGRcbiAgfCBSYWRpb0ZpZWxkXG4gIHwgUmVsYXRpb25zaGlwRmllbGRcbiAgfCBSaWNoVGV4dEZpZWxkXG4gIHwgU2VsZWN0RmllbGRcbiAgfCBUYWJBc0ZpZWxkXG4gIHwgVGV4dEZpZWxkXG4gIHwgVGV4dGFyZWFGaWVsZFxuICB8IFVwbG9hZEZpZWxkXG5cbmV4cG9ydCB0eXBlIE5vblByZXNlbnRhdGlvbmFsRmllbGQgPVxuICB8IEFycmF5RmllbGRcbiAgfCBCbG9ja0ZpZWxkXG4gIHwgQ2hlY2tib3hGaWVsZFxuICB8IENvZGVGaWVsZFxuICB8IENvbGxhcHNpYmxlRmllbGRcbiAgfCBEYXRlRmllbGRcbiAgfCBFbWFpbEZpZWxkXG4gIHwgR3JvdXBGaWVsZFxuICB8IEpTT05GaWVsZFxuICB8IE51bWJlckZpZWxkXG4gIHwgUG9pbnRGaWVsZFxuICB8IFJhZGlvRmllbGRcbiAgfCBSZWxhdGlvbnNoaXBGaWVsZFxuICB8IFJpY2hUZXh0RmllbGRcbiAgfCBSb3dGaWVsZFxuICB8IFNlbGVjdEZpZWxkXG4gIHwgVGFic0ZpZWxkXG4gIHwgVGV4dEZpZWxkXG4gIHwgVGV4dGFyZWFGaWVsZFxuICB8IFVwbG9hZEZpZWxkXG5cbmV4cG9ydCB0eXBlIEZpZWxkV2l0aFBhdGggPSBGaWVsZCAmIHtcbiAgcGF0aD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZFdpdGhTdWJGaWVsZHMgPSBBcnJheUZpZWxkIHwgQ29sbGFwc2libGVGaWVsZCB8IEdyb3VwRmllbGQgfCBSb3dGaWVsZFxuXG5leHBvcnQgdHlwZSBGaWVsZFByZXNlbnRhdGlvbmFsT25seSA9IFVJRmllbGRcblxuZXhwb3J0IHR5cGUgRmllbGRXaXRoTWFueSA9IFJlbGF0aW9uc2hpcEZpZWxkIHwgU2VsZWN0RmllbGRcblxuZXhwb3J0IHR5cGUgRmllbGRXaXRoTWF4RGVwdGggPSBSZWxhdGlvbnNoaXBGaWVsZCB8IFVwbG9hZEZpZWxkXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZEhhc1N1YkZpZWxkcyhmaWVsZDogRmllbGQpOiBmaWVsZCBpcyBGaWVsZFdpdGhTdWJGaWVsZHMge1xuICByZXR1cm4gKFxuICAgIGZpZWxkLnR5cGUgPT09ICdncm91cCcgfHxcbiAgICBmaWVsZC50eXBlID09PSAnYXJyYXknIHx8XG4gICAgZmllbGQudHlwZSA9PT0gJ3JvdycgfHxcbiAgICBmaWVsZC50eXBlID09PSAnY29sbGFwc2libGUnXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSXNBcnJheVR5cGUoZmllbGQ6IEZpZWxkKTogZmllbGQgaXMgQXJyYXlGaWVsZCB7XG4gIHJldHVybiBmaWVsZC50eXBlID09PSAnYXJyYXknXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZElzQmxvY2tUeXBlKGZpZWxkOiBGaWVsZCk6IGZpZWxkIGlzIEJsb2NrRmllbGQge1xuICByZXR1cm4gZmllbGQudHlwZSA9PT0gJ2Jsb2Nrcydcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbklzT2JqZWN0KG9wdGlvbjogT3B0aW9uKTogb3B0aW9uIGlzIE9wdGlvbk9iamVjdCB7XG4gIHJldHVybiB0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0J1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uc0FyZU9iamVjdHMob3B0aW9uczogT3B0aW9uW10pOiBvcHRpb25zIGlzIE9wdGlvbk9iamVjdFtdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkob3B0aW9ucykgJiYgdHlwZW9mIG9wdGlvbnM/LlswXSA9PT0gJ29iamVjdCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbklzVmFsdWUob3B0aW9uOiBPcHRpb24pOiBvcHRpb24gaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZFN1cHBvcnRzTWFueShmaWVsZDogRmllbGQpOiBmaWVsZCBpcyBGaWVsZFdpdGhNYW55IHtcbiAgcmV0dXJuIGZpZWxkLnR5cGUgPT09ICdzZWxlY3QnIHx8IGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZEhhc01heERlcHRoKGZpZWxkOiBGaWVsZCk6IGZpZWxkIGlzIEZpZWxkV2l0aE1heERlcHRoIHtcbiAgcmV0dXJuIChcbiAgICAoZmllbGQudHlwZSA9PT0gJ3VwbG9hZCcgfHwgZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcpICYmIHR5cGVvZiBmaWVsZC5tYXhEZXB0aCA9PT0gJ251bWJlcidcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmllbGRJc1ByZXNlbnRhdGlvbmFsT25seShmaWVsZDogRmllbGQgfCBUYWJBc0ZpZWxkKTogZmllbGQgaXMgVUlGaWVsZCB7XG4gIHJldHVybiBmaWVsZC50eXBlID09PSAndWknXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGQpOiBmaWVsZCBpcyBGaWVsZEFmZmVjdGluZ0RhdGEge1xuICByZXR1cm4gJ25hbWUnIGluIGZpZWxkICYmICFmaWVsZElzUHJlc2VudGF0aW9uYWxPbmx5KGZpZWxkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFiSGFzTmFtZSh0YWI6IFRhYik6IHRhYiBpcyBOYW1lZFRhYiB7XG4gIHJldHVybiAnbmFtZScgaW4gdGFiXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZElzTG9jYWxpemVkKGZpZWxkOiBGaWVsZCB8IFRhYik6IGJvb2xlYW4ge1xuICByZXR1cm4gJ2xvY2FsaXplZCcgaW4gZmllbGQgJiYgZmllbGQubG9jYWxpemVkXG59XG5cbmV4cG9ydCB0eXBlIEhvb2tOYW1lID1cbiAgfCAnYWZ0ZXJDaGFuZ2UnXG4gIHwgJ2FmdGVyUmVhZCdcbiAgfCAnYmVmb3JlQ2hhbmdlJ1xuICB8ICdiZWZvcmVSZWFkJ1xuICB8ICdiZWZvcmVWYWxpZGF0ZSdcbiJdLCJuYW1lcyI6WyJ2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24iLCJmaWVsZEhhc1N1YkZpZWxkcyIsImZpZWxkSXNBcnJheVR5cGUiLCJmaWVsZElzQmxvY2tUeXBlIiwib3B0aW9uSXNPYmplY3QiLCJvcHRpb25zQXJlT2JqZWN0cyIsIm9wdGlvbklzVmFsdWUiLCJmaWVsZFN1cHBvcnRzTWFueSIsImZpZWxkSGFzTWF4RGVwdGgiLCJmaWVsZElzUHJlc2VudGF0aW9uYWxPbmx5IiwiZmllbGRBZmZlY3RzRGF0YSIsInRhYkhhc05hbWUiLCJmaWVsZElzTG9jYWxpemVkIiwidmFsdWUiLCJmaWVsZCIsInR5cGUiLCJvcHRpb24iLCJvcHRpb25zIiwiQXJyYXkiLCJpc0FycmF5IiwibWF4RGVwdGgiLCJ0YWIiLCJsb2NhbGl6ZWQiXSwibWFwcGluZ3MiOiJBQUFBLHVDQUF1Qzs7Ozs7Ozs7Ozs7SUE2ZXZCQSx3QkFBd0I7ZUFBeEJBOztJQXFLQUMsaUJBQWlCO2VBQWpCQTs7SUFTQUMsZ0JBQWdCO2VBQWhCQTs7SUFJQUMsZ0JBQWdCO2VBQWhCQTs7SUFJQUMsY0FBYztlQUFkQTs7SUFJQUMsaUJBQWlCO2VBQWpCQTs7SUFJQUMsYUFBYTtlQUFiQTs7SUFJQUMsaUJBQWlCO2VBQWpCQTs7SUFJQUMsZ0JBQWdCO2VBQWhCQTs7SUFNQUMseUJBQXlCO2VBQXpCQTs7SUFJQUMsZ0JBQWdCO2VBQWhCQTs7SUFJQUMsVUFBVTtlQUFWQTs7SUFJQUMsZ0JBQWdCO2VBQWhCQTs7O0FBeE5ULFNBQVNaLHlCQUF5QmEsS0FBYztJQUNyRCxPQUFPQSxVQUFVLFFBQVEsT0FBT0EsVUFBVSxZQUFZLGdCQUFnQkEsU0FBUyxXQUFXQTtBQUM1RjtBQW1LTyxTQUFTWixrQkFBa0JhLEtBQVk7SUFDNUMsT0FDRUEsTUFBTUMsSUFBSSxLQUFLLFdBQ2ZELE1BQU1DLElBQUksS0FBSyxXQUNmRCxNQUFNQyxJQUFJLEtBQUssU0FDZkQsTUFBTUMsSUFBSSxLQUFLO0FBRW5CO0FBRU8sU0FBU2IsaUJBQWlCWSxLQUFZO0lBQzNDLE9BQU9BLE1BQU1DLElBQUksS0FBSztBQUN4QjtBQUVPLFNBQVNaLGlCQUFpQlcsS0FBWTtJQUMzQyxPQUFPQSxNQUFNQyxJQUFJLEtBQUs7QUFDeEI7QUFFTyxTQUFTWCxlQUFlWSxNQUFjO0lBQzNDLE9BQU8sT0FBT0EsV0FBVztBQUMzQjtBQUVPLFNBQVNYLGtCQUFrQlksT0FBaUI7SUFDakQsT0FBT0MsTUFBTUMsT0FBTyxDQUFDRixZQUFZLE9BQU9BLFNBQVMsQ0FBQyxFQUFFLEtBQUs7QUFDM0Q7QUFFTyxTQUFTWCxjQUFjVSxNQUFjO0lBQzFDLE9BQU8sT0FBT0EsV0FBVztBQUMzQjtBQUVPLFNBQVNULGtCQUFrQk8sS0FBWTtJQUM1QyxPQUFPQSxNQUFNQyxJQUFJLEtBQUssWUFBWUQsTUFBTUMsSUFBSSxLQUFLO0FBQ25EO0FBRU8sU0FBU1AsaUJBQWlCTSxLQUFZO0lBQzNDLE9BQ0UsQUFBQ0EsQ0FBQUEsTUFBTUMsSUFBSSxLQUFLLFlBQVlELE1BQU1DLElBQUksS0FBSyxjQUFhLEtBQU0sT0FBT0QsTUFBTU0sUUFBUSxLQUFLO0FBRTVGO0FBRU8sU0FBU1gsMEJBQTBCSyxLQUF5QjtJQUNqRSxPQUFPQSxNQUFNQyxJQUFJLEtBQUs7QUFDeEI7QUFFTyxTQUFTTCxpQkFBaUJJLEtBQXlCO0lBQ3hELE9BQU8sVUFBVUEsU0FBUyxDQUFDTCwwQkFBMEJLO0FBQ3ZEO0FBRU8sU0FBU0gsV0FBV1UsR0FBUTtJQUNqQyxPQUFPLFVBQVVBO0FBQ25CO0FBRU8sU0FBU1QsaUJBQWlCRSxLQUFrQjtJQUNqRCxPQUFPLGVBQWVBLFNBQVNBLE1BQU1RLFNBQVM7QUFDaEQifQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovXG5pbXBvcnQgdHlwZSB7IEVkaXRvclByb3BzIH0gZnJvbSAnQG1vbmFjby1lZGl0b3IvcmVhY3QnXG5pbXBvcnQgdHlwZSB7IFRGdW5jdGlvbiB9IGZyb20gJ2kxOG5leHQnXG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IG1vbmFjb2VkaXRvciBmcm9tICdtb25hY28tZWRpdG9yJyAvLyBJTVBPUlRBTlQgLSBETyBOT1QgUkVNT1ZFOiBUaGlzIGlzIHJlcXVpcmVkIGZvciBwbnBtJ3MgZGVmYXVsdCBpc29sYXRlZCBtb2RlIHRvIHdvcmsgLSBldmVuIHRob3VnaCB0aGUgaW1wb3J0IGlzIG5vdCB1c2VkLiBUaGlzIGlzIGR1ZSB0byBhIHR5cGVzY3JpcHQgYnVnOiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzQ3NjYzI2lzc3VlY29tbWVudC0xNTE5MTM4MTg5LiAodHNidWdpc29sYXRlZG1vZGUpXG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25hbERhdGVQcm9wcyB9IGZyb20gJy4uLy4uL2FkbWluL2NvbXBvbmVudHMvZWxlbWVudHMvRGF0ZVBpY2tlci90eXBlcydcbmltcG9ydCB0eXBlIHsgUHJvcHMgYXMgRXJyb3JQcm9wcyB9IGZyb20gJy4uLy4uL2FkbWluL2NvbXBvbmVudHMvZm9ybXMvRXJyb3IvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IERlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9GaWVsZERlc2NyaXB0aW9uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQcm9wcyBhcyBMYWJlbFByb3BzIH0gZnJvbSAnLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9MYWJlbC90eXBlcydcbmltcG9ydCB0eXBlIHsgUm93TGFiZWwgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL1Jvd0xhYmVsL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi4vLi4vYXV0aCdcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZywgVHlwZVdpdGhJRCB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCwgUmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IE9wZXJhdGlvbiwgV2hlcmUgfSBmcm9tICcuLi8uLi90eXBlcydcblxuZXhwb3J0IHR5cGUgRmllbGRIb29rQXJnczxUIGV4dGVuZHMgVHlwZVdpdGhJRCA9IGFueSwgUCA9IGFueSwgUyA9IGFueT4gPSB7XG4gIC8qKiBUaGUgY29sbGVjdGlvbiB3aGljaCB0aGUgZmllbGQgYmVsb25ncyB0by4gSWYgdGhlIGZpZWxkIGJlbG9uZ3MgdG8gYSBnbG9iYWwsIHRoaXMgd2lsbCBiZSBudWxsLiAqL1xuICBjb2xsZWN0aW9uOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgbnVsbFxuICBjb250ZXh0OiBSZXF1ZXN0Q29udGV4dFxuICAvKiogVGhlIGRhdGEgcGFzc2VkIHRvIHVwZGF0ZSB0aGUgZG9jdW1lbnQgd2l0aGluIGNyZWF0ZSBhbmQgdXBkYXRlIG9wZXJhdGlvbnMsIGFuZCB0aGUgZnVsbCBkb2N1bWVudCBpdHNlbGYgaW4gdGhlIGFmdGVyUmVhZCBob29rLiAqL1xuICBkYXRhPzogUGFydGlhbDxUPlxuICAvKiogVGhlIGZpZWxkIHdoaWNoIHRoZSBob29rIGlzIHJ1bm5pbmcgYWdhaW5zdC4gKi9cbiAgZmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YVxuICAvKiogQm9vbGVhbiB0byBkZW5vdGUgaWYgdGhpcyBob29rIGlzIHJ1bm5pbmcgYWdhaW5zdCBmaW5kaW5nIG9uZSwgb3IgZmluZGluZyBtYW55IHdpdGhpbiB0aGUgYWZ0ZXJSZWFkIGhvb2suICovXG4gIGZpbmRNYW55PzogYm9vbGVhblxuICAvKiogVGhlIGdsb2JhbCB3aGljaCB0aGUgZmllbGQgYmVsb25ncyB0by4gSWYgdGhlIGZpZWxkIGJlbG9uZ3MgdG8gYSBjb2xsZWN0aW9uLCB0aGlzIHdpbGwgYmUgbnVsbC4gKi9cbiAgZ2xvYmFsOiBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfCBudWxsXG4gIC8qKiBBIHN0cmluZyByZWxhdGluZyB0byB3aGljaCBvcGVyYXRpb24gdGhlIGZpZWxkIHR5cGUgaXMgY3VycmVudGx5IGV4ZWN1dGluZyB3aXRoaW4uIFVzZWZ1bCB3aXRoaW4gYmVmb3JlVmFsaWRhdGUsIGJlZm9yZUNoYW5nZSwgYW5kIGFmdGVyQ2hhbmdlIGhvb2tzIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBjcmVhdGUgYW5kIHVwZGF0ZSBvcGVyYXRpb25zLiAqL1xuICBvcGVyYXRpb24/OiAnY3JlYXRlJyB8ICdkZWxldGUnIHwgJ3JlYWQnIHwgJ3VwZGF0ZSdcbiAgLyoqIFRoZSBmdWxsIG9yaWdpbmFsIGRvY3VtZW50IGluIGB1cGRhdGVgIG9wZXJhdGlvbnMuIEluIHRoZSBgYWZ0ZXJDaGFuZ2VgIGhvb2ssIHRoaXMgaXMgdGhlIHJlc3VsdGluZyBkb2N1bWVudCBvZiB0aGUgb3BlcmF0aW9uLiAqL1xuICBvcmlnaW5hbERvYz86IFRcbiAgLyoqIFRoZSBkb2N1bWVudCBiZWZvcmUgY2hhbmdlcyB3ZXJlIGFwcGxpZWQsIG9ubHkgaW4gYGFmdGVyQ2hhbmdlYCBob29rcy4gKi9cbiAgcHJldmlvdXNEb2M/OiBUXG4gIC8qKiBUaGUgc2libGluZyBkYXRhIGZyb20gdGhlIHByZXZpb3VzIGRvY3VtZW50IGluIGBhZnRlckNoYW5nZWAgaG9vay4gKi9cbiAgcHJldmlvdXNTaWJsaW5nRG9jPzogVFxuICBwcmV2aW91c1ZhbHVlPzogUFxuICAvKiogVGhlIEV4cHJlc3MgcmVxdWVzdCBvYmplY3QuIEl0IGlzIG1vY2tlZCBmb3IgTG9jYWwgQVBJIG9wZXJhdGlvbnMuICovXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgLyoqIFRoZSBzaWJsaW5nIGRhdGEgcGFzc2VkIHRvIGEgZmllbGQgdGhhdCB0aGUgaG9vayBpcyBydW5uaW5nIGFnYWluc3QuICovXG4gIHNpYmxpbmdEYXRhOiBQYXJ0aWFsPFM+XG4gIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkLiAqL1xuICB2YWx1ZT86IFBcbn1cblxuZXhwb3J0IHR5cGUgRmllbGRIb29rPFQgZXh0ZW5kcyBUeXBlV2l0aElEID0gYW55LCBQID0gYW55LCBTID0gYW55PiA9IChcbiAgYXJnczogRmllbGRIb29rQXJnczxULCBQLCBTPixcbikgPT4gUCB8IFByb21pc2U8UD5cblxuZXhwb3J0IHR5cGUgRmllbGRBY2Nlc3M8VCBleHRlbmRzIFR5cGVXaXRoSUQgPSBhbnksIFAgPSBhbnksIFUgPSBhbnk+ID0gKGFyZ3M6IHtcbiAgLyoqXG4gICAqIFRoZSBpbmNvbWluZyBkYXRhIHVzZWQgdG8gYGNyZWF0ZWAgb3IgYHVwZGF0ZWAgdGhlIGRvY3VtZW50IHdpdGguIGBkYXRhYCBpcyB1bmRlZmluZWQgZHVyaW5nIHRoZSBgcmVhZGAgb3BlcmF0aW9uLlxuICAgKi9cbiAgZGF0YT86IFBhcnRpYWw8VD5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBkYXRhIG9mIHRoZSBkb2N1bWVudCBiZWZvcmUgdGhlIGB1cGRhdGVgIGlzIGFwcGxpZWQuIGBkb2NgIGlzIHVuZGVmaW5lZCBkdXJpbmcgdGhlIGBjcmVhdGVgIG9wZXJhdGlvbi5cbiAgICovXG4gIGRvYz86IFRcbiAgLyoqXG4gICAqIFRoZSBgaWRgIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGJlaW5nIHJlYWQgb3IgdXBkYXRlZC4gYGlkYCBpcyB1bmRlZmluZWQgZHVyaW5nIHRoZSBgY3JlYXRlYCBvcGVyYXRpb24uXG4gICAqL1xuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICAvKiogVGhlIGBFeHByZXNzYCByZXF1ZXN0IG9iamVjdCBjb250YWluaW5nIHRoZSBjdXJyZW50bHkgYXV0aGVudGljYXRlZCBgdXNlcmAgKi9cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdDxVPlxuICAvKipcbiAgICogSW1tZWRpYXRlbHkgYWRqYWNlbnQgZGF0YSB0byB0aGlzIGZpZWxkLiBGb3IgZXhhbXBsZSwgaWYgdGhpcyBpcyBhIGBncm91cGAgZmllbGQsIHRoZW4gYHNpYmxpbmdEYXRhYCB3aWxsIGJlIHRoZSBvdGhlciBmaWVsZHMgd2l0aGluIHRoZSBncm91cC5cbiAgICovXG4gIHNpYmxpbmdEYXRhPzogUGFydGlhbDxQPlxufSkgPT4gUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW5cblxuZXhwb3J0IHR5cGUgQ29uZGl0aW9uPFQgZXh0ZW5kcyBUeXBlV2l0aElEID0gYW55LCBQID0gYW55PiA9IChcbiAgZGF0YTogUGFydGlhbDxUPixcbiAgc2libGluZ0RhdGE6IFBhcnRpYWw8UD4sXG4gIHsgdXNlciB9OiB7IHVzZXI6IFVzZXIgfSxcbikgPT4gYm9vbGVhblxuXG5leHBvcnQgdHlwZSBGaWx0ZXJPcHRpb25zUHJvcHM8VCA9IGFueT4gPSB7XG4gIGRhdGE6IFRcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICByZWxhdGlvblRvOiBzdHJpbmdcbiAgc2libGluZ0RhdGE6IHVua25vd25cbiAgdXNlcjogUGFydGlhbDxVc2VyPlxufVxuXG5leHBvcnQgdHlwZSBGaWx0ZXJPcHRpb25zPFQgPSBhbnk+ID1cbiAgfCAoKG9wdGlvbnM6IEZpbHRlck9wdGlvbnNQcm9wczxUPikgPT4gUHJvbWlzZTxXaGVyZSB8IGJvb2xlYW4+IHwgV2hlcmUgfCBib29sZWFuKVxuICB8IFdoZXJlXG4gIHwgbnVsbFxuXG50eXBlIEFkbWluID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgY29tcG9uZW50cz86IHtcbiAgICBDZWxsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gICAgRmllbGQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgICBGaWx0ZXI/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgfVxuICAvKipcbiAgICogWW91IGNhbiBwcm9ncmFtbWF0aWNhbGx5IHNob3cgLyBoaWRlIGZpZWxkcyBiYXNlZCBvbiB3aGF0IG90aGVyIGZpZWxkcyBhcmUgZG9pbmcuXG4gICAqIFRoaXMgaXMgYWxzbyBydW4gb24gdGhlIHNlcnZlciwgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaWVsZCBzaG91bGQgYmUgdmFsaWRhdGVkLlxuICAgKi9cbiAgY29uZGl0aW9uPzogQ29uZGl0aW9uXG4gIGRlc2NyaXB0aW9uPzogRGVzY3JpcHRpb25cbiAgZGlzYWJsZUJ1bGtFZGl0PzogYm9vbGVhblxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgaGlkZGVuPzogYm9vbGVhblxuICBwb3NpdGlvbj86ICdzaWRlYmFyJ1xuICByZWFkT25seT86IGJvb2xlYW5cbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzXG4gIHdpZHRoPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExhYmVscyA9IHtcbiAgcGx1cmFsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG4gIHNpbmd1bGFyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRlT3B0aW9uczxURGF0YSwgVFNpYmxpbmdEYXRhLCBURmllbGRDb25maWc+ID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbmZpZ1xuICBkYXRhOiBQYXJ0aWFsPFREYXRhPlxuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICBvcGVyYXRpb24/OiBPcGVyYXRpb25cbiAgcGF5bG9hZD86IFBheWxvYWRcbiAgcmVxPzogUGF5bG9hZFJlcXVlc3RcbiAgc2libGluZ0RhdGE6IFBhcnRpYWw8VFNpYmxpbmdEYXRhPlxuICB0OiBURnVuY3Rpb25cbiAgdXNlcj86IFBhcnRpYWw8VXNlcj5cbn0gJiBURmllbGRDb25maWdcblxuLy8gVE9ETzogSGF2aW5nIFRGaWVsZENvbmZpZyBhcyBhbnkgYnJlYWtzIGFsbCB0eXBlIGNoZWNraW5nIC8gYXV0by1jb21wbGV0aW9ucyBmb3IgdGhlIGJhc2UgVmFsaWRhdGVPcHRpb25zIHByb3BlcnRpZXMuXG5leHBvcnQgdHlwZSBWYWxpZGF0ZTxUVmFsdWUgPSBhbnksIFREYXRhID0gYW55LCBUU2libGluZ0RhdGEgPSBhbnksIFRGaWVsZENvbmZpZyA9IGFueT4gPSAoXG4gIHZhbHVlOiBUVmFsdWUsXG4gIG9wdGlvbnM6IFZhbGlkYXRlT3B0aW9uczxURGF0YSwgVFNpYmxpbmdEYXRhLCBURmllbGRDb25maWc+LFxuKSA9PiBQcm9taXNlPHN0cmluZyB8IHRydWU+IHwgc3RyaW5nIHwgdHJ1ZVxuXG5leHBvcnQgdHlwZSBPcHRpb25PYmplY3QgPSB7XG4gIGxhYmVsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG4gIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgT3B0aW9uID0gT3B0aW9uT2JqZWN0IHwgc3RyaW5nXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRCYXNlIHtcbiAgYWNjZXNzPzoge1xuICAgIGNyZWF0ZT86IEZpZWxkQWNjZXNzXG4gICAgcmVhZD86IEZpZWxkQWNjZXNzXG4gICAgdXBkYXRlPzogRmllbGRBY2Nlc3NcbiAgfVxuICBhZG1pbj86IEFkbWluXG4gIC8qKiBFeHRlbnNpb24gcG9pbnQgdG8gYWRkIHlvdXIgY3VzdG9tIGRhdGEuICovXG4gIGN1c3RvbT86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgZGVmYXVsdFZhbHVlPzogYW55XG4gIGhpZGRlbj86IGJvb2xlYW5cbiAgaG9va3M/OiB7XG4gICAgYWZ0ZXJDaGFuZ2U/OiBGaWVsZEhvb2tbXVxuICAgIGFmdGVyUmVhZD86IEZpZWxkSG9va1tdXG4gICAgYmVmb3JlQ2hhbmdlPzogRmllbGRIb29rW11cbiAgICBiZWZvcmVWYWxpZGF0ZT86IEZpZWxkSG9va1tdXG4gIH1cbiAgaW5kZXg/OiBib29sZWFuXG4gIGxhYmVsPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IGZhbHNlIHwgc3RyaW5nXG4gIGxvY2FsaXplZD86IGJvb2xlYW5cbiAgbmFtZTogc3RyaW5nXG4gIHJlcXVpcmVkPzogYm9vbGVhblxuICBzYXZlVG9KV1Q/OiBib29sZWFuIHwgc3RyaW5nXG4gIHVuaXF1ZT86IGJvb2xlYW5cbiAgdmFsaWRhdGU/OiBWYWxpZGF0ZVxufVxuXG5leHBvcnQgdHlwZSBOdW1iZXJGaWVsZCA9IEZpZWxkQmFzZSAmIHtcbiAgYWRtaW4/OiBBZG1pbiAmIHtcbiAgICAvKiogU2V0IHRoaXMgcHJvcGVydHkgdG8gYSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGJyb3dzZXIgYXV0b2NvbXBsZXRlLiAqL1xuICAgIGF1dG9Db21wbGV0ZT86IHN0cmluZ1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgICAgYWZ0ZXJJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICBiZWZvcmVJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgfVxuICAgIC8qKiBTZXQgdGhpcyBwcm9wZXJ0eSB0byBkZWZpbmUgYSBwbGFjZWhvbGRlciBzdHJpbmcgZm9yIHRoZSBmaWVsZC4gKi9cbiAgICBwbGFjZWhvbGRlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBzdHJpbmdcbiAgICAvKiogU2V0IGEgdmFsdWUgZm9yIHRoZSBudW1iZXIgZmllbGQgdG8gaW5jcmVtZW50IC8gZGVjcmVtZW50IHVzaW5nIGJyb3dzZXIgY29udHJvbHMuICovXG4gICAgc3RlcD86IG51bWJlclxuICB9XG4gIC8qKiBNYXhpbXVtIHZhbHVlIGFjY2VwdGVkLiBVc2VkIGluIHRoZSBkZWZhdWx0IGB2YWxpZGF0aW9uYCBmdW5jdGlvbi4gKi9cbiAgbWF4PzogbnVtYmVyXG4gIC8qKiBNaW5pbXVtIHZhbHVlIGFjY2VwdGVkLiBVc2VkIGluIHRoZSBkZWZhdWx0IGB2YWxpZGF0aW9uYCBmdW5jdGlvbi4gKi9cbiAgbWluPzogbnVtYmVyXG4gIHR5cGU6ICdudW1iZXInXG59ICYgKFxuICAgIHwge1xuICAgICAgICAvKiogTWFrZXMgdGhpcyBmaWVsZCBhbiBvcmRlcmVkIGFycmF5IG9mIG51bWJlcnMgaW5zdGVhZCBvZiBqdXN0IGEgc2luZ2xlIG51bWJlci4gKi9cbiAgICAgICAgaGFzTWFueTogdHJ1ZVxuICAgICAgICAvKiogTWF4aW11bSBudW1iZXIgb2YgbnVtYmVycyBpbiB0aGUgbnVtYmVycyBhcnJheSwgaWYgYGhhc01hbnlgIGlzIHNldCB0byB0cnVlLiAqL1xuICAgICAgICBtYXhSb3dzPzogbnVtYmVyXG4gICAgICAgIC8qKiBNaW5pbXVtIG51bWJlciBvZiBudW1iZXJzIGluIHRoZSBudW1iZXJzIGFycmF5LCBpZiBgaGFzTWFueWAgaXMgc2V0IHRvIHRydWUuICovXG4gICAgICAgIG1pblJvd3M/OiBudW1iZXJcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgLyoqIE1ha2VzIHRoaXMgZmllbGQgYW4gb3JkZXJlZCBhcnJheSBvZiBudW1iZXJzIGluc3RlYWQgb2YganVzdCBhIHNpbmdsZSBudW1iZXIuICovXG4gICAgICAgIGhhc01hbnk/OiBmYWxzZSB8IHVuZGVmaW5lZFxuICAgICAgICAvKiogTWF4aW11bSBudW1iZXIgb2YgbnVtYmVycyBpbiB0aGUgbnVtYmVycyBhcnJheSwgaWYgYGhhc01hbnlgIGlzIHNldCB0byB0cnVlLiAqL1xuICAgICAgICBtYXhSb3dzPzogdW5kZWZpbmVkXG4gICAgICAgIC8qKiBNaW5pbXVtIG51bWJlciBvZiBudW1iZXJzIGluIHRoZSBudW1iZXJzIGFycmF5LCBpZiBgaGFzTWFueWAgaXMgc2V0IHRvIHRydWUuICovXG4gICAgICAgIG1pblJvd3M/OiB1bmRlZmluZWRcbiAgICAgIH1cbiAgKVxuXG5leHBvcnQgdHlwZSBUZXh0RmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgYXV0b0NvbXBsZXRlPzogc3RyaW5nXG4gICAgY29tcG9uZW50cz86IHtcbiAgICAgIEVycm9yPzogUmVhY3QuQ29tcG9uZW50VHlwZTxFcnJvclByb3BzPlxuICAgICAgTGFiZWw/OiBSZWFjdC5Db21wb25lbnRUeXBlPExhYmVsUHJvcHM+XG4gICAgICBhZnRlcklucHV0PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICAgIGJlZm9yZUlucHV0PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICB9XG4gICAgcGxhY2Vob2xkZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG4gICAgcnRsPzogYm9vbGVhblxuICB9XG4gIG1heExlbmd0aD86IG51bWJlclxuICBtaW5MZW5ndGg/OiBudW1iZXJcbiAgdHlwZTogJ3RleHQnXG59XG5cbmV4cG9ydCB0eXBlIEVtYWlsRmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgYXV0b0NvbXBsZXRlPzogc3RyaW5nXG4gICAgY29tcG9uZW50cz86IHtcbiAgICAgIEVycm9yPzogUmVhY3QuQ29tcG9uZW50VHlwZTxFcnJvclByb3BzPlxuICAgICAgTGFiZWw/OiBSZWFjdC5Db21wb25lbnRUeXBlPExhYmVsUHJvcHM+XG4gICAgICBhZnRlcklucHV0PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICAgIGJlZm9yZUlucHV0PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICB9XG4gICAgcGxhY2Vob2xkZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG4gIH1cbiAgdHlwZTogJ2VtYWlsJ1xufVxuXG5leHBvcnQgdHlwZSBUZXh0YXJlYUZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgICAgYWZ0ZXJJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICBiZWZvcmVJbnB1dD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgfVxuICAgIHBsYWNlaG9sZGVyPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xuICAgIHJvd3M/OiBudW1iZXJcbiAgICBydGw/OiBib29sZWFuXG4gIH1cbiAgbWF4TGVuZ3RoPzogbnVtYmVyXG4gIG1pbkxlbmd0aD86IG51bWJlclxuICB0eXBlOiAndGV4dGFyZWEnXG59XG5cbmV4cG9ydCB0eXBlIENoZWNrYm94RmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgY29tcG9uZW50cz86IHtcbiAgICAgIEVycm9yPzogUmVhY3QuQ29tcG9uZW50VHlwZTxFcnJvclByb3BzPlxuICAgICAgTGFiZWw/OiBSZWFjdC5Db21wb25lbnRUeXBlPExhYmVsUHJvcHM+XG4gICAgICBhZnRlcklucHV0PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICAgIGJlZm9yZUlucHV0PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICB9XG4gIH1cbiAgdHlwZTogJ2NoZWNrYm94J1xufVxuXG5leHBvcnQgdHlwZSBEYXRlRmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgY29tcG9uZW50cz86IHtcbiAgICAgIEVycm9yPzogUmVhY3QuQ29tcG9uZW50VHlwZTxFcnJvclByb3BzPlxuICAgICAgTGFiZWw/OiBSZWFjdC5Db21wb25lbnRUeXBlPExhYmVsUHJvcHM+XG4gICAgICBhZnRlcklucHV0PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICAgIGJlZm9yZUlucHV0PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICB9XG4gICAgZGF0ZT86IENvbmRpdGlvbmFsRGF0ZVByb3BzXG4gICAgcGxhY2Vob2xkZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nXG4gIH1cbiAgdHlwZTogJ2RhdGUnXG59XG5cbmV4cG9ydCB0eXBlIEdyb3VwRmllbGQgPSBPbWl0PEZpZWxkQmFzZSwgJ3JlcXVpcmVkJyB8ICd2YWxpZGF0aW9uJz4gJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgaGlkZUd1dHRlcj86IGJvb2xlYW5cbiAgfVxuICBmaWVsZHM6IEZpZWxkW11cbiAgLyoqIEN1c3RvbWl6ZSBnZW5lcmF0ZWQgR3JhcGhRTCBhbmQgVHlwZXNjcmlwdCBzY2hlbWEgbmFtZXMuXG4gICAqIEJ5IGRlZmF1bHQgaXQgaXMgYm91bmQgdG8gdGhlIGNvbGxlY3Rpb24uXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGdlbmVyYXRlIGEgdG9wIGxldmVsIHR5cGUgdG8gc2hhcmUgYW1vbmdzdCBjb2xsZWN0aW9ucy9maWVsZHMuXG4gICAqICoqTm90ZSoqOiBUb3AgbGV2ZWwgdHlwZXMgY2FuIGNvbGxpZGUsIGVuc3VyZSB0aGV5IGFyZSB1bmlxdWUgYW1vbmcgY29sbGVjdGlvbnMsIGFycmF5cywgZ3JvdXBzLCBibG9ja3MsIHRhYnMuXG4gICAqL1xuICBpbnRlcmZhY2VOYW1lPzogc3RyaW5nXG4gIHR5cGU6ICdncm91cCdcbn1cblxuZXhwb3J0IHR5cGUgUm93QWRtaW4gPSBPbWl0PEFkbWluLCAnZGVzY3JpcHRpb24nPlxuXG5leHBvcnQgdHlwZSBSb3dGaWVsZCA9IE9taXQ8RmllbGRCYXNlLCAnYWRtaW4nIHwgJ2xhYmVsJyB8ICduYW1lJz4gJiB7XG4gIGFkbWluPzogUm93QWRtaW5cbiAgZmllbGRzOiBGaWVsZFtdXG4gIHR5cGU6ICdyb3cnXG59XG5cbmV4cG9ydCB0eXBlIENvbGxhcHNpYmxlRmllbGQgPSBPbWl0PEZpZWxkQmFzZSwgJ2xhYmVsJyB8ICduYW1lJz4gJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgaW5pdENvbGxhcHNlZD86IGJvb2xlYW4gfCBmYWxzZVxuICB9XG4gIGZpZWxkczogRmllbGRbXVxuICBsYWJlbDogUm93TGFiZWxcbiAgdHlwZTogJ2NvbGxhcHNpYmxlJ1xufVxuXG5leHBvcnQgdHlwZSBUYWJzQWRtaW4gPSBPbWl0PEFkbWluLCAnZGVzY3JpcHRpb24nPlxuXG50eXBlIFRhYkJhc2UgPSBPbWl0PEZpZWxkQmFzZSwgJ3JlcXVpcmVkJyB8ICd2YWxpZGF0aW9uJz4gJiB7XG4gIGRlc2NyaXB0aW9uPzogRGVzY3JpcHRpb25cbiAgZmllbGRzOiBGaWVsZFtdXG4gIGludGVyZmFjZU5hbWU/OiBzdHJpbmdcbiAgc2F2ZVRvSldUPzogYm9vbGVhbiB8IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBOYW1lZFRhYiA9IFRhYkJhc2UgJiB7XG4gIC8qKiBDdXN0b21pemUgZ2VuZXJhdGVkIEdyYXBoUUwgYW5kIFR5cGVzY3JpcHQgc2NoZW1hIG5hbWVzLlxuICAgKiBUaGUgc2x1ZyBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGdlbmVyYXRlIGEgdG9wIGxldmVsIHR5cGUgdG8gc2hhcmUgYW1vbmdzdCBjb2xsZWN0aW9ucy9maWVsZHMuXG4gICAqICoqTm90ZSoqOiBUb3AgbGV2ZWwgdHlwZXMgY2FuIGNvbGxpZGUsIGVuc3VyZSB0aGV5IGFyZSB1bmlxdWUgYW1vbmcgY29sbGVjdGlvbnMsIGFycmF5cywgZ3JvdXBzLCBibG9ja3MsIHRhYnMuXG4gICAqL1xuICBpbnRlcmZhY2VOYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFVubmFtZWRUYWIgPSBPbWl0PFRhYkJhc2UsICduYW1lJz4gJiB7XG4gIGludGVyZmFjZU5hbWU/OiBuZXZlclxuICBsYWJlbDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZ1xuICBsb2NhbGl6ZWQ/OiBuZXZlclxufVxuXG5leHBvcnQgdHlwZSBUYWIgPSBOYW1lZFRhYiB8IFVubmFtZWRUYWJcblxuZXhwb3J0IHR5cGUgVGFic0ZpZWxkID0gT21pdDxGaWVsZEJhc2UsICdhZG1pbicgfCAnbG9jYWxpemVkJyB8ICduYW1lJyB8ICdzYXZlVG9KV1QnPiAmIHtcbiAgYWRtaW4/OiBUYWJzQWRtaW5cbiAgdGFiczogVGFiW11cbiAgdHlwZTogJ3RhYnMnXG59XG5cbmV4cG9ydCB0eXBlIFRhYkFzRmllbGQgPSBUYWIgJiB7XG4gIG5hbWU/OiBzdHJpbmdcbiAgdHlwZTogJ3RhYidcbn1cblxuZXhwb3J0IHR5cGUgVUlGaWVsZCA9IHtcbiAgYWRtaW46IHtcbiAgICBjb21wb25lbnRzPzoge1xuICAgICAgQ2VsbD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgICAgRmllbGQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgICAgRmlsdGVyPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gICAgfVxuICAgIGNvbmRpdGlvbj86IENvbmRpdGlvblxuICAgIGRpc2FibGVCdWxrRWRpdD86IGJvb2xlYW5cbiAgICBwb3NpdGlvbj86IHN0cmluZ1xuICAgIHdpZHRoPzogc3RyaW5nXG4gIH1cbiAgLyoqIEV4dGVuc2lvbiBwb2ludCB0byBhZGQgeW91ciBjdXN0b20gZGF0YS4gKi9cbiAgY3VzdG9tPzogUmVjb3JkPHN0cmluZywgYW55PlxuICBsYWJlbD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHR5cGU6ICd1aSdcbn1cblxuZXhwb3J0IHR5cGUgVXBsb2FkRmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzoge1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgIH1cbiAgfVxuICBmaWx0ZXJPcHRpb25zPzogRmlsdGVyT3B0aW9uc1xuICBtYXhEZXB0aD86IG51bWJlclxuICByZWxhdGlvblRvOiBzdHJpbmdcbiAgdHlwZTogJ3VwbG9hZCdcbn1cblxudHlwZSBDb2RlQWRtaW4gPSBBZG1pbiAmIHtcbiAgY29tcG9uZW50cz86IHtcbiAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICBMYWJlbD86IFJlYWN0LkNvbXBvbmVudFR5cGU8TGFiZWxQcm9wcz5cbiAgfVxuICBlZGl0b3JPcHRpb25zPzogRWRpdG9yUHJvcHNbJ29wdGlvbnMnXVxuICBsYW5ndWFnZT86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBDb2RlRmllbGQgPSBPbWl0PEZpZWxkQmFzZSwgJ2FkbWluJz4gJiB7XG4gIGFkbWluPzogQ29kZUFkbWluXG4gIG1heExlbmd0aD86IG51bWJlclxuICBtaW5MZW5ndGg/OiBudW1iZXJcbiAgdHlwZTogJ2NvZGUnXG59XG5cbnR5cGUgSlNPTkFkbWluID0gQWRtaW4gJiB7XG4gIGNvbXBvbmVudHM/OiB7XG4gICAgRXJyb3I/OiBSZWFjdC5Db21wb25lbnRUeXBlPEVycm9yUHJvcHM+XG4gICAgTGFiZWw/OiBSZWFjdC5Db21wb25lbnRUeXBlPExhYmVsUHJvcHM+XG4gIH1cbiAgZWRpdG9yT3B0aW9ucz86IEVkaXRvclByb3BzWydvcHRpb25zJ11cbn1cblxuZXhwb3J0IHR5cGUgSlNPTkZpZWxkID0gT21pdDxGaWVsZEJhc2UsICdhZG1pbic+ICYge1xuICBhZG1pbj86IEpTT05BZG1pblxuICB0eXBlOiAnanNvbidcbn1cblxuZXhwb3J0IHR5cGUgU2VsZWN0RmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgY29tcG9uZW50cz86IHtcbiAgICAgIEVycm9yPzogUmVhY3QuQ29tcG9uZW50VHlwZTxFcnJvclByb3BzPlxuICAgICAgTGFiZWw/OiBSZWFjdC5Db21wb25lbnRUeXBlPExhYmVsUHJvcHM+XG4gICAgfVxuICAgIGlzQ2xlYXJhYmxlPzogYm9vbGVhblxuICAgIGlzU29ydGFibGU/OiBib29sZWFuXG4gIH1cbiAgaGFzTWFueT86IGJvb2xlYW5cbiAgb3B0aW9uczogT3B0aW9uW11cbiAgdHlwZTogJ3NlbGVjdCdcbn1cblxudHlwZSBTaGFyZWRSZWxhdGlvbnNoaXBQcm9wZXJ0aWVzID0gRmllbGRCYXNlICYge1xuICBmaWx0ZXJPcHRpb25zPzogRmlsdGVyT3B0aW9uc1xuICBoYXNNYW55PzogYm9vbGVhblxuICBtYXhEZXB0aD86IG51bWJlclxuICB0eXBlOiAncmVsYXRpb25zaGlwJ1xufSAmIChcbiAgICB8IHtcbiAgICAgICAgaGFzTWFueTogdHJ1ZVxuICAgICAgICAvKipcbiAgICAgICAgICogQGRlcHJlY2F0ZWQgVXNlICdtYXhSb3dzJyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBtYXg/OiBudW1iZXJcbiAgICAgICAgbWF4Um93cz86IG51bWJlclxuICAgICAgICAvKipcbiAgICAgICAgICogQGRlcHJlY2F0ZWQgVXNlICdtaW5Sb3dzJyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBtaW4/OiBudW1iZXJcbiAgICAgICAgbWluUm93cz86IG51bWJlclxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBoYXNNYW55PzogZmFsc2UgfCB1bmRlZmluZWRcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSAnbWF4Um93cycgaW5zdGVhZFxuICAgICAgICAgKi9cbiAgICAgICAgbWF4PzogdW5kZWZpbmVkXG4gICAgICAgIG1heFJvd3M/OiB1bmRlZmluZWRcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSAnbWluUm93cycgaW5zdGVhZFxuICAgICAgICAgKi9cbiAgICAgICAgbWluPzogdW5kZWZpbmVkXG4gICAgICAgIG1pblJvd3M/OiB1bmRlZmluZWRcbiAgICAgIH1cbiAgKVxuXG50eXBlIFJlbGF0aW9uc2hpcEFkbWluID0gQWRtaW4gJiB7XG4gIGFsbG93Q3JlYXRlPzogYm9vbGVhblxuICBjb21wb25lbnRzPzoge1xuICAgIEVycm9yPzogUmVhY3QuQ29tcG9uZW50VHlwZTxFcnJvclByb3BzPlxuICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICB9XG4gIGlzU29ydGFibGU/OiBib29sZWFuXG59XG5leHBvcnQgdHlwZSBQb2x5bW9ycGhpY1JlbGF0aW9uc2hpcEZpZWxkID0gU2hhcmVkUmVsYXRpb25zaGlwUHJvcGVydGllcyAmIHtcbiAgYWRtaW4/OiBSZWxhdGlvbnNoaXBBZG1pbiAmIHtcbiAgICBzb3J0T3B0aW9ucz86IHsgW2NvbGxlY3Rpb25TbHVnOiBzdHJpbmddOiBzdHJpbmcgfVxuICB9XG4gIHJlbGF0aW9uVG86IHN0cmluZ1tdXG59XG5leHBvcnQgdHlwZSBTaW5nbGVSZWxhdGlvbnNoaXBGaWVsZCA9IFNoYXJlZFJlbGF0aW9uc2hpcFByb3BlcnRpZXMgJiB7XG4gIGFkbWluPzogUmVsYXRpb25zaGlwQWRtaW4gJiB7XG4gICAgc29ydE9wdGlvbnM/OiBzdHJpbmdcbiAgfVxuICByZWxhdGlvblRvOiBzdHJpbmdcbn1cbmV4cG9ydCB0eXBlIFJlbGF0aW9uc2hpcEZpZWxkID0gUG9seW1vcnBoaWNSZWxhdGlvbnNoaXBGaWVsZCB8IFNpbmdsZVJlbGF0aW9uc2hpcEZpZWxkXG5cbmV4cG9ydCB0eXBlIFZhbHVlV2l0aFJlbGF0aW9uID0ge1xuICByZWxhdGlvblRvOiBzdHJpbmdcbiAgdmFsdWU6IG51bWJlciB8IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVJc1ZhbHVlV2l0aFJlbGF0aW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVmFsdWVXaXRoUmVsYXRpb24ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAncmVsYXRpb25UbycgaW4gdmFsdWUgJiYgJ3ZhbHVlJyBpbiB2YWx1ZVxufVxuXG5leHBvcnQgdHlwZSBSZWxhdGlvbnNoaXBWYWx1ZSA9XG4gIHwgKG51bWJlciB8IHN0cmluZylbXVxuICB8IFZhbHVlV2l0aFJlbGF0aW9uXG4gIHwgVmFsdWVXaXRoUmVsYXRpb25bXVxuICB8IChudW1iZXIgfCBzdHJpbmcpXG5cbmV4cG9ydCB0eXBlIFJpY2hUZXh0RmllbGQ8XG4gIFZhbHVlIGV4dGVuZHMgb2JqZWN0ID0gYW55LFxuICBBZGFwdGVyUHJvcHMgPSBhbnksXG4gIEV4dHJhUHJvcGVydGllcyA9IHt9LFxuPiA9IEZpZWxkQmFzZSAmIHtcbiAgYWRtaW4/OiBBZG1pblxuICBlZGl0b3I/OiBSaWNoVGV4dEFkYXB0ZXI8VmFsdWUsIEFkYXB0ZXJQcm9wcywgQWRhcHRlclByb3BzPlxuICB0eXBlOiAncmljaFRleHQnXG59ICYgRXh0cmFQcm9wZXJ0aWVzXG5cbmV4cG9ydCB0eXBlIEFycmF5RmllbGQgPSBGaWVsZEJhc2UgJiB7XG4gIGFkbWluPzogQWRtaW4gJiB7XG4gICAgY29tcG9uZW50cz86IHtcbiAgICAgIFJvd0xhYmVsPzogUm93TGFiZWxcbiAgICB9ICYgQWRtaW5bJ2NvbXBvbmVudHMnXVxuICAgIGluaXRDb2xsYXBzZWQ/OiBib29sZWFuIHwgZmFsc2VcbiAgfVxuICBmaWVsZHM6IEZpZWxkW11cbiAgLyoqIEN1c3RvbWl6ZSBnZW5lcmF0ZWQgR3JhcGhRTCBhbmQgVHlwZXNjcmlwdCBzY2hlbWEgbmFtZXMuXG4gICAqIEJ5IGRlZmF1bHQgaXQgaXMgYm91bmQgdG8gdGhlIGNvbGxlY3Rpb24uXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGdlbmVyYXRlIGEgdG9wIGxldmVsIHR5cGUgdG8gc2hhcmUgYW1vbmdzdCBjb2xsZWN0aW9ucy9maWVsZHMuXG4gICAqICoqTm90ZSoqOiBUb3AgbGV2ZWwgdHlwZXMgY2FuIGNvbGxpZGUsIGVuc3VyZSB0aGV5IGFyZSB1bmlxdWUgYW1vbmcgY29sbGVjdGlvbnMsIGFycmF5cywgZ3JvdXBzLCBibG9ja3MsIHRhYnMuXG4gICAqL1xuICBpbnRlcmZhY2VOYW1lPzogc3RyaW5nXG4gIGxhYmVscz86IExhYmVsc1xuICBtYXhSb3dzPzogbnVtYmVyXG4gIG1pblJvd3M/OiBudW1iZXJcbiAgdHlwZTogJ2FycmF5J1xufVxuXG5leHBvcnQgdHlwZSBSYWRpb0ZpZWxkID0gRmllbGRCYXNlICYge1xuICBhZG1pbj86IEFkbWluICYge1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICBFcnJvcj86IFJlYWN0LkNvbXBvbmVudFR5cGU8RXJyb3JQcm9wcz5cbiAgICAgIExhYmVsPzogUmVhY3QuQ29tcG9uZW50VHlwZTxMYWJlbFByb3BzPlxuICAgIH1cbiAgICBsYXlvdXQ/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnXG4gIH1cbiAgb3B0aW9uczogT3B0aW9uW11cbiAgdHlwZTogJ3JhZGlvJ1xufVxuXG5leHBvcnQgdHlwZSBCbG9jayA9IHtcbiAgZmllbGRzOiBGaWVsZFtdXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHBsZWFzZSBtaWdyYXRlIHRvIHRoZSBpbnRlcmZhY2VOYW1lIHByb3BlcnR5IGluc3RlYWQuICovXG4gIGdyYXBoUUw/OiB7XG4gICAgc2luZ3VsYXJOYW1lPzogc3RyaW5nXG4gIH1cbiAgaW1hZ2VBbHRUZXh0Pzogc3RyaW5nXG4gIGltYWdlVVJMPzogc3RyaW5nXG4gIC8qKiBDdXN0b21pemUgZ2VuZXJhdGVkIEdyYXBoUUwgYW5kIFR5cGVzY3JpcHQgc2NoZW1hIG5hbWVzLlxuICAgKiBUaGUgc2x1ZyBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGdlbmVyYXRlIGEgdG9wIGxldmVsIHR5cGUgdG8gc2hhcmUgYW1vbmdzdCBjb2xsZWN0aW9ucy9maWVsZHMuXG4gICAqICoqTm90ZSoqOiBUb3AgbGV2ZWwgdHlwZXMgY2FuIGNvbGxpZGUsIGVuc3VyZSB0aGV5IGFyZSB1bmlxdWUgYW1vbmcgY29sbGVjdGlvbnMsIGFycmF5cywgZ3JvdXBzLCBibG9ja3MsIHRhYnMuXG4gICAqL1xuICBpbnRlcmZhY2VOYW1lPzogc3RyaW5nXG4gIGxhYmVscz86IExhYmVsc1xuICBzbHVnOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQmxvY2tGaWVsZCA9IEZpZWxkQmFzZSAmIHtcbiAgYWRtaW4/OiBBZG1pbiAmIHtcbiAgICBpbml0Q29sbGFwc2VkPzogYm9vbGVhbiB8IGZhbHNlXG4gIH1cbiAgYmxvY2tzOiBCbG9ja1tdXG4gIGRlZmF1bHRWYWx1ZT86IHVua25vd25cbiAgbGFiZWxzPzogTGFiZWxzXG4gIG1heFJvd3M/OiBudW1iZXJcbiAgbWluUm93cz86IG51bWJlclxuICB0eXBlOiAnYmxvY2tzJ1xufVxuXG5leHBvcnQgdHlwZSBQb2ludEZpZWxkID0gRmllbGRCYXNlICYge1xuICB0eXBlOiAncG9pbnQnXG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkID1cbiAgfCBBcnJheUZpZWxkXG4gIHwgQmxvY2tGaWVsZFxuICB8IENoZWNrYm94RmllbGRcbiAgfCBDb2RlRmllbGRcbiAgfCBDb2xsYXBzaWJsZUZpZWxkXG4gIHwgRGF0ZUZpZWxkXG4gIHwgRW1haWxGaWVsZFxuICB8IEdyb3VwRmllbGRcbiAgfCBKU09ORmllbGRcbiAgfCBOdW1iZXJGaWVsZFxuICB8IFBvaW50RmllbGRcbiAgfCBSYWRpb0ZpZWxkXG4gIHwgUmVsYXRpb25zaGlwRmllbGRcbiAgfCBSaWNoVGV4dEZpZWxkXG4gIHwgUm93RmllbGRcbiAgfCBTZWxlY3RGaWVsZFxuICB8IFRhYnNGaWVsZFxuICB8IFRleHRGaWVsZFxuICB8IFRleHRhcmVhRmllbGRcbiAgfCBVSUZpZWxkXG4gIHwgVXBsb2FkRmllbGRcblxuZXhwb3J0IHR5cGUgRmllbGRBZmZlY3RpbmdEYXRhID1cbiAgfCBBcnJheUZpZWxkXG4gIHwgQmxvY2tGaWVsZFxuICB8IENoZWNrYm94RmllbGRcbiAgfCBDb2RlRmllbGRcbiAgfCBEYXRlRmllbGRcbiAgfCBFbWFpbEZpZWxkXG4gIHwgR3JvdXBGaWVsZFxuICB8IEpTT05GaWVsZFxuICB8IE51bWJlckZpZWxkXG4gIHwgUG9pbnRGaWVsZFxuICB8IFJhZGlvRmllbGRcbiAgfCBSZWxhdGlvbnNoaXBGaWVsZFxuICB8IFJpY2hUZXh0RmllbGRcbiAgfCBTZWxlY3RGaWVsZFxuICB8IFRhYkFzRmllbGRcbiAgfCBUZXh0RmllbGRcbiAgfCBUZXh0YXJlYUZpZWxkXG4gIHwgVXBsb2FkRmllbGRcblxuZXhwb3J0IHR5cGUgTm9uUHJlc2VudGF0aW9uYWxGaWVsZCA9XG4gIHwgQXJyYXlGaWVsZFxuICB8IEJsb2NrRmllbGRcbiAgfCBDaGVja2JveEZpZWxkXG4gIHwgQ29kZUZpZWxkXG4gIHwgQ29sbGFwc2libGVGaWVsZFxuICB8IERhdGVGaWVsZFxuICB8IEVtYWlsRmllbGRcbiAgfCBHcm91cEZpZWxkXG4gIHwgSlNPTkZpZWxkXG4gIHwgTnVtYmVyRmllbGRcbiAgfCBQb2ludEZpZWxkXG4gIHwgUmFkaW9GaWVsZFxuICB8IFJlbGF0aW9uc2hpcEZpZWxkXG4gIHwgUmljaFRleHRGaWVsZFxuICB8IFJvd0ZpZWxkXG4gIHwgU2VsZWN0RmllbGRcbiAgfCBUYWJzRmllbGRcbiAgfCBUZXh0RmllbGRcbiAgfCBUZXh0YXJlYUZpZWxkXG4gIHwgVXBsb2FkRmllbGRcblxuZXhwb3J0IHR5cGUgRmllbGRXaXRoUGF0aCA9IEZpZWxkICYge1xuICBwYXRoPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkV2l0aFN1YkZpZWxkcyA9IEFycmF5RmllbGQgfCBDb2xsYXBzaWJsZUZpZWxkIHwgR3JvdXBGaWVsZCB8IFJvd0ZpZWxkXG5cbmV4cG9ydCB0eXBlIEZpZWxkUHJlc2VudGF0aW9uYWxPbmx5ID0gVUlGaWVsZFxuXG5leHBvcnQgdHlwZSBGaWVsZFdpdGhNYW55ID0gUmVsYXRpb25zaGlwRmllbGQgfCBTZWxlY3RGaWVsZFxuXG5leHBvcnQgdHlwZSBGaWVsZFdpdGhNYXhEZXB0aCA9IFJlbGF0aW9uc2hpcEZpZWxkIHwgVXBsb2FkRmllbGRcblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSGFzU3ViRmllbGRzKGZpZWxkOiBGaWVsZCk6IGZpZWxkIGlzIEZpZWxkV2l0aFN1YkZpZWxkcyB7XG4gIHJldHVybiAoXG4gICAgZmllbGQudHlwZSA9PT0gJ2dyb3VwJyB8fFxuICAgIGZpZWxkLnR5cGUgPT09ICdhcnJheScgfHxcbiAgICBmaWVsZC50eXBlID09PSAncm93JyB8fFxuICAgIGZpZWxkLnR5cGUgPT09ICdjb2xsYXBzaWJsZSdcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmllbGRJc0FycmF5VHlwZShmaWVsZDogRmllbGQpOiBmaWVsZCBpcyBBcnJheUZpZWxkIHtcbiAgcmV0dXJuIGZpZWxkLnR5cGUgPT09ICdhcnJheSdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSXNCbG9ja1R5cGUoZmllbGQ6IEZpZWxkKTogZmllbGQgaXMgQmxvY2tGaWVsZCB7XG4gIHJldHVybiBmaWVsZC50eXBlID09PSAnYmxvY2tzJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uSXNPYmplY3Qob3B0aW9uOiBPcHRpb24pOiBvcHRpb24gaXMgT3B0aW9uT2JqZWN0IHtcbiAgcmV0dXJuIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25zQXJlT2JqZWN0cyhvcHRpb25zOiBPcHRpb25bXSk6IG9wdGlvbnMgaXMgT3B0aW9uT2JqZWN0W10ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShvcHRpb25zKSAmJiB0eXBlb2Ygb3B0aW9ucz8uWzBdID09PSAnb2JqZWN0J1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uSXNWYWx1ZShvcHRpb246IE9wdGlvbik6IG9wdGlvbiBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZydcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkU3VwcG9ydHNNYW55KGZpZWxkOiBGaWVsZCk6IGZpZWxkIGlzIEZpZWxkV2l0aE1hbnkge1xuICByZXR1cm4gZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgfHwgZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSGFzTWF4RGVwdGgoZmllbGQ6IEZpZWxkKTogZmllbGQgaXMgRmllbGRXaXRoTWF4RGVwdGgge1xuICByZXR1cm4gKFxuICAgIChmaWVsZC50eXBlID09PSAndXBsb2FkJyB8fCBmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJykgJiYgdHlwZW9mIGZpZWxkLm1heERlcHRoID09PSAnbnVtYmVyJ1xuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZElzUHJlc2VudGF0aW9uYWxPbmx5KGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGQpOiBmaWVsZCBpcyBVSUZpZWxkIHtcbiAgcmV0dXJuIGZpZWxkLnR5cGUgPT09ICd1aSdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkQWZmZWN0c0RhdGEoZmllbGQ6IEZpZWxkIHwgVGFiQXNGaWVsZCk6IGZpZWxkIGlzIEZpZWxkQWZmZWN0aW5nRGF0YSB7XG4gIHJldHVybiAnbmFtZScgaW4gZmllbGQgJiYgIWZpZWxkSXNQcmVzZW50YXRpb25hbE9ubHkoZmllbGQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJIYXNOYW1lKHRhYjogVGFiKTogdGFiIGlzIE5hbWVkVGFiIHtcbiAgcmV0dXJuICduYW1lJyBpbiB0YWJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSXNMb2NhbGl6ZWQoZmllbGQ6IEZpZWxkIHwgVGFiKTogYm9vbGVhbiB7XG4gIHJldHVybiAnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWRcbn1cblxuZXhwb3J0IHR5cGUgSG9va05hbWUgPVxuICB8ICdhZnRlckNoYW5nZSdcbiAgfCAnYWZ0ZXJSZWFkJ1xuICB8ICdiZWZvcmVDaGFuZ2UnXG4gIHwgJ2JlZm9yZVJlYWQnXG4gIHwgJ2JlZm9yZVZhbGlkYXRlJ1xuIl0sIm5hbWVzIjpbInZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbiIsImZpZWxkSGFzU3ViRmllbGRzIiwiZmllbGRJc0FycmF5VHlwZSIsImZpZWxkSXNCbG9ja1R5cGUiLCJvcHRpb25Jc09iamVjdCIsIm9wdGlvbnNBcmVPYmplY3RzIiwib3B0aW9uSXNWYWx1ZSIsImZpZWxkU3VwcG9ydHNNYW55IiwiZmllbGRIYXNNYXhEZXB0aCIsImZpZWxkSXNQcmVzZW50YXRpb25hbE9ubHkiLCJmaWVsZEFmZmVjdHNEYXRhIiwidGFiSGFzTmFtZSIsImZpZWxkSXNMb2NhbGl6ZWQiLCJ2YWx1ZSIsImZpZWxkIiwidHlwZSIsIm9wdGlvbiIsIm9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJtYXhEZXB0aCIsInRhYiIsImxvY2FsaXplZCJdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQXVDOzs7Ozs7Ozs7OztJQTZldkJBLHdCQUF3QjtlQUF4QkE7O0lBcUtBQyxpQkFBaUI7ZUFBakJBOztJQVNBQyxnQkFBZ0I7ZUFBaEJBOztJQUlBQyxnQkFBZ0I7ZUFBaEJBOztJQUlBQyxjQUFjO2VBQWRBOztJQUlBQyxpQkFBaUI7ZUFBakJBOztJQUlBQyxhQUFhO2VBQWJBOztJQUlBQyxpQkFBaUI7ZUFBakJBOztJQUlBQyxnQkFBZ0I7ZUFBaEJBOztJQU1BQyx5QkFBeUI7ZUFBekJBOztJQUlBQyxnQkFBZ0I7ZUFBaEJBOztJQUlBQyxVQUFVO2VBQVZBOztJQUlBQyxnQkFBZ0I7ZUFBaEJBOzs7QUF4TlQsU0FBU1oseUJBQXlCYSxLQUFjO0lBQ3JELE9BQU9BLFVBQVUsUUFBUSxPQUFPQSxVQUFVLFlBQVksZ0JBQWdCQSxTQUFTLFdBQVdBO0FBQzVGO0FBbUtPLFNBQVNaLGtCQUFrQmEsS0FBWTtJQUM1QyxPQUNFQSxNQUFNQyxJQUFJLEtBQUssV0FDZkQsTUFBTUMsSUFBSSxLQUFLLFdBQ2ZELE1BQU1DLElBQUksS0FBSyxTQUNmRCxNQUFNQyxJQUFJLEtBQUs7QUFFbkI7QUFFTyxTQUFTYixpQkFBaUJZLEtBQVk7SUFDM0MsT0FBT0EsTUFBTUMsSUFBSSxLQUFLO0FBQ3hCO0FBRU8sU0FBU1osaUJBQWlCVyxLQUFZO0lBQzNDLE9BQU9BLE1BQU1DLElBQUksS0FBSztBQUN4QjtBQUVPLFNBQVNYLGVBQWVZLE1BQWM7SUFDM0MsT0FBTyxPQUFPQSxXQUFXO0FBQzNCO0FBRU8sU0FBU1gsa0JBQWtCWSxPQUFpQjtJQUNqRCxPQUFPQyxNQUFNQyxPQUFPLENBQUNGLFlBQVksT0FBT0EsU0FBUyxDQUFDLEVBQUUsS0FBSztBQUMzRDtBQUVPLFNBQVNYLGNBQWNVLE1BQWM7SUFDMUMsT0FBTyxPQUFPQSxXQUFXO0FBQzNCO0FBRU8sU0FBU1Qsa0JBQWtCTyxLQUFZO0lBQzVDLE9BQU9BLE1BQU1DLElBQUksS0FBSyxZQUFZRCxNQUFNQyxJQUFJLEtBQUs7QUFDbkQ7QUFFTyxTQUFTUCxpQkFBaUJNLEtBQVk7SUFDM0MsT0FDRSxBQUFDQSxDQUFBQSxNQUFNQyxJQUFJLEtBQUssWUFBWUQsTUFBTUMsSUFBSSxLQUFLLGNBQWEsS0FBTSxPQUFPRCxNQUFNTSxRQUFRLEtBQUs7QUFFNUY7QUFFTyxTQUFTWCwwQkFBMEJLLEtBQXlCO0lBQ2pFLE9BQU9BLE1BQU1DLElBQUksS0FBSztBQUN4QjtBQUVPLFNBQVNMLGlCQUFpQkksS0FBeUI7SUFDeEQsT0FBTyxVQUFVQSxTQUFTLENBQUNMLDBCQUEwQks7QUFDdkQ7QUFFTyxTQUFTSCxXQUFXVSxHQUFRO0lBQ2pDLE9BQU8sVUFBVUE7QUFDbkI7QUFFTyxTQUFTVCxpQkFBaUJFLEtBQWtCO0lBQ2pELE9BQU8sZUFBZUEsU0FBU0EsTUFBTVEsU0FBUztBQUNoRCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAO3D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAUD,eAAO,MAAM,OAAO,0NAkBjB,IAAI,KAAG,QAAQ,IAAI,CAwdrB,CAAA"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAO3D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,cAAc,EAAE,OAAO,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAUD,eAAO,MAAM,OAAO,0NAkBjB,IAAI,KAAG,QAAQ,IAAI,CA2drB,CAAA"}
@@ -170,6 +170,7 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
170
170
  }, Promise.resolve());
171
171
  }
172
172
  // Execute access control
173
+ let allowDefaultValue = true;
173
174
  if (triggerAccessControl && field.access && field.access.read) {
174
175
  const result = overrideAccess ? true : await field.access.read({
175
176
  id: doc.id,
@@ -179,12 +180,13 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
179
180
  siblingData: siblingDoc
180
181
  });
181
182
  if (!result) {
183
+ allowDefaultValue = false;
182
184
  delete siblingDoc[field.name];
183
185
  }
184
186
  }
185
187
  // Set defaultValue on the field for globals being returned without being first created
186
188
  // or collection documents created prior to having a default
187
- if (typeof siblingDoc[field.name] === 'undefined' && typeof field.defaultValue !== 'undefined') {
189
+ if (allowDefaultValue && typeof siblingDoc[field.name] === 'undefined' && typeof field.defaultValue !== 'undefined') {
188
190
  siblingDoc[field.name] = await (0, _getDefaultValue.default)({
189
191
  defaultValue: field.defaultValue,
190
192
  locale: req.locale,
@@ -433,4 +435,4 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
433
435
  }
434
436
  };
435
437
 
436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmljaFRleHRBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9maWVsZC10eXBlcy9SaWNoVGV4dC90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IGdldFZhbHVlV2l0aERlZmF1bHQgZnJvbSAnLi4vLi4vZ2V0RGVmYXVsdFZhbHVlJ1xuaW1wb3J0IHJlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlIGZyb20gJy4vcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgY3VycmVudERlcHRoOiBudW1iZXJcbiAgZGVwdGg6IG51bWJlclxuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgZmllbGRQcm9taXNlczogUHJvbWlzZTx2b2lkPltdXG4gIGZpbmRNYW55OiBib29sZWFuXG4gIGZsYXR0ZW5Mb2NhbGVzOiBib29sZWFuXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXVxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM6IGJvb2xlYW5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2w/OiBib29sZWFuXG4gIHRyaWdnZXJIb29rcz86IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUmVtb3ZlIGhpZGRlbiBmaWVsZHMgZnJvbSByZXNwb25zZVxuLy8gLSBGbGF0dGVuIGxvY2FsZXMgaW50byByZXF1ZXN0ZWQgbG9jYWxlXG4vLyAtIFNhbml0aXplIG91dGdvaW5nIGRhdGEgKHBvaW50IGZpZWxkLCBldGMuKVxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIEV4ZWN1dGUgcmVhZCBhY2Nlc3MgY29udHJvbFxuLy8gLSBQb3B1bGF0ZSByZWxhdGlvbnNoaXBzXG5cbmV4cG9ydCBjb25zdCBwcm9taXNlID0gYXN5bmMgKHtcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgY3VycmVudERlcHRoLFxuICBkZXB0aCxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZmllbGRQcm9taXNlcyxcbiAgZmluZE1hbnksXG4gIGZsYXR0ZW5Mb2NhbGVzLFxuICBnbG9iYWwsXG4gIG92ZXJyaWRlQWNjZXNzLFxuICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gIHJlcSxcbiAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgc2libGluZ0RvYyxcbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wgPSB0cnVlLFxuICB0cmlnZ2VySG9va3MgPSB0cnVlLFxufTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoXG4gICAgZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiZcbiAgICBmaWVsZC5oaWRkZW4gJiZcbiAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhc2hvd0hpZGRlbkZpZWxkc1xuICApIHtcbiAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICB9XG5cbiAgY29uc3Qgc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSA9XG4gICAgZmxhdHRlbkxvY2FsZXMgJiZcbiAgICBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJlxuICAgIHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09IG51bGwgJiZcbiAgICBmaWVsZC5sb2NhbGl6ZWQgJiZcbiAgICByZXEubG9jYWxlICE9PSAnYWxsJyAmJlxuICAgIHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb25cblxuICBpZiAoc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSkge1xuICAgIC8vIHJlcGxhY2UgYWN0dWFsIHZhbHVlIHdpdGggbG9jYWxpemVkIHZhbHVlIGJlZm9yZSBzYW5pdGl6aW5nXG4gICAgLy8geyBbbG9jYWxlXTogZmllbGRzIH0gLT4gZmllbGRzXG4gICAgY29uc3QgeyBsb2NhbGUgfSA9IHJlcVxuICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdXG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPVxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiAmJlxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbj8uZmFsbGJhY2sgJiZcbiAgICAgIHJlcS5mYWxsYmFja0xvY2FsZVxuXG4gICAgbGV0IGhvaXN0ZWRWYWx1ZSA9IHZhbHVlXG5cbiAgICBpZiAoZmFsbGJhY2tMb2NhbGUgJiYgZmFsbGJhY2tMb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgY29uc3QgZmFsbGJhY2tWYWx1ZSA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1bZmFsbGJhY2tMb2NhbGVdXG4gICAgICBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGxcblxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvaXN0ZWRWYWx1ZVxuICB9XG5cbiAgLy8gU2FuaXRpemUgb3V0Z29pbmcgZmllbGQgdmFsdWVcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAvLyBGaWxsIGdyb3VwcyB3aXRoIGVtcHR5IG9iamVjdHMgc28gZmllbGRzIHdpdGggaG9va3Mgd2l0aGluIGdyb3VwcyBjYW4gcG9wdWxhdGVcbiAgICAgIC8vIHRoZW1zZWx2ZXMgdmlydHVhbGx5IGFzIG5lY2Vzc2FyeVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0YWJIYXNOYW1lKHRhYikgJiZcbiAgICAgICAgICAodHlwZW9mIHNpYmxpbmdEb2NbdGFiLm5hbWVdID09PSAndW5kZWZpbmVkJyB8fCBzaWJsaW5nRG9jW3RhYi5uYW1lXSA9PT0gbnVsbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2libGluZ0RvY1t0YWIubmFtZV0gPSB7fVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3JpY2hUZXh0Jzoge1xuICAgICAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBmaWVsZD8uZWRpdG9yXG4gICAgICAvLyBUaGlzIGlzIHJ1biBoZXJlIEFORCBpbiB0aGUgR3JhcGhRTCBSZXNvbHZlclxuICAgICAgaWYgKGVkaXRvcj8ucG9wdWxhdGlvblByb21pc2UpIHtcbiAgICAgICAgY29uc3QgcG9wdWxhdGlvblByb21pc2UgPSBlZGl0b3IucG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChwb3B1bGF0aW9uUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKHBvcHVsYXRpb25Qcm9taXNlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgaXMgb25seSBydW4gaGVyZSwgaW5kZXBlbmRlbnQgb2YgZGVwdGhcbiAgICAgIGlmIChlZGl0b3I/LmFmdGVyUmVhZFByb21pc2UpIHtcbiAgICAgICAgY29uc3QgYWZ0ZXJSZWFkUHJvbWlzZSA9IGVkaXRvcj8uYWZ0ZXJSZWFkUHJvbWlzZSh7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaW5jb21pbmdFZGl0b3JTdGF0ZTogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBvYmplY3QsXG4gICAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoYWZ0ZXJSZWFkUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKGFmdGVyUmVhZFByb21pc2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIGNvbnN0IHBvaW50RG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9pbnREb2M/LmNvb3JkaW5hdGVzKSAmJiBwb2ludERvYy5jb29yZGluYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHBvaW50RG9jLmNvb3JkaW5hdGVzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKHRyaWdnZXJIb29rcyAmJiBmaWVsZC5ob29rcz8uYWZ0ZXJSZWFkKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGN1cnJlbnRIb29rKSA9PiB7XG4gICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgIGNvbnN0IHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMgPVxuICAgICAgICAgIGZpZWxkLmxvY2FsaXplZCAmJlxuICAgICAgICAgIChyZXEubG9jYWxlID09PSAnYWxsJyB8fCAhZmxhdHRlbkxvY2FsZXMpICYmXG4gICAgICAgICAgdHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPT09ICdvYmplY3QnXG5cbiAgICAgICAgaWYgKHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMpIHtcbiAgICAgICAgICBjb25zdCBob29rUHJvbWlzZXMgPSBPYmplY3QuZW50cmllcyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKS5tYXAoKFtsb2NhbGUsIHZhbHVlXSkgPT5cbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGhvb2tlZFZhbHVlID0gYXdhaXQgY3VycmVudEhvb2soe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBkYXRhOiBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ3JlYWQnLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRG9jLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGlmIChob29rZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChob29rUHJvbWlzZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGRhdGE6IGRvYyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICBvcGVyYXRpb246ICdyZWFkJyxcbiAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RvYyxcbiAgICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGFjY2VzcyBjb250cm9sXG4gICAgaWYgKHRyaWdnZXJBY2Nlc3NDb250cm9sICYmIGZpZWxkLmFjY2VzcyAmJiBmaWVsZC5hY2Nlc3MucmVhZCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gb3ZlcnJpZGVBY2Nlc3NcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogYXdhaXQgZmllbGQuYWNjZXNzLnJlYWQoe1xuICAgICAgICAgICAgaWQ6IGRvYy5pZCBhcyBudW1iZXIgfCBzdHJpbmcsXG4gICAgICAgICAgICBkYXRhOiBkb2MsXG4gICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RvYyxcbiAgICAgICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0VmFsdWUgb24gdGhlIGZpZWxkIGZvciBnbG9iYWxzIGJlaW5nIHJldHVybmVkIHdpdGhvdXQgYmVpbmcgZmlyc3QgY3JlYXRlZFxuICAgIC8vIG9yIGNvbGxlY3Rpb24gZG9jdW1lbnRzIGNyZWF0ZWQgcHJpb3IgdG8gaGF2aW5nIGEgZGVmYXVsdFxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mIGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICApIHtcbiAgICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSBhd2FpdCBnZXRWYWx1ZVdpdGhEZWZhdWx0KHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBmaWVsZC5kZWZhdWx0VmFsdWUsXG4gICAgICAgIGxvY2FsZTogcmVxLmxvY2FsZSxcbiAgICAgICAgdXNlcjogcmVxLnVzZXIsXG4gICAgICAgIHZhbHVlOiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgfHwgZmllbGQudHlwZSA9PT0gJ3VwbG9hZCcpIHtcbiAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKFxuICAgICAgICByZWxhdGlvbnNoaXBQb3B1bGF0aW9uUHJvbWlzZSh7XG4gICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgbGV0IGdyb3VwRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0JykgZ3JvdXBEb2MgPSB7fVxuXG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGZpbmRNYW55LFxuICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIHNpYmxpbmdEb2M6IGdyb3VwRG9jLFxuICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgICBzaWJsaW5nRG9jOiByb3cgfHwge30sXG4gICAgICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICghc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSAmJiB0eXBlb2Ygcm93cyA9PT0gJ29iamVjdCcgJiYgcm93cyAhPT0gbnVsbCkge1xuICAgICAgICBPYmplY3QudmFsdWVzKHJvd3MpLmZvckVhY2goKGxvY2FsZVJvd3MpID0+IHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVSb3dzKSkge1xuICAgICAgICAgICAgbG9jYWxlUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3cgfHwge30sXG4gICAgICAgICAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgICAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gW11cbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvdyB8fCB7fSxcbiAgICAgICAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICghc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSAmJiB0eXBlb2Ygcm93cyA9PT0gJ29iamVjdCcgJiYgcm93cyAhPT0gbnVsbCkge1xuICAgICAgICBPYmplY3QudmFsdWVzKHJvd3MpLmZvckVhY2goKGxvY2FsZVJvd3MpID0+IHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVSb3dzKSkge1xuICAgICAgICAgICAgbG9jYWxlUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoYmxvY2tUeXBlKSA9PiBibG9ja1R5cGUuc2x1ZyA9PT0gcm93LmJsb2NrVHlwZSlcblxuICAgICAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvdyB8fCB7fSxcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IFtdXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAncm93JzpcbiAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICBkZXB0aCxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgZmluZE1hbnksXG4gICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAndGFiJzoge1xuICAgICAgbGV0IHRhYkRvYyA9IHNpYmxpbmdEb2NcbiAgICAgIGlmICh0YWJIYXNOYW1lKGZpZWxkKSkge1xuICAgICAgICB0YWJEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHRhYkRvYyA9IHt9XG4gICAgICB9XG5cbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICBkZXB0aCxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgZmluZE1hbnksXG4gICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgc2libGluZ0RvYzogdGFiRG9jLFxuICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgIGZpbmRNYW55LFxuICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICB9KVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbInByb21pc2UiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsImN1cnJlbnREZXB0aCIsImRlcHRoIiwiZG9jIiwiZmllbGQiLCJmaWVsZFByb21pc2VzIiwiZmluZE1hbnkiLCJmbGF0dGVuTG9jYWxlcyIsImdsb2JhbCIsIm92ZXJyaWRlQWNjZXNzIiwicG9wdWxhdGlvblByb21pc2VzIiwicmVxIiwic2hvd0hpZGRlbkZpZWxkcyIsInNpYmxpbmdEb2MiLCJ0cmlnZ2VyQWNjZXNzQ29udHJvbCIsInRyaWdnZXJIb29rcyIsImZpZWxkQWZmZWN0c0RhdGEiLCJoaWRkZW4iLCJuYW1lIiwic2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSIsImxvY2FsaXplZCIsImxvY2FsZSIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJ2YWx1ZSIsImZhbGxiYWNrTG9jYWxlIiwiZmFsbGJhY2siLCJob2lzdGVkVmFsdWUiLCJmYWxsYmFja1ZhbHVlIiwiaXNOdWxsT3JVbmRlZmluZWQiLCJ0eXBlIiwidGFicyIsImZvckVhY2giLCJ0YWIiLCJ0YWJIYXNOYW1lIiwiZWRpdG9yIiwicG9wdWxhdGlvblByb21pc2UiLCJwdXNoIiwiYWZ0ZXJSZWFkUHJvbWlzZSIsImluY29taW5nRWRpdG9yU3RhdGUiLCJwb2ludERvYyIsIkFycmF5IiwiaXNBcnJheSIsImNvb3JkaW5hdGVzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiaG9va3MiLCJhZnRlclJlYWQiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJjdXJyZW50SG9vayIsInNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMiLCJob29rUHJvbWlzZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwiaG9va2VkVmFsdWUiLCJkYXRhIiwib3BlcmF0aW9uIiwib3JpZ2luYWxEb2MiLCJzaWJsaW5nRGF0YSIsIlByb21pc2UiLCJhbGwiLCJyZXNvbHZlIiwiYWNjZXNzIiwicmVhZCIsInJlc3VsdCIsImlkIiwiZGVmYXVsdFZhbHVlIiwiZ2V0VmFsdWVXaXRoRGVmYXVsdCIsInVzZXIiLCJyZWxhdGlvbnNoaXBQb3B1bGF0aW9uUHJvbWlzZSIsImdyb3VwRG9jIiwidHJhdmVyc2VGaWVsZHMiLCJmaWVsZHMiLCJyb3dzIiwicm93IiwidmFsdWVzIiwibG9jYWxlUm93cyIsImJsb2NrIiwiYmxvY2tzIiwiZmluZCIsImJsb2NrVHlwZSIsInNsdWciLCJ0YWJEb2MiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkF3Q3ZCQTs7O2VBQUFBOzs7dUJBakNnQzt3RUFDYjtzRkFDVTtnQ0FDWDs7Ozs7O0FBOEJ4QixNQUFNQSxVQUFVLE9BQU8sRUFDNUJDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxZQUFZLEVBQ1pDLEtBQUssRUFDTEMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLGFBQWEsRUFDYkMsUUFBUSxFQUNSQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLEdBQUcsRUFDSEMsZ0JBQWdCLEVBQ2hCQyxVQUFVLEVBQ1ZDLHVCQUF1QixJQUFJLEVBQzNCQyxlQUFlLElBQUksRUFDZDtJQUNMLElBQ0VDLElBQUFBLHVCQUFnQixFQUFDWixVQUNqQkEsTUFBTWEsTUFBTSxJQUNaLE9BQU9KLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssZUFDbEMsQ0FBQ04sa0JBQ0Q7UUFDQSxPQUFPQyxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztJQUMvQjtJQUVBLE1BQU1DLDRCQUNKWixrQkFDQVMsSUFBQUEsdUJBQWdCLEVBQUNaLFVBQ2pCLE9BQU9TLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssWUFDbENMLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssUUFDM0JkLE1BQU1nQixTQUFTLElBQ2ZULElBQUlVLE1BQU0sS0FBSyxTQUNmVixJQUFJVyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsWUFBWTtJQUVqQyxJQUFJTCwyQkFBMkI7UUFDN0IsOERBQThEO1FBQzlELGlDQUFpQztRQUNqQyxNQUFNLEVBQUVFLE1BQU0sRUFBRSxHQUFHVjtRQUNuQixNQUFNYyxRQUFRWixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxDQUFDRyxPQUFPO1FBQzVDLE1BQU1LLGlCQUNKZixJQUFJVyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsWUFBWSxJQUMvQmIsSUFBSVcsT0FBTyxDQUFDQyxNQUFNLENBQUNDLFlBQVksRUFBRUcsWUFDakNoQixJQUFJZSxjQUFjO1FBRXBCLElBQUlFLGVBQWVIO1FBRW5CLElBQUlDLGtCQUFrQkEsbUJBQW1CTCxRQUFRO1lBQy9DLE1BQU1RLGdCQUFnQmhCLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLENBQUNRLGVBQWU7WUFDNUQsTUFBTUksb0JBQW9CLE9BQU9MLFVBQVUsZUFBZUEsVUFBVTtZQUVwRSxJQUFJSSxlQUFlO2dCQUNqQixPQUFRekIsTUFBTTJCLElBQUk7b0JBQ2hCLEtBQUs7b0JBQ0wsS0FBSzt3QkFBWTs0QkFDZixJQUFJTixVQUFVLE1BQU1LLG1CQUFtQjtnQ0FDckNGLGVBQWVDOzRCQUNqQjs0QkFDQTt3QkFDRjtvQkFFQTt3QkFBUzs0QkFDUCxJQUFJQyxtQkFBbUI7Z0NBQ3JCRixlQUFlQzs0QkFDakI7NEJBQ0E7d0JBQ0Y7Z0JBQ0Y7WUFDRjtRQUNGO1FBRUFoQixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxHQUFHVTtJQUMzQjtJQUVBLGdDQUFnQztJQUNoQyxPQUFReEIsTUFBTTJCLElBQUk7UUFDaEIsS0FBSztZQUFTO2dCQUNaLGlGQUFpRjtnQkFDakYsb0NBQW9DO2dCQUNwQyxJQUFJLE9BQU9sQixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxLQUFLLGFBQWE7b0JBQ2pETCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQzVCO2dCQUVBO1lBQ0Y7UUFDQSxLQUFLO1lBQVE7Z0JBQ1hkLE1BQU00QixJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDQztvQkFDbEIsSUFDRUMsSUFBQUEsaUJBQVUsRUFBQ0QsUUFDVixDQUFBLE9BQU9yQixVQUFVLENBQUNxQixJQUFJaEIsSUFBSSxDQUFDLEtBQUssZUFBZUwsVUFBVSxDQUFDcUIsSUFBSWhCLElBQUksQ0FBQyxLQUFLLElBQUcsR0FDNUU7d0JBQ0FMLFVBQVUsQ0FBQ3FCLElBQUloQixJQUFJLENBQUMsR0FBRyxDQUFDO29CQUMxQjtnQkFDRjtnQkFFQTtZQUNGO1FBRUEsS0FBSztZQUFZO2dCQUNmLE1BQU1rQixTQUEwQmhDLE9BQU9nQztnQkFDdkMsK0NBQStDO2dCQUMvQyxJQUFJQSxRQUFRQyxtQkFBbUI7b0JBQzdCLE1BQU1BLG9CQUFvQkQsT0FBT0MsaUJBQWlCLENBQUM7d0JBQ2pEckM7d0JBQ0FDO3dCQUNBQzt3QkFDQUU7d0JBQ0FFO3dCQUNBQzt3QkFDQUU7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO29CQUNGO29CQUVBLElBQUl3QixtQkFBbUI7d0JBQ3JCM0IsbUJBQW1CNEIsSUFBSSxDQUFDRDtvQkFDMUI7Z0JBQ0Y7Z0JBRUEsOENBQThDO2dCQUM5QyxJQUFJRCxRQUFRRyxrQkFBa0I7b0JBQzVCLE1BQU1BLG1CQUFtQkgsUUFBUUcsaUJBQWlCO3dCQUNoRG5DO3dCQUNBb0MscUJBQXFCM0IsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUM7d0JBQzNDTDtvQkFDRjtvQkFFQSxJQUFJMEIsa0JBQWtCO3dCQUNwQjdCLG1CQUFtQjRCLElBQUksQ0FBQ0M7b0JBQzFCO2dCQUNGO2dCQUVBO1lBQ0Y7UUFFQSxLQUFLO1lBQVM7Z0JBQ1osTUFBTUUsV0FBVzVCLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDO2dCQUN2QyxJQUFJd0IsTUFBTUMsT0FBTyxDQUFDRixVQUFVRyxnQkFBZ0JILFNBQVNHLFdBQVcsQ0FBQ0MsTUFBTSxLQUFLLEdBQUc7b0JBQzdFaEMsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUMsR0FBR3VCLFNBQVNHLFdBQVc7Z0JBQy9DLE9BQU87b0JBQ0wvQixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxHQUFHNEI7Z0JBQzNCO2dCQUVBO1lBQ0Y7UUFFQTtZQUFTO2dCQUNQO1lBQ0Y7SUFDRjtJQUVBLElBQUk5QixJQUFBQSx1QkFBZ0IsRUFBQ1osUUFBUTtRQUMzQixnQkFBZ0I7UUFDaEIsSUFBSVcsZ0JBQWdCWCxNQUFNMkMsS0FBSyxFQUFFQyxXQUFXO1lBQzFDLE1BQU01QyxNQUFNMkMsS0FBSyxDQUFDQyxTQUFTLENBQUNDLE1BQU0sQ0FBQyxPQUFPQyxXQUFXQztnQkFDbkQsTUFBTUQ7Z0JBRU4sTUFBTUUsNEJBQ0poRCxNQUFNZ0IsU0FBUyxJQUNkVCxDQUFBQSxJQUFJVSxNQUFNLEtBQUssU0FBUyxDQUFDZCxjQUFhLEtBQ3ZDLE9BQU9NLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUs7Z0JBRXBDLElBQUlrQywyQkFBMkI7b0JBQzdCLE1BQU1DLGVBQWVDLE9BQU9DLE9BQU8sQ0FBQzFDLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEVBQUVzQyxHQUFHLENBQUMsQ0FBQyxDQUFDbkMsUUFBUUksTUFBTSxHQUM5RSxBQUFDLENBQUE7NEJBQ0MsTUFBTWdDLGNBQWMsTUFBTU4sWUFBWTtnQ0FDcENwRDtnQ0FDQUM7Z0NBQ0EwRCxNQUFNdkQ7Z0NBQ05DO2dDQUNBSTtnQ0FDQW1ELFdBQVc7Z0NBQ1hDLGFBQWF6RDtnQ0FDYlE7Z0NBQ0FrRCxhQUFhaEQ7Z0NBQ2JZOzRCQUNGOzRCQUVBLElBQUlnQyxnQkFBZ0JYLFdBQVc7Z0NBQzdCakMsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUMsQ0FBQ0csT0FBTyxHQUFHb0M7NEJBQ25DO3dCQUNGLENBQUE7b0JBR0YsTUFBTUssUUFBUUMsR0FBRyxDQUFDVjtnQkFDcEIsT0FBTztvQkFDTCxNQUFNSSxjQUFjLE1BQU1OLFlBQVk7d0JBQ3BDcEQ7d0JBQ0FDO3dCQUNBMEQsTUFBTXZEO3dCQUNOQzt3QkFDQUU7d0JBQ0FFO3dCQUNBbUQsV0FBVzt3QkFDWEMsYUFBYXpEO3dCQUNiUTt3QkFDQWtELGFBQWFoRDt3QkFDYlksT0FBT1osVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUM7b0JBQy9CO29CQUVBLElBQUl1QyxnQkFBZ0JYLFdBQVc7d0JBQzdCakMsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUMsR0FBR3VDO29CQUMzQjtnQkFDRjtZQUNGLEdBQUdLLFFBQVFFLE9BQU87UUFDcEI7UUFFQSx5QkFBeUI7UUFDekIsSUFBSWxELHdCQUF3QlYsTUFBTTZELE1BQU0sSUFBSTdELE1BQU02RCxNQUFNLENBQUNDLElBQUksRUFBRTtZQUM3RCxNQUFNQyxTQUFTMUQsaUJBQ1gsT0FDQSxNQUFNTCxNQUFNNkQsTUFBTSxDQUFDQyxJQUFJLENBQUM7Z0JBQ3RCRSxJQUFJakUsSUFBSWlFLEVBQUU7Z0JBQ1ZWLE1BQU12RDtnQkFDTkE7Z0JBQ0FRO2dCQUNBa0QsYUFBYWhEO1lBQ2Y7WUFFSixJQUFJLENBQUNzRCxRQUFRO2dCQUNYLE9BQU90RCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztZQUMvQjtRQUNGO1FBRUEsdUZBQXVGO1FBQ3ZGLDREQUE0RDtRQUM1RCxJQUNFLE9BQU9MLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssZUFDbEMsT0FBT2QsTUFBTWlFLFlBQVksS0FBSyxhQUM5QjtZQUNBeEQsVUFBVSxDQUFDVCxNQUFNYyxJQUFJLENBQUMsR0FBRyxNQUFNb0QsSUFBQUEsd0JBQW1CLEVBQUM7Z0JBQ2pERCxjQUFjakUsTUFBTWlFLFlBQVk7Z0JBQ2hDaEQsUUFBUVYsSUFBSVUsTUFBTTtnQkFDbEJrRCxNQUFNNUQsSUFBSTRELElBQUk7Z0JBQ2Q5QyxPQUFPWixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztZQUMvQjtRQUNGO1FBRUEsSUFBSWQsTUFBTTJCLElBQUksS0FBSyxrQkFBa0IzQixNQUFNMkIsSUFBSSxLQUFLLFVBQVU7WUFDNURyQixtQkFBbUI0QixJQUFJLENBQ3JCa0MsSUFBQUEsc0NBQTZCLEVBQUM7Z0JBQzVCdkU7Z0JBQ0FDO2dCQUNBRTtnQkFDQUs7Z0JBQ0FFO2dCQUNBQztnQkFDQUM7WUFDRjtRQUVKO0lBQ0Y7SUFFQSxPQUFRVCxNQUFNMkIsSUFBSTtRQUNoQixLQUFLO1lBQVM7Z0JBQ1osSUFBSTBDLFdBQVc1RCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztnQkFDckMsSUFBSSxPQUFPTCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxLQUFLLFVBQVV1RCxXQUFXLENBQUM7Z0JBRTVEQyxJQUFBQSw4QkFBYyxFQUFDO29CQUNiM0U7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBRTtvQkFDQXNFLFFBQVF2RSxNQUFNdUUsTUFBTTtvQkFDcEJyRTtvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUMsWUFBWTREO29CQUNaM0Q7b0JBQ0FDO2dCQUNGO2dCQUVBO1lBQ0Y7UUFFQSxLQUFLO1lBQVM7Z0JBQ1osTUFBTTZELE9BQU8vRCxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztnQkFFbkMsSUFBSXdCLE1BQU1DLE9BQU8sQ0FBQ2lDLE9BQU87b0JBQ3ZCQSxLQUFLM0MsT0FBTyxDQUFDLENBQUM0Qzt3QkFDWkgsSUFBQUEsOEJBQWMsRUFBQzs0QkFDYjNFOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUU7NEJBQ0FzRSxRQUFRdkUsTUFBTXVFLE1BQU07NEJBQ3BCckU7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDLFlBQVlnRSxPQUFPLENBQUM7NEJBQ3BCL0Q7NEJBQ0FDO3dCQUNGO29CQUNGO2dCQUNGLE9BQU8sSUFBSSxDQUFDSSw2QkFBNkIsT0FBT3lELFNBQVMsWUFBWUEsU0FBUyxNQUFNO29CQUNsRnRCLE9BQU93QixNQUFNLENBQUNGLE1BQU0zQyxPQUFPLENBQUMsQ0FBQzhDO3dCQUMzQixJQUFJckMsTUFBTUMsT0FBTyxDQUFDb0MsYUFBYTs0QkFDN0JBLFdBQVc5QyxPQUFPLENBQUMsQ0FBQzRDO2dDQUNsQkgsSUFBQUEsOEJBQWMsRUFBQztvQ0FDYjNFO29DQUNBQztvQ0FDQUM7b0NBQ0FDO29DQUNBQztvQ0FDQUU7b0NBQ0FzRSxRQUFRdkUsTUFBTXVFLE1BQU07b0NBQ3BCckU7b0NBQ0FDO29DQUNBQztvQ0FDQUM7b0NBQ0FDO29DQUNBQztvQ0FDQUM7b0NBQ0FDLFlBQVlnRSxPQUFPLENBQUM7b0NBQ3BCL0Q7b0NBQ0FDO2dDQUNGOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGLE9BQU87b0JBQ0xGLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDN0I7Z0JBQ0E7WUFDRjtRQUVBLEtBQUs7WUFBVTtnQkFDYixNQUFNMEQsT0FBTy9ELFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDO2dCQUVuQyxJQUFJd0IsTUFBTUMsT0FBTyxDQUFDaUMsT0FBTztvQkFDdkJBLEtBQUszQyxPQUFPLENBQUMsQ0FBQzRDO3dCQUNaLE1BQU1HLFFBQVE1RSxNQUFNNkUsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsWUFBY0EsVUFBVUMsSUFBSSxLQUFLUCxJQUFJTSxTQUFTO3dCQUUvRSxJQUFJSCxPQUFPOzRCQUNUTixJQUFBQSw4QkFBYyxFQUFDO2dDQUNiM0U7Z0NBQ0FDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDO2dDQUNBRTtnQ0FDQXNFLFFBQVFLLE1BQU1MLE1BQU07Z0NBQ3BCckU7Z0NBQ0FDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDLFlBQVlnRSxPQUFPLENBQUM7Z0NBQ3BCL0Q7Z0NBQ0FDOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGLE9BQU8sSUFBSSxDQUFDSSw2QkFBNkIsT0FBT3lELFNBQVMsWUFBWUEsU0FBUyxNQUFNO29CQUNsRnRCLE9BQU93QixNQUFNLENBQUNGLE1BQU0zQyxPQUFPLENBQUMsQ0FBQzhDO3dCQUMzQixJQUFJckMsTUFBTUMsT0FBTyxDQUFDb0MsYUFBYTs0QkFDN0JBLFdBQVc5QyxPQUFPLENBQUMsQ0FBQzRDO2dDQUNsQixNQUFNRyxRQUFRNUUsTUFBTTZFLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLFlBQWNBLFVBQVVDLElBQUksS0FBS1AsSUFBSU0sU0FBUztnQ0FFL0UsSUFBSUgsT0FBTztvQ0FDVE4sSUFBQUEsOEJBQWMsRUFBQzt3Q0FDYjNFO3dDQUNBQzt3Q0FDQUM7d0NBQ0FDO3dDQUNBQzt3Q0FDQUU7d0NBQ0FzRSxRQUFRSyxNQUFNTCxNQUFNO3dDQUNwQnJFO3dDQUNBQzt3Q0FDQUM7d0NBQ0FDO3dDQUNBQzt3Q0FDQUM7d0NBQ0FDO3dDQUNBQyxZQUFZZ0UsT0FBTyxDQUFDO3dDQUNwQi9EO3dDQUNBQztvQ0FDRjtnQ0FDRjs0QkFDRjt3QkFDRjtvQkFDRjtnQkFDRixPQUFPO29CQUNMRixVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzdCO2dCQUVBO1lBQ0Y7UUFFQSxLQUFLO1FBQ0wsS0FBSztZQUFlO2dCQUNsQndELElBQUFBLDhCQUFjLEVBQUM7b0JBQ2IzRTtvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FFO29CQUNBc0UsUUFBUXZFLE1BQU11RSxNQUFNO29CQUNwQnJFO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO2dCQUNGO2dCQUVBO1lBQ0Y7UUFFQSxLQUFLO1lBQU87Z0JBQ1YsSUFBSXNFLFNBQVN4RTtnQkFDYixJQUFJc0IsSUFBQUEsaUJBQVUsRUFBQy9CLFFBQVE7b0JBQ3JCaUYsU0FBU3hFLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDO29CQUMvQixJQUFJLE9BQU9MLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssVUFBVW1FLFNBQVMsQ0FBQztnQkFDNUQ7Z0JBRUFYLElBQUFBLDhCQUFjLEVBQUM7b0JBQ2IzRTtvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FFO29CQUNBc0UsUUFBUXZFLE1BQU11RSxNQUFNO29CQUNwQnJFO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQyxZQUFZd0U7b0JBQ1p2RTtvQkFDQUM7Z0JBQ0Y7Z0JBRUE7WUFDRjtRQUVBLEtBQUs7WUFBUTtnQkFDWDJELElBQUFBLDhCQUFjLEVBQUM7b0JBQ2IzRTtvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FFO29CQUNBc0UsUUFBUXZFLE1BQU00QixJQUFJLENBQUN3QixHQUFHLENBQUMsQ0FBQ3RCLE1BQVMsQ0FBQTs0QkFBRSxHQUFHQSxHQUFHOzRCQUFFSCxNQUFNO3dCQUFNLENBQUE7b0JBQ3ZEekI7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7Z0JBQ0Y7Z0JBQ0E7WUFDRjtRQUVBO1lBQVM7Z0JBQ1A7WUFDRjtJQUNGO0FBQ0YifQ==
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmljaFRleHRBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9maWVsZC10eXBlcy9SaWNoVGV4dC90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IGdldFZhbHVlV2l0aERlZmF1bHQgZnJvbSAnLi4vLi4vZ2V0RGVmYXVsdFZhbHVlJ1xuaW1wb3J0IHJlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlIGZyb20gJy4vcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgY3VycmVudERlcHRoOiBudW1iZXJcbiAgZGVwdGg6IG51bWJlclxuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgZmllbGRQcm9taXNlczogUHJvbWlzZTx2b2lkPltdXG4gIGZpbmRNYW55OiBib29sZWFuXG4gIGZsYXR0ZW5Mb2NhbGVzOiBib29sZWFuXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXVxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM6IGJvb2xlYW5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2w/OiBib29sZWFuXG4gIHRyaWdnZXJIb29rcz86IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUmVtb3ZlIGhpZGRlbiBmaWVsZHMgZnJvbSByZXNwb25zZVxuLy8gLSBGbGF0dGVuIGxvY2FsZXMgaW50byByZXF1ZXN0ZWQgbG9jYWxlXG4vLyAtIFNhbml0aXplIG91dGdvaW5nIGRhdGEgKHBvaW50IGZpZWxkLCBldGMuKVxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIEV4ZWN1dGUgcmVhZCBhY2Nlc3MgY29udHJvbFxuLy8gLSBQb3B1bGF0ZSByZWxhdGlvbnNoaXBzXG5cbmV4cG9ydCBjb25zdCBwcm9taXNlID0gYXN5bmMgKHtcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgY3VycmVudERlcHRoLFxuICBkZXB0aCxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZmllbGRQcm9taXNlcyxcbiAgZmluZE1hbnksXG4gIGZsYXR0ZW5Mb2NhbGVzLFxuICBnbG9iYWwsXG4gIG92ZXJyaWRlQWNjZXNzLFxuICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gIHJlcSxcbiAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgc2libGluZ0RvYyxcbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wgPSB0cnVlLFxuICB0cmlnZ2VySG9va3MgPSB0cnVlLFxufTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoXG4gICAgZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiZcbiAgICBmaWVsZC5oaWRkZW4gJiZcbiAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhc2hvd0hpZGRlbkZpZWxkc1xuICApIHtcbiAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICB9XG5cbiAgY29uc3Qgc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSA9XG4gICAgZmxhdHRlbkxvY2FsZXMgJiZcbiAgICBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJlxuICAgIHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09IG51bGwgJiZcbiAgICBmaWVsZC5sb2NhbGl6ZWQgJiZcbiAgICByZXEubG9jYWxlICE9PSAnYWxsJyAmJlxuICAgIHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb25cblxuICBpZiAoc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSkge1xuICAgIC8vIHJlcGxhY2UgYWN0dWFsIHZhbHVlIHdpdGggbG9jYWxpemVkIHZhbHVlIGJlZm9yZSBzYW5pdGl6aW5nXG4gICAgLy8geyBbbG9jYWxlXTogZmllbGRzIH0gLT4gZmllbGRzXG4gICAgY29uc3QgeyBsb2NhbGUgfSA9IHJlcVxuICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdXG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPVxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiAmJlxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbj8uZmFsbGJhY2sgJiZcbiAgICAgIHJlcS5mYWxsYmFja0xvY2FsZVxuXG4gICAgbGV0IGhvaXN0ZWRWYWx1ZSA9IHZhbHVlXG5cbiAgICBpZiAoZmFsbGJhY2tMb2NhbGUgJiYgZmFsbGJhY2tMb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgY29uc3QgZmFsbGJhY2tWYWx1ZSA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1bZmFsbGJhY2tMb2NhbGVdXG4gICAgICBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGxcblxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvaXN0ZWRWYWx1ZVxuICB9XG5cbiAgLy8gU2FuaXRpemUgb3V0Z29pbmcgZmllbGQgdmFsdWVcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAvLyBGaWxsIGdyb3VwcyB3aXRoIGVtcHR5IG9iamVjdHMgc28gZmllbGRzIHdpdGggaG9va3Mgd2l0aGluIGdyb3VwcyBjYW4gcG9wdWxhdGVcbiAgICAgIC8vIHRoZW1zZWx2ZXMgdmlydHVhbGx5IGFzIG5lY2Vzc2FyeVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0YWJIYXNOYW1lKHRhYikgJiZcbiAgICAgICAgICAodHlwZW9mIHNpYmxpbmdEb2NbdGFiLm5hbWVdID09PSAndW5kZWZpbmVkJyB8fCBzaWJsaW5nRG9jW3RhYi5uYW1lXSA9PT0gbnVsbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2libGluZ0RvY1t0YWIubmFtZV0gPSB7fVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3JpY2hUZXh0Jzoge1xuICAgICAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBmaWVsZD8uZWRpdG9yXG4gICAgICAvLyBUaGlzIGlzIHJ1biBoZXJlIEFORCBpbiB0aGUgR3JhcGhRTCBSZXNvbHZlclxuICAgICAgaWYgKGVkaXRvcj8ucG9wdWxhdGlvblByb21pc2UpIHtcbiAgICAgICAgY29uc3QgcG9wdWxhdGlvblByb21pc2UgPSBlZGl0b3IucG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChwb3B1bGF0aW9uUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKHBvcHVsYXRpb25Qcm9taXNlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgaXMgb25seSBydW4gaGVyZSwgaW5kZXBlbmRlbnQgb2YgZGVwdGhcbiAgICAgIGlmIChlZGl0b3I/LmFmdGVyUmVhZFByb21pc2UpIHtcbiAgICAgICAgY29uc3QgYWZ0ZXJSZWFkUHJvbWlzZSA9IGVkaXRvcj8uYWZ0ZXJSZWFkUHJvbWlzZSh7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaW5jb21pbmdFZGl0b3JTdGF0ZTogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBvYmplY3QsXG4gICAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoYWZ0ZXJSZWFkUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKGFmdGVyUmVhZFByb21pc2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIGNvbnN0IHBvaW50RG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9pbnREb2M/LmNvb3JkaW5hdGVzKSAmJiBwb2ludERvYy5jb29yZGluYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHBvaW50RG9jLmNvb3JkaW5hdGVzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKHRyaWdnZXJIb29rcyAmJiBmaWVsZC5ob29rcz8uYWZ0ZXJSZWFkKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGN1cnJlbnRIb29rKSA9PiB7XG4gICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgIGNvbnN0IHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMgPVxuICAgICAgICAgIGZpZWxkLmxvY2FsaXplZCAmJlxuICAgICAgICAgIChyZXEubG9jYWxlID09PSAnYWxsJyB8fCAhZmxhdHRlbkxvY2FsZXMpICYmXG4gICAgICAgICAgdHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPT09ICdvYmplY3QnXG5cbiAgICAgICAgaWYgKHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMpIHtcbiAgICAgICAgICBjb25zdCBob29rUHJvbWlzZXMgPSBPYmplY3QuZW50cmllcyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKS5tYXAoKFtsb2NhbGUsIHZhbHVlXSkgPT5cbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGhvb2tlZFZhbHVlID0gYXdhaXQgY3VycmVudEhvb2soe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBkYXRhOiBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ3JlYWQnLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRG9jLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGlmIChob29rZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChob29rUHJvbWlzZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGRhdGE6IGRvYyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICBvcGVyYXRpb246ICdyZWFkJyxcbiAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RvYyxcbiAgICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGFjY2VzcyBjb250cm9sXG4gICAgbGV0IGFsbG93RGVmYXVsdFZhbHVlID0gdHJ1ZVxuICAgIGlmICh0cmlnZ2VyQWNjZXNzQ29udHJvbCAmJiBmaWVsZC5hY2Nlc3MgJiYgZmllbGQuYWNjZXNzLnJlYWQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlQWNjZXNzXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGF3YWl0IGZpZWxkLmFjY2Vzcy5yZWFkKHtcbiAgICAgICAgICAgIGlkOiBkb2MuaWQgYXMgbnVtYmVyIHwgc3RyaW5nLFxuICAgICAgICAgICAgZGF0YTogZG9jLFxuICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgc2libGluZ0RhdGE6IHNpYmxpbmdEb2MsXG4gICAgICAgICAgfSlcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgYWxsb3dEZWZhdWx0VmFsdWUgPSBmYWxzZVxuICAgICAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0VmFsdWUgb24gdGhlIGZpZWxkIGZvciBnbG9iYWxzIGJlaW5nIHJldHVybmVkIHdpdGhvdXQgYmVpbmcgZmlyc3QgY3JlYXRlZFxuICAgIC8vIG9yIGNvbGxlY3Rpb24gZG9jdW1lbnRzIGNyZWF0ZWQgcHJpb3IgdG8gaGF2aW5nIGEgZGVmYXVsdFxuICAgIGlmIChcbiAgICAgIGFsbG93RGVmYXVsdFZhbHVlICYmXG4gICAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiBmaWVsZC5kZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnXG4gICAgKSB7XG4gICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gYXdhaXQgZ2V0VmFsdWVXaXRoRGVmYXVsdCh7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGQuZGVmYXVsdFZhbHVlLFxuICAgICAgICBsb2NhbGU6IHJlcS5sb2NhbGUsXG4gICAgICAgIHVzZXI6IHJlcS51c2VyLFxuICAgICAgICB2YWx1ZTogc2libGluZ0RvY1tmaWVsZC5uYW1lXSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICBwb3B1bGF0aW9uUHJvbWlzZXMucHVzaChcbiAgICAgICAgcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGxldCBncm91cERvYyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIGdyb3VwRG9jID0ge31cblxuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jOiBncm91cERvYyxcbiAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhvaXN0TG9jYWxpemVkVmFsdWUgJiYgdHlwZW9mIHJvd3MgPT09ICdvYmplY3QnICYmIHJvd3MgIT09IG51bGwpIHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhyb3dzKS5mb3JFYWNoKChsb2NhbGVSb3dzKSA9PiB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9jYWxlUm93cykpIHtcbiAgICAgICAgICAgIGxvY2FsZVJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IFtdXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoYmxvY2tUeXBlKSA9PiBibG9ja1R5cGUuc2x1ZyA9PT0gcm93LmJsb2NrVHlwZSlcblxuICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3cgfHwge30sXG4gICAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhvaXN0TG9jYWxpemVkVmFsdWUgJiYgdHlwZW9mIHJvd3MgPT09ICdvYmplY3QnICYmIHJvd3MgIT09IG51bGwpIHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhyb3dzKS5mb3JFYWNoKChsb2NhbGVSb3dzKSA9PiB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9jYWxlUm93cykpIHtcbiAgICAgICAgICAgIGxvY2FsZVJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgICAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3cgfHwge30sXG4gICAgICAgICAgICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSBbXVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3Jvdyc6XG4gICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGZpbmRNYW55LFxuICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgIGxldCB0YWJEb2MgPSBzaWJsaW5nRG9jXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgdGFiRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSB0YWJEb2MgPSB7fVxuICAgICAgfVxuXG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGZpbmRNYW55LFxuICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIHNpYmxpbmdEb2M6IHRhYkRvYyxcbiAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICBkZXB0aCxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgfSlcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJwcm9taXNlIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJjdXJyZW50RGVwdGgiLCJkZXB0aCIsImRvYyIsImZpZWxkIiwiZmllbGRQcm9taXNlcyIsImZpbmRNYW55IiwiZmxhdHRlbkxvY2FsZXMiLCJnbG9iYWwiLCJvdmVycmlkZUFjY2VzcyIsInBvcHVsYXRpb25Qcm9taXNlcyIsInJlcSIsInNob3dIaWRkZW5GaWVsZHMiLCJzaWJsaW5nRG9jIiwidHJpZ2dlckFjY2Vzc0NvbnRyb2wiLCJ0cmlnZ2VySG9va3MiLCJmaWVsZEFmZmVjdHNEYXRhIiwiaGlkZGVuIiwibmFtZSIsInNob3VsZEhvaXN0TG9jYWxpemVkVmFsdWUiLCJsb2NhbGl6ZWQiLCJsb2NhbGUiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwidmFsdWUiLCJmYWxsYmFja0xvY2FsZSIsImZhbGxiYWNrIiwiaG9pc3RlZFZhbHVlIiwiZmFsbGJhY2tWYWx1ZSIsImlzTnVsbE9yVW5kZWZpbmVkIiwidHlwZSIsInRhYnMiLCJmb3JFYWNoIiwidGFiIiwidGFiSGFzTmFtZSIsImVkaXRvciIsInBvcHVsYXRpb25Qcm9taXNlIiwicHVzaCIsImFmdGVyUmVhZFByb21pc2UiLCJpbmNvbWluZ0VkaXRvclN0YXRlIiwicG9pbnREb2MiLCJBcnJheSIsImlzQXJyYXkiLCJjb29yZGluYXRlcyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImhvb2tzIiwiYWZ0ZXJSZWFkIiwicmVkdWNlIiwicHJpb3JIb29rIiwiY3VycmVudEhvb2siLCJzaG91bGRSdW5Ib29rT25BbGxMb2NhbGVzIiwiaG9va1Byb21pc2VzIiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsImhvb2tlZFZhbHVlIiwiZGF0YSIsIm9wZXJhdGlvbiIsIm9yaWdpbmFsRG9jIiwic2libGluZ0RhdGEiLCJQcm9taXNlIiwiYWxsIiwicmVzb2x2ZSIsImFsbG93RGVmYXVsdFZhbHVlIiwiYWNjZXNzIiwicmVhZCIsInJlc3VsdCIsImlkIiwiZGVmYXVsdFZhbHVlIiwiZ2V0VmFsdWVXaXRoRGVmYXVsdCIsInVzZXIiLCJyZWxhdGlvbnNoaXBQb3B1bGF0aW9uUHJvbWlzZSIsImdyb3VwRG9jIiwidHJhdmVyc2VGaWVsZHMiLCJmaWVsZHMiLCJyb3dzIiwicm93IiwidmFsdWVzIiwibG9jYWxlUm93cyIsImJsb2NrIiwiYmxvY2tzIiwiZmluZCIsImJsb2NrVHlwZSIsInNsdWciLCJ0YWJEb2MiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkF3Q3ZCQTs7O2VBQUFBOzs7dUJBakNnQzt3RUFDYjtzRkFDVTtnQ0FDWDs7Ozs7O0FBOEJ4QixNQUFNQSxVQUFVLE9BQU8sRUFDNUJDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxZQUFZLEVBQ1pDLEtBQUssRUFDTEMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLGFBQWEsRUFDYkMsUUFBUSxFQUNSQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLEdBQUcsRUFDSEMsZ0JBQWdCLEVBQ2hCQyxVQUFVLEVBQ1ZDLHVCQUF1QixJQUFJLEVBQzNCQyxlQUFlLElBQUksRUFDZDtJQUNMLElBQ0VDLElBQUFBLHVCQUFnQixFQUFDWixVQUNqQkEsTUFBTWEsTUFBTSxJQUNaLE9BQU9KLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssZUFDbEMsQ0FBQ04sa0JBQ0Q7UUFDQSxPQUFPQyxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztJQUMvQjtJQUVBLE1BQU1DLDRCQUNKWixrQkFDQVMsSUFBQUEsdUJBQWdCLEVBQUNaLFVBQ2pCLE9BQU9TLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssWUFDbENMLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssUUFDM0JkLE1BQU1nQixTQUFTLElBQ2ZULElBQUlVLE1BQU0sS0FBSyxTQUNmVixJQUFJVyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsWUFBWTtJQUVqQyxJQUFJTCwyQkFBMkI7UUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAQvB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAsB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAqB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAO5E,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKzD,CAAA;AAgGD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAkB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CA8DtE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAQvB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAsB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAqB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAO5E,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKzD,CAAA;AA6GD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAkB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CA8DtE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
@@ -259,6 +259,7 @@ const blocks = (value, { maxRows, minRows, required, t })=>{
259
259
  const validateFilterOptions = async (value, { id, data, filterOptions, payload, relationTo, req, siblingData, t, user })=>{
260
260
  if (!_canUseDOM.default && typeof filterOptions !== 'undefined' && value) {
261
261
  const options = {};
262
+ const falseCollections = [];
262
263
  const collections = typeof relationTo === 'string' ? [
263
264
  relationTo
264
265
  ] : relationTo;
@@ -266,13 +267,16 @@ const validateFilterOptions = async (value, { id, data, filterOptions, payload,
266
267
  value
267
268
  ];
268
269
  await Promise.all(collections.map(async (collection)=>{
269
- const optionFilter = typeof filterOptions === 'function' ? await filterOptions({
270
+ let optionFilter = typeof filterOptions === 'function' ? await filterOptions({
270
271
  id,
271
272
  data,
272
273
  relationTo: collection,
273
274
  siblingData,
274
275
  user
275
276
  }) : filterOptions;
277
+ if (optionFilter === true) {
278
+ optionFilter = null;
279
+ }
276
280
  const valueIDs = [];
277
281
  values.forEach((val)=>{
278
282
  if (typeof val === 'object' && val?.value) {
@@ -293,6 +297,9 @@ const validateFilterOptions = async (value, { id, data, filterOptions, payload,
293
297
  ]
294
298
  };
295
299
  if (optionFilter) findWhere.and.push(optionFilter);
300
+ if (optionFilter === false) {
301
+ falseCollections.push(optionFilter);
302
+ }
296
303
  const result = await payload.find({
297
304
  collection,
298
305
  depth: 0,
@@ -319,6 +326,9 @@ const validateFilterOptions = async (value, { id, data, filterOptions, payload,
319
326
  collection = val.relationTo;
320
327
  requestedID = val.value;
321
328
  }
329
+ if (falseCollections.find((slug)=>relationTo === slug)) {
330
+ return true;
331
+ }
322
332
  return options[collection].indexOf(requestedID) === -1;
323
333
  });
324
334
  if (invalidRelationships.length > 0) {
@@ -448,4 +458,4 @@ const _default = {
448
458
  upload
449
459
  };
450
460
 
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9leHBvcnRzL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBSaWNoVGV4dEZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNOdW1iZXInXG5pbXBvcnQgeyBpc1ZhbGlkSUQgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNWYWxpZElEJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgdGV4dDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgVGV4dEZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGNvbmZpZywgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcblxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGVtYWlsOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBFbWFpbEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiAhL1xcU1teXFxzQF0qQFxcUytcXC5cXFMrLy50ZXN0KHZhbHVlKSkgfHwgKCF2YWx1ZSAmJiByZXF1aXJlZCkpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjplbWFpbEFkZHJlc3MnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0YXJlYUZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgY29kZTogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ29kZUZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QganNvbjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgSlNPTkZpZWxkICYgeyBqc29uRXJyb3I/OiBzdHJpbmcgfT4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsganNvbkVycm9yLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoanNvbkVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNoZWNrYm94OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBDaGVja2JveEZpZWxkPiA9IChcbiAgdmFsdWU6IGJvb2xlYW4sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB8fCAocmVxdWlyZWQgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246dHJ1ZU9yRmFsc2UnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIERhdGVGaWVsZD4gPSAodmFsdWUsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUgJiYgIWlzTmFOKERhdGUucGFyc2UodmFsdWUudG9TdHJpbmcoKSkpKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbGluZSAqL1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpub3RWYWxpZERhdGUnLCB7IHZhbHVlIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcmljaFRleHQ6IFZhbGlkYXRlPG9iamVjdCwgdW5rbm93biwgUmljaFRleHRGaWVsZCwgUmljaFRleHRGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gb3B0aW9ucz8uZWRpdG9yXG5cbiAgcmV0dXJuIGF3YWl0IGVkaXRvci52YWxpZGF0ZSh2YWx1ZSwgb3B0aW9ucylcbn1cblxuY29uc3QgdmFsaWRhdGVBcnJheUxlbmd0aDogYW55ID0gKFxuICB2YWx1ZSxcbiAgb3B0aW9uczoge1xuICAgIG1heFJvd3M/OiBudW1iZXJcbiAgICBtaW5Sb3dzPzogbnVtYmVyXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuXG4gICAgdDogKGtleTogc3RyaW5nLCBvcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCBzdHJpbmcgfSkgPT4gc3RyaW5nXG4gIH0sXG4pID0+IHtcbiAgY29uc3QgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiAwXG5cbiAgaWYgKCFyZXF1aXJlZCAmJiBhcnJheUxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWVcblxuICBpZiAobWluUm93cyAmJiBhcnJheUxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiBhcnJheUxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIWFycmF5TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgbnVtYmVyOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBOdW1iZXJGaWVsZD4gPSAoXG4gIHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSxcbiAgeyBoYXNNYW55LCBtYXgsIG1heFJvd3MsIG1pbiwgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG4gICAgaWYgKHR5cGVvZiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb25SZXN1bHRcbiAgfVxuXG4gIGlmICghdmFsdWUgJiYgIWlzTnVtYmVyKHZhbHVlKSkge1xuICAgIC8vIGlmIG5vIHZhbHVlIGlzIHByZXNlbnQsIHZhbGlkYXRlIGJhc2VkIG9uIHJlcXVpcmVkXG4gICAgaWYgKHJlcXVpcmVkKSByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgaWYgKCFyZXF1aXJlZCkgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IG51bWJlcnNUb1ZhbGlkYXRlOiBudW1iZXJbXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgZm9yIChjb25zdCBudW1iZXIgb2YgbnVtYmVyc1RvVmFsaWRhdGUpIHtcbiAgICBpZiAoIWlzTnVtYmVyKG51bWJlcikpIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcblxuICAgIGNvbnN0IG51bWJlclZhbHVlID0gcGFyc2VGbG9hdChudW1iZXIgYXMgdW5rbm93biBhcyBzdHJpbmcpXG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgbnVtYmVyVmFsdWUgPiBtYXgpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWF4LCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWluID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA8IG1pbikge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtaW4sIHZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBBcnJheUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxufVxuXG5leHBvcnQgY29uc3QgYmxvY2tzOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBCbG9ja0ZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxufVxuXG5jb25zdCB2YWxpZGF0ZUZpbHRlck9wdGlvbnM6IFZhbGlkYXRlID0gYXN5bmMgKFxuICB2YWx1ZSxcbiAgeyBpZCwgZGF0YSwgZmlsdGVyT3B0aW9ucywgcGF5bG9hZCwgcmVsYXRpb25UbywgcmVxLCBzaWJsaW5nRGF0YSwgdCwgdXNlciB9LFxuKSA9PiB7XG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiBmaWx0ZXJPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSkge1xuICAgIGNvbnN0IG9wdGlvbnM6IHtcbiAgICAgIFtjb2xsZWN0aW9uOiBzdHJpbmddOiAobnVtYmVyIHwgc3RyaW5nKVtdXG4gICAgfSA9IHt9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9ucyA9IHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJyA/IFtyZWxhdGlvblRvXSA6IHJlbGF0aW9uVG9cbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb2xsZWN0aW9ucy5tYXAoYXN5bmMgKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uRmlsdGVyID1cbiAgICAgICAgICB0eXBlb2YgZmlsdGVyT3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBhd2FpdCBmaWx0ZXJPcHRpb25zKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogZmlsdGVyT3B0aW9uc1xuXG4gICAgICAgIGNvbnN0IHZhbHVlSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cblxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8udmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh2YWx1ZUlEcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZmluZFdoZXJlID0ge1xuICAgICAgICAgICAgYW5kOiBbeyBpZDogeyBpbjogdmFsdWVJRHMgfSB9XSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3B0aW9uRmlsdGVyKSBmaW5kV2hlcmUuYW5kLnB1c2gob3B0aW9uRmlsdGVyKVxuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB3aGVyZTogZmluZFdoZXJlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gcmVzdWx0LmRvY3MubWFwKChkb2MpID0+IGRvYy5pZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRDogbnVtYmVyIHwgc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHJlbGF0aW9uVG9cblxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbnNbY29sbGVjdGlvbl0uaW5kZXhPZihyZXF1ZXN0ZWRJRCkgPT09IC0xXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlbGF0aW9uc2hpcHMucmVkdWNlKChlcnIsIGludmFsaWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX0ke1xuICAgICAgICAgIGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA9PT0gaSArIDEgPyAnLCcgOiAnJ1xuICAgICAgICB9IGBcbiAgICAgIH0sIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbnMnKSkgYXMgc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB1cGxvYWQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFVwbG9hZEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCBvcHRpb25zKSA9PiB7XG4gIGlmICghdmFsdWUgJiYgb3B0aW9ucy5yZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGlkRmllbGQgPSBvcHRpb25zPy5jb25maWc/LmNvbGxlY3Rpb25zXG4gICAgICA/LmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gb3B0aW9ucy5yZWxhdGlvblRvKVxuICAgICAgPy5maWVsZHM/LmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuXG4gICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBvcHRpb25zPy5wYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgIGlmICghaXNWYWxpZElEKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMudCgndmFsaWRhdGlvbjp2YWxpZFVwbG9hZElEJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSZWxhdGlvbnNoaXBGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlOiBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IGNvbmZpZywgbWF4Um93cywgbWluUm93cywgcGF5bG9hZCwgcmVsYXRpb25UbywgcmVxdWlyZWQsIHQgfSA9IG9wdGlvbnNcblxuICBpZiAoKCF2YWx1ZSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSkgJiYgcmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgIGlmIChtaW5Sb3dzICYmIHZhbHVlLmxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgncm93cycpLCBtaW46IG1pblJvd3MsIHZhbHVlOiB2YWx1ZS5sZW5ndGggfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB2YWx1ZS5sZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpncmVhdGVyVGhhbk1heCcsIHsgbGFiZWw6IHQoJ3Jvd3MnKSwgbWF4OiBtYXhSb3dzLCB2YWx1ZTogdmFsdWUubGVuZ3RoIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgICBjb25zdCBpbnZhbGlkUmVsYXRpb25zaGlwcyA9IHZhbHVlcy5maWx0ZXIoKHZhbCkgPT4ge1xuICAgICAgbGV0IGNvbGxlY3Rpb25TbHVnOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRFxuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnID0gcmVsYXRpb25Ub1xuXG4gICAgICAgIC8vIGN1c3RvbSBpZFxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvblNsdWcgPSB2YWwucmVsYXRpb25Ub1xuICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbC52YWx1ZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVxdWVzdGVkSUQgPT09IG51bGwpIHJldHVybiBmYWxzZVxuXG4gICAgICBjb25zdCBpZEZpZWxkID0gY29uZmlnPy5jb2xsZWN0aW9uc1xuICAgICAgICA/LmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gY29sbGVjdGlvblNsdWcpXG4gICAgICAgID8uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcblxuICAgICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBwYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgICAgcmV0dXJuICFpc1ZhbGlkSUQocmVxdWVzdGVkSUQsIHR5cGUpXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFRoaXMgcmVsYXRpb25zaGlwIGZpZWxkIGhhcyB0aGUgZm9sbG93aW5nIGludmFsaWQgcmVsYXRpb25zaGlwczogJHtpbnZhbGlkUmVsYXRpb25zaGlwc1xuICAgICAgICAubWFwKChlcnIsIGludmFsaWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYCR7ZXJyfSAke0pTT04uc3RyaW5naWZ5KGludmFsaWQpfWBcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyl9YFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZUZpbHRlck9wdGlvbnModmFsdWUsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCBzZWxlY3Q6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFNlbGVjdEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgaGFzTWFueSwgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICB2YWx1ZS5zb21lKFxuICAgICAgKGlucHV0KSA9PlxuICAgICAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gaW5wdXQgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbj8udmFsdWUgPT09IGlucHV0KSxcbiAgICAgICAgKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgKHZhbHVlIGFzIFtdKT8ubGVuZ3RoID09PSAwKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJhZGlvOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSYWRpb0ZpZWxkPiA9ICh2YWx1ZSwgeyBvcHRpb25zLCByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlTWF0Y2hlc09wdGlvbiA9IG9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgICByZXR1cm4gdmFsdWVNYXRjaGVzT3B0aW9uIHx8IHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICByZXR1cm4gcmVxdWlyZWQgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBwb2ludDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUG9pbnRGaWVsZD4gPSAoXG4gIHZhbHVlOiBbbnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmddID0gWycnLCAnJ10sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBjb25zdCBsbmcgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVswXSkpXG4gIGNvbnN0IGxhdCA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzFdKSlcbiAgaWYgKFxuICAgIHJlcXVpcmVkICYmXG4gICAgKCh2YWx1ZVswXSAmJiB2YWx1ZVsxXSAmJiB0eXBlb2YgbG5nICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgbGF0ICE9PSAnbnVtYmVyJykgfHxcbiAgICAgIE51bWJlci5pc05hTihsbmcpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obGF0KSB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCAhPT0gMikpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzVHdvTnVtYmVycycpXG4gIH1cblxuICBpZiAoKHZhbHVlWzFdICYmIE51bWJlci5pc05hTihsbmcpKSB8fCAodmFsdWVbMF0gJiYgTnVtYmVyLmlzTmFOKGxhdCkpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYXJyYXksXG4gIGJsb2NrcyxcbiAgY2hlY2tib3gsXG4gIGNvZGUsXG4gIGRhdGUsXG4gIGVtYWlsLFxuICBqc29uLFxuICBudW1iZXIsXG4gIHBhc3N3b3JkLFxuICBwb2ludCxcbiAgcmFkaW8sXG4gIHJlbGF0aW9uc2hpcCxcbiAgcmljaFRleHQsXG4gIHNlbGVjdCxcbiAgdGV4dCxcbiAgdGV4dGFyZWEsXG4gIHVwbG9hZCxcbn1cbiJdLCJuYW1lcyI6WyJ0ZXh0IiwicGFzc3dvcmQiLCJlbWFpbCIsInRleHRhcmVhIiwiY29kZSIsImpzb24iLCJjaGVja2JveCIsImRhdGUiLCJyaWNoVGV4dCIsIm51bWJlciIsImFycmF5IiwiYmxvY2tzIiwidXBsb2FkIiwicmVsYXRpb25zaGlwIiwic2VsZWN0IiwicmFkaW8iLCJwb2ludCIsInZhbHVlIiwiY29uZmlnIiwibWF4TGVuZ3RoIiwiZmllbGRNYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJyZXF1aXJlZCIsInQiLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsImxlbmd0aCIsInBheWxvYWQiLCJ0ZXN0IiwidW5kZWZpbmVkIiwianNvbkVycm9yIiwiaXNOYU4iLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wdGlvbnMiLCJlZGl0b3IiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlQXJyYXlMZW5ndGgiLCJtYXhSb3dzIiwibWluUm93cyIsImFycmF5TGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiY291bnQiLCJsYWJlbCIsImhhc01hbnkiLCJtYXgiLCJtaW4iLCJsZW5ndGhWYWxpZGF0aW9uUmVzdWx0IiwiaXNOdW1iZXIiLCJudW1iZXJzVG9WYWxpZGF0ZSIsIm51bWJlclZhbHVlIiwicGFyc2VGbG9hdCIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwicmVxIiwic2libGluZ0RhdGEiLCJ1c2VyIiwiY2FuVXNlRE9NIiwiY29sbGVjdGlvbnMiLCJ2YWx1ZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiY29sbGVjdGlvbiIsIm9wdGlvbkZpbHRlciIsInZhbHVlSURzIiwiZm9yRWFjaCIsInZhbCIsInB1c2giLCJmaW5kV2hlcmUiLCJhbmQiLCJpbiIsInJlc3VsdCIsImZpbmQiLCJkZXB0aCIsImxpbWl0IiwicGFnaW5hdGlvbiIsIndoZXJlIiwiZG9jcyIsImRvYyIsImludmFsaWRSZWxhdGlvbnNoaXBzIiwiZmlsdGVyIiwicmVxdWVzdGVkSUQiLCJpbmRleE9mIiwicmVkdWNlIiwiZXJyIiwiaW52YWxpZCIsImkiLCJKU09OIiwic3RyaW5naWZ5IiwiaWRGaWVsZCIsInNsdWciLCJmaWVsZHMiLCJmaWVsZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwidHlwZSIsImdldElEVHlwZSIsImRiIiwiZGVmYXVsdElEVHlwZSIsImlzVmFsaWRJRCIsImNvbGxlY3Rpb25TbHVnIiwiam9pbiIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInZhbHVlTWF0Y2hlc09wdGlvbiIsImxuZyIsIlN0cmluZyIsImxhdCIsIk51bWJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUE0QmFBLElBQUk7ZUFBSkE7O0lBeUJBQyxRQUFRO2VBQVJBOztJQXdCQUMsS0FBSztlQUFMQTs7SUFRQUMsUUFBUTtlQUFSQTs7SUF1QkFDLElBQUk7ZUFBSkE7O0lBUUFDLElBQUk7ZUFBSkE7O0lBZUFDLFFBQVE7ZUFBUkE7O0lBV0FDLElBQUk7ZUFBSkE7O0lBaUJBQyxRQUFRO2VBQVJBOztJQXVDQUMsTUFBTTtlQUFOQTs7SUFrQ0FDLEtBQUs7ZUFBTEE7O0lBT0FDLE1BQU07ZUFBTkE7O0lBcUdBQyxNQUFNO2VBQU5BOztJQW9CQUMsWUFBWTtlQUFaQTs7SUFnRUFDLE1BQU07ZUFBTkE7O0lBcUNBQyxLQUFLO2VBQUxBOztJQVdBQyxLQUFLO2VBQUxBOztJQXVCYixPQWtCQztlQWxCRDs7O2tFQXpkc0I7MkJBQ0k7MEJBQ0Q7MkJBQ0M7dUJBQ087Ozs7OztBQUUxQixNQUFNaEIsT0FBOEMsQ0FDekRpQixPQUNBLEVBQUVDLE1BQU0sRUFBRUMsV0FBV0MsY0FBYyxFQUFFQyxTQUFTLEVBQUVDLFFBQVEsRUFBRUMsQ0FBQyxFQUFFO0lBRTdELElBQUlKO0lBRUosSUFBSSxPQUFPRCxRQUFRTSx5QkFBeUIsVUFBVUwsWUFBWUQsT0FBT00sb0JBQW9CO0lBQzdGLElBQUksT0FBT0osbUJBQW1CLFVBQVVELFlBQVlDO0lBQ3BELElBQUlILFNBQVNFLGFBQWFGLE1BQU1RLE1BQU0sR0FBR04sV0FBVztRQUNsRCxPQUFPSSxFQUFFLDZCQUE2QjtZQUFFSjtRQUFVO0lBQ3BEO0lBRUEsSUFBSUYsU0FBU0ksYUFBYUosT0FBT1EsU0FBU0osV0FBVztRQUNuRCxPQUFPRSxFQUFFLDRCQUE0QjtZQUFFRjtR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
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9leHBvcnRzL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBSaWNoVGV4dEZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNOdW1iZXInXG5pbXBvcnQgeyBpc1ZhbGlkSUQgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNWYWxpZElEJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgdGV4dDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgVGV4dEZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGNvbmZpZywgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcblxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGVtYWlsOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBFbWFpbEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiAhL1xcU1teXFxzQF0qQFxcUytcXC5cXFMrLy50ZXN0KHZhbHVlKSkgfHwgKCF2YWx1ZSAmJiByZXF1aXJlZCkpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjplbWFpbEFkZHJlc3MnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0YXJlYUZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgY29kZTogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ29kZUZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QganNvbjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgSlNPTkZpZWxkICYgeyBqc29uRXJyb3I/OiBzdHJpbmcgfT4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsganNvbkVycm9yLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoanNvbkVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNoZWNrYm94OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBDaGVja2JveEZpZWxkPiA9IChcbiAgdmFsdWU6IGJvb2xlYW4sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB8fCAocmVxdWlyZWQgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246dHJ1ZU9yRmFsc2UnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIERhdGVGaWVsZD4gPSAodmFsdWUsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUgJiYgIWlzTmFOKERhdGUucGFyc2UodmFsdWUudG9TdHJpbmcoKSkpKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbGluZSAqL1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpub3RWYWxpZERhdGUnLCB7IHZhbHVlIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcmljaFRleHQ6IFZhbGlkYXRlPG9iamVjdCwgdW5rbm93biwgUmljaFRleHRGaWVsZCwgUmljaFRleHRGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gb3B0aW9ucz8uZWRpdG9yXG5cbiAgcmV0dXJuIGF3YWl0IGVkaXRvci52YWxpZGF0ZSh2YWx1ZSwgb3B0aW9ucylcbn1cblxuY29uc3QgdmFsaWRhdGVBcnJheUxlbmd0aDogYW55ID0gKFxuICB2YWx1ZSxcbiAgb3B0aW9uczoge1xuICAgIG1heFJvd3M/OiBudW1iZXJcbiAgICBtaW5Sb3dzPzogbnVtYmVyXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuXG4gICAgdDogKGtleTogc3RyaW5nLCBvcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCBzdHJpbmcgfSkgPT4gc3RyaW5nXG4gIH0sXG4pID0+IHtcbiAgY29uc3QgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiAwXG5cbiAgaWYgKCFyZXF1aXJlZCAmJiBhcnJheUxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWVcblxuICBpZiAobWluUm93cyAmJiBhcnJheUxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiBhcnJheUxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIWFycmF5TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgbnVtYmVyOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBOdW1iZXJGaWVsZD4gPSAoXG4gIHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSxcbiAgeyBoYXNNYW55LCBtYXgsIG1heFJvd3MsIG1pbiwgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG4gICAgaWYgKHR5cGVvZiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb25SZXN1bHRcbiAgfVxuXG4gIGlmICghdmFsdWUgJiYgIWlzTnVtYmVyKHZhbHVlKSkge1xuICAgIC8vIGlmIG5vIHZhbHVlIGlzIHByZXNlbnQsIHZhbGlkYXRlIGJhc2VkIG9uIHJlcXVpcmVkXG4gICAgaWYgKHJlcXVpcmVkKSByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgaWYgKCFyZXF1aXJlZCkgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IG51bWJlcnNUb1ZhbGlkYXRlOiBudW1iZXJbXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgZm9yIChjb25zdCBudW1iZXIgb2YgbnVtYmVyc1RvVmFsaWRhdGUpIHtcbiAgICBpZiAoIWlzTnVtYmVyKG51bWJlcikpIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcblxuICAgIGNvbnN0IG51bWJlclZhbHVlID0gcGFyc2VGbG9hdChudW1iZXIgYXMgdW5rbm93biBhcyBzdHJpbmcpXG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgbnVtYmVyVmFsdWUgPiBtYXgpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWF4LCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWluID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA8IG1pbikge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtaW4sIHZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBBcnJheUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxufVxuXG5leHBvcnQgY29uc3QgYmxvY2tzOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBCbG9ja0ZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxufVxuXG5jb25zdCB2YWxpZGF0ZUZpbHRlck9wdGlvbnM6IFZhbGlkYXRlID0gYXN5bmMgKFxuICB2YWx1ZSxcbiAgeyBpZCwgZGF0YSwgZmlsdGVyT3B0aW9ucywgcGF5bG9hZCwgcmVsYXRpb25UbywgcmVxLCBzaWJsaW5nRGF0YSwgdCwgdXNlciB9LFxuKSA9PiB7XG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiBmaWx0ZXJPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSkge1xuICAgIGNvbnN0IG9wdGlvbnM6IHtcbiAgICAgIFtjb2xsZWN0aW9uOiBzdHJpbmddOiAobnVtYmVyIHwgc3RyaW5nKVtdXG4gICAgfSA9IHt9XG5cbiAgICBjb25zdCBmYWxzZUNvbGxlY3Rpb25zOiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY29sbGVjdGlvbnMgPSB0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycgPyBbcmVsYXRpb25Ub10gOiByZWxhdGlvblRvXG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29sbGVjdGlvbnMubWFwKGFzeW5jIChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb25GaWx0ZXIgPVxuICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGF3YWl0IGZpbHRlck9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbzogY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBmaWx0ZXJPcHRpb25zXG5cbiAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgIG9wdGlvbkZpbHRlciA9IG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cblxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8udmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh2YWx1ZUlEcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZmluZFdoZXJlID0ge1xuICAgICAgICAgICAgYW5kOiBbeyBpZDogeyBpbjogdmFsdWVJRHMgfSB9XSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3B0aW9uRmlsdGVyKSBmaW5kV2hlcmUuYW5kLnB1c2gob3B0aW9uRmlsdGVyKVxuXG4gICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGZhbHNlQ29sbGVjdGlvbnMucHVzaChvcHRpb25GaWx0ZXIpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB3aGVyZTogZmluZFdoZXJlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gcmVzdWx0LmRvY3MubWFwKChkb2MpID0+IGRvYy5pZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRDogbnVtYmVyIHwgc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHJlbGF0aW9uVG9cblxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKGZhbHNlQ29sbGVjdGlvbnMuZmluZCgoc2x1ZykgPT4gcmVsYXRpb25UbyA9PT0gc2x1ZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbnNbY29sbGVjdGlvbl0uaW5kZXhPZihyZXF1ZXN0ZWRJRCkgPT09IC0xXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlbGF0aW9uc2hpcHMucmVkdWNlKChlcnIsIGludmFsaWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX0ke1xuICAgICAgICAgIGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA9PT0gaSArIDEgPyAnLCcgOiAnJ1xuICAgICAgICB9IGBcbiAgICAgIH0sIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbnMnKSkgYXMgc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB1cGxvYWQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFVwbG9hZEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCBvcHRpb25zKSA9PiB7XG4gIGlmICghdmFsdWUgJiYgb3B0aW9ucy5yZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGlkRmllbGQgPSBvcHRpb25zPy5jb25maWc/LmNvbGxlY3Rpb25zXG4gICAgICA/LmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gb3B0aW9ucy5yZWxhdGlvblRvKVxuICAgICAgPy5maWVsZHM/LmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuXG4gICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBvcHRpb25zPy5wYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgIGlmICghaXNWYWxpZElEKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMudCgndmFsaWRhdGlvbjp2YWxpZFVwbG9hZElEJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSZWxhdGlvbnNoaXBGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlOiBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IGNvbmZpZywgbWF4Um93cywgbWluUm93cywgcGF5bG9hZCwgcmVsYXRpb25UbywgcmVxdWlyZWQsIHQgfSA9IG9wdGlvbnNcblxuICBpZiAoKCF2YWx1ZSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSkgJiYgcmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgIGlmIChtaW5Sb3dzICYmIHZhbHVlLmxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgncm93cycpLCBtaW46IG1pblJvd3MsIHZhbHVlOiB2YWx1ZS5sZW5ndGggfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB2YWx1ZS5sZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpncmVhdGVyVGhhbk1heCcsIHsgbGFiZWw6IHQoJ3Jvd3MnKSwgbWF4OiBtYXhSb3dzLCB2YWx1ZTogdmFsdWUubGVuZ3RoIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgICBjb25zdCBpbnZhbGlkUmVsYXRpb25zaGlwcyA9IHZhbHVlcy5maWx0ZXIoKHZhbCkgPT4ge1xuICAgICAgbGV0IGNvbGxlY3Rpb25TbHVnOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRFxuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnID0gcmVsYXRpb25Ub1xuXG4gICAgICAgIC8vIGN1c3RvbSBpZFxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvblNsdWcgPSB2YWwucmVsYXRpb25Ub1xuICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbC52YWx1ZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVxdWVzdGVkSUQgPT09IG51bGwpIHJldHVybiBmYWxzZVxuXG4gICAgICBjb25zdCBpZEZpZWxkID0gY29uZmlnPy5jb2xsZWN0aW9uc1xuICAgICAgICA/LmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gY29sbGVjdGlvblNsdWcpXG4gICAgICAgID8uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcblxuICAgICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBwYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgICAgcmV0dXJuICFpc1ZhbGlkSUQocmVxdWVzdGVkSUQsIHR5cGUpXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFRoaXMgcmVsYXRpb25zaGlwIGZpZWxkIGhhcyB0aGUgZm9sbG93aW5nIGludmFsaWQgcmVsYXRpb25zaGlwczogJHtpbnZhbGlkUmVsYXRpb25zaGlwc1xuICAgICAgICAubWFwKChlcnIsIGludmFsaWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYCR7ZXJyfSAke0pTT04uc3RyaW5naWZ5KGludmFsaWQpfWBcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyl9YFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZUZpbHRlck9wdGlvbnModmFsdWUsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCBzZWxlY3Q6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFNlbGVjdEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgaGFzTWFueSwgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICB2YWx1ZS5zb21lKFxuICAgICAgKGlucHV0KSA9PlxuICAgICAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gaW5wdXQgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbj8udmFsdWUgPT09IGlucHV0KSxcbiAgICAgICAgKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgKHZhbHVlIGFzIFtdKT8ubGVuZ3RoID09PSAwKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJhZGlvOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSYWRpb0ZpZWxkPiA9ICh2YWx1ZSwgeyBvcHRpb25zLCByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlTWF0Y2hlc09wdGlvbiA9IG9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgICByZXR1cm4gdmFsdWVNYXRjaGVzT3B0aW9uIHx8IHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICByZXR1cm4gcmVxdWlyZWQgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBwb2ludDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUG9pbnRGaWVsZD4gPSAoXG4gIHZhbHVlOiBbbnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmddID0gWycnLCAnJ10sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBjb25zdCBsbmcgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVswXSkpXG4gIGNvbnN0IGxhdCA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzFdKSlcbiAgaWYgKFxuICAgIHJlcXVpcmVkICYmXG4gICAgKCh2YWx1ZVswXSAmJiB2YWx1ZVsxXSAmJiB0eXBlb2YgbG5nICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgbGF0ICE9PSAnbnVtYmVyJykgfHxcbiAgICAgIE51bWJlci5pc05hTihsbmcpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obGF0KSB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCAhPT0gMikpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzVHdvTnVtYmVycycpXG4gIH1cblxuICBpZiAoKHZhbHVlWzFdICYmIE51bWJlci5pc05hTihsbmcpKSB8fCAodmFsdWVbMF0gJiYgTnVtYmVyLmlzTmFOKGxhdCkpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYXJyYXksXG4gIGJsb2NrcyxcbiAgY2hlY2tib3gsXG4gIGNvZGUsXG4gIGRhdGUsXG4gIGVtYWlsLFxuICBqc29uLFxuICBudW1iZXIsXG4gIHBhc3N3b3JkLFxuICBwb2ludCxcbiAgcmFkaW8sXG4gIHJlbGF0aW9uc2hpcCxcbiAgcmljaFRleHQsXG4gIHNlbGVjdCxcbiAgdGV4dCxcbiAgdGV4dGFyZWEsXG4gIHVwbG9hZCxcbn1cbiJdLCJuYW1lcyI6WyJ0ZXh0IiwicGFzc3dvcmQiLCJlbWFpbCIsInRleHRhcmVhIiwiY29kZSIsImpzb24iLCJjaGVja2JveCIsImRhdGUiLCJyaWNoVGV4dCIsIm51bWJlciIsImFycmF5IiwiYmxvY2tzIiwidXBsb2FkIiwicmVsYXRpb25zaGlwIiwic2VsZWN0IiwicmFkaW8iLCJwb2ludCIsInZhbHVlIiwiY29uZmlnIiwibWF4TGVuZ3RoIiwiZmllbGRNYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJyZXF1aXJlZCIsInQiLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsImxlbmd0aCIsInBheWxvYWQiLCJ0ZXN0IiwidW5kZWZpbmVkIiwianNvbkVycm9yIiwiaXNOYU4iLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wdGlvbnMiLCJlZGl0b3IiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlQXJyYXlMZW5ndGgiLCJtYXhSb3dzIiwibWluUm93cyIsImFycmF5TGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiY291bnQiLCJsYWJlbCIsImhhc01hbnkiLCJtYXgiLCJtaW4iLCJsZW5ndGhWYWxpZGF0aW9uUmVzdWx0IiwiaXNOdW1iZXIiLCJudW1iZXJzVG9WYWxpZGF0ZSIsIm51bWJlclZhbHVlIiwicGFyc2VGbG9hdCIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwicmVxIiwic2libGluZ0RhdGEiLCJ1c2VyIiwiY2FuVXNlRE9NIiwiZmFsc2VDb2xsZWN0aW9ucyIsImNvbGxlY3Rpb25zIiwidmFsdWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImNvbGxlY3Rpb24iLCJvcHRpb25GaWx0ZXIiLCJ2YWx1ZUlEcyIsImZvckVhY2giLCJ2YWwiLCJwdXNoIiwiZmluZFdoZXJlIiwiYW5kIiwiaW4iLCJyZXN1bHQiLCJmaW5kIiwiZGVwdGgiLCJsaW1pdCIsInBhZ2luYXRpb24iLCJ3aGVyZSIsImRvY3MiLCJkb2MiLCJpbnZhbGlkUmVsYXRpb25zaGlwcyIsImZpbHRlciIsInJlcXVlc3RlZElEIiwic2x1ZyIsImluZGV4T2YiLCJyZWR1Y2UiLCJlcnIiLCJpbnZhbGlkIiwiaSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpZEZpZWxkIiwiZmllbGRzIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsInR5cGUiLCJnZXRJRFR5cGUiLCJkYiIsImRlZmF1bHRJRFR5cGUiLCJpc1ZhbGlkSUQiLCJjb2xsZWN0aW9uU2x1ZyIsImpvaW4iLCJzb21lIiwiaW5wdXQiLCJvcHRpb24iLCJ2YWx1ZU1hdGNoZXNPcHRpb24iLCJsbmciLCJTdHJpbmciLCJsYXQiLCJOdW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBNEJhQSxJQUFJO2VBQUpBOztJQXlCQUMsUUFBUTtlQUFSQTs7SUF3QkFDLEtBQUs7ZUFBTEE7O0lBUUFDLFFBQVE7ZUFBUkE7O0lBdUJBQyxJQUFJO2VBQUpBOztJQVFBQyxJQUFJO2VBQUpBOztJQWVBQyxRQUFRO2VBQVJBOztJQVdBQyxJQUFJO2VBQUpBOztJQWlCQUMsUUFBUTtlQUFSQTs7SUF1Q0FDLE1BQU07ZUFBTkE7O0lBa0NBQyxLQUFLO2VBQUxBOztJQU9BQyxNQUFNO2VBQU5BOztJQWtIQUMsTUFBTTtlQUFOQTs7SUFvQkFDLFlBQVk7ZUFBWkE7O0lBZ0VBQyxNQUFNO2VBQU5BOztJQXFDQUMsS0FBSztlQUFMQTs7SUFXQUMsS0FBSztlQUFMQTs7SUF1QmIsT0FrQkM7ZUFsQkQ7OztrRUF0ZXNCOzJCQUNJOzBCQUNEOzJCQUNDO3VCQUNPOzs7Ozs7QUFFMUIsTUFBTWhC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
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/globals/graphql/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAkB5C,iBAAS,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+IlD;AAED,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/globals/graphql/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAkB5C,iBAAS,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuJlD;AAED,eAAe,kBAAkB,CAAA"}