@appconda/nextjs 1.0.98 → 1.0.100

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 (142) hide show
  1. package/dist/actions/actionClient.js +1 -0
  2. package/dist/actions/auth.js +1 -0
  3. package/dist/actions/authOptions.js +2 -0
  4. package/dist/actions/index.js +1 -0
  5. package/dist/actions/nextAuthHandler.js +1 -0
  6. package/dist/client.js +1 -0
  7. package/dist/decorators/Cache.js +1 -0
  8. package/dist/decorators/CacheKey.js +1 -0
  9. package/dist/decorators/Invalidate.js +1 -0
  10. package/dist/enums/api-service.js +1 -0
  11. package/dist/enums/api.js +1 -0
  12. package/dist/enums/auth-method.js +1 -0
  13. package/dist/enums/browser.js +1 -0
  14. package/dist/enums/compression.js +1 -0
  15. package/dist/enums/credit-card.js +1 -0
  16. package/dist/enums/database-usage-range.js +1 -0
  17. package/dist/enums/email-template-locale.js +1 -0
  18. package/dist/enums/email-template-type.js +1 -0
  19. package/dist/enums/entities/EntityLimitType.js +1 -0
  20. package/dist/enums/entities/PropertyAttributeName.js +1 -0
  21. package/dist/enums/entities/PropertyCondition.js +1 -0
  22. package/dist/enums/entities/PropertyType.js +1 -0
  23. package/dist/enums/entities/PropertyValueType.js +1 -0
  24. package/dist/enums/entities/RowAccess.js +1 -0
  25. package/dist/enums/entities/ViewFilterCondition.js +1 -0
  26. package/dist/enums/execution-method.js +1 -0
  27. package/dist/enums/flag.js +1 -0
  28. package/dist/enums/function-usage-range.js +1 -0
  29. package/dist/enums/image-format.js +1 -0
  30. package/dist/enums/image-gravity.js +1 -0
  31. package/dist/enums/index-type.js +1 -0
  32. package/dist/enums/messaging-provider-type.js +1 -0
  33. package/dist/enums/name.js +1 -0
  34. package/dist/enums/o-auth-provider copy.js +1 -0
  35. package/dist/enums/password-hash.js +1 -0
  36. package/dist/enums/platform-type.js +1 -0
  37. package/dist/enums/project-usage-range.js +1 -0
  38. package/dist/enums/region.js +1 -0
  39. package/dist/enums/relation-mutate.js +1 -0
  40. package/dist/enums/relationship-type.js +1 -0
  41. package/dist/enums/resource-type.js +1 -0
  42. package/dist/enums/runtime.js +1 -0
  43. package/dist/enums/s-m-t-p-secure.js +1 -0
  44. package/dist/enums/shared/ApplicationLayout.js +1 -0
  45. package/dist/enums/shared/Colors.js +1 -0
  46. package/dist/enums/shared/InputType.js +1 -0
  47. package/dist/enums/shared/Periodicity.js +1 -0
  48. package/dist/enums/shared/SvgIcon.js +1 -0
  49. package/dist/enums/shared/Theme.js +1 -0
  50. package/dist/enums/sms-template-locale.js +1 -0
  51. package/dist/enums/sms-template-type.js +1 -0
  52. package/dist/enums/smtp-encryption.js +1 -0
  53. package/dist/enums/storage-usage-range.js +1 -0
  54. package/dist/enums/subscriptions/PricingModel.js +1 -0
  55. package/dist/enums/subscriptions/SubscriptionBillingPeriod.js +1 -0
  56. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.js +1 -0
  57. package/dist/enums/subscriptions/SubscriptionPriceType.js +1 -0
  58. package/dist/enums/tenants/LinkedAccountStatus.js +1 -0
  59. package/dist/enums/tenants/TenantUserJoined.js +1 -0
  60. package/dist/enums/tenants/TenantUserStatus.js +1 -0
  61. package/dist/enums/tenants/TenantUserType.js +1 -0
  62. package/dist/enums/user-usage-range.js +1 -0
  63. package/dist/getAppcondaClient.js +1 -0
  64. package/dist/getSDKForCurrentUser.js +1 -0
  65. package/dist/getSDKForService.js +1 -0
  66. package/dist/id.js +1 -0
  67. package/dist/index.js +1 -0
  68. package/dist/inputFile.js +1 -0
  69. package/dist/lib/Cache/Adapter.js +1 -0
  70. package/dist/lib/Cache/Adapters/Filesystem.js +1 -0
  71. package/dist/lib/Cache/Adapters/Memory.js +1 -0
  72. package/dist/lib/Cache/Adapters/None.js +1 -0
  73. package/dist/lib/Cache/Adapters/Sharding.js +1 -0
  74. package/dist/lib/Cache/Cache.js +1 -0
  75. package/dist/lib/Cache/index.js +1 -0
  76. package/dist/lib/Cache/test.js +1 -0
  77. package/dist/lib/Registry/Registry.js +1 -0
  78. package/dist/lib/Registry/index.js +1 -0
  79. package/dist/lib/Services.js +1 -0
  80. package/dist/lib/crypto.js +1 -0
  81. package/dist/lib/env.js +1 -0
  82. package/dist/lib/errors.js +1 -0
  83. package/dist/lib/index.js +1 -0
  84. package/dist/lib/jwt.js +1 -0
  85. package/dist/models.js +1 -0
  86. package/dist/modules/account/actions.js +1 -0
  87. package/dist/modules/account/enums/authentication-factor.js +1 -0
  88. package/dist/modules/account/enums/authenticator-type.js +1 -0
  89. package/dist/modules/account/enums/o-auth-provider.js +1 -0
  90. package/dist/modules/account/index.js +1 -0
  91. package/dist/modules/account/schema.js +1 -0
  92. package/dist/modules/account/service.js +1 -0
  93. package/dist/modules/account/types.js +1 -0
  94. package/dist/modules/agent/action.js +1 -0
  95. package/dist/modules/agent/index.js +1 -0
  96. package/dist/modules/agent/schema.js +1 -0
  97. package/dist/modules/agent/service.js +1 -0
  98. package/dist/modules/agent/types.js +1 -0
  99. package/dist/modules/ai/index.js +1 -0
  100. package/dist/modules/ai/node/actions.js +1 -0
  101. package/dist/modules/ai/node/index.js +1 -0
  102. package/dist/modules/ai/node/service.js +1 -0
  103. package/dist/modules/index.js +1 -0
  104. package/dist/modules/tenant/actions.js +1 -0
  105. package/dist/modules/tenant/index.js +1 -0
  106. package/dist/modules/tenant/tenant.js +1 -0
  107. package/dist/modules/tenant/types.js +1 -0
  108. package/dist/modules/waitlist/action.js +1 -0
  109. package/dist/modules/waitlist/index.js +1 -0
  110. package/dist/modules/waitlist/schema.js +1 -0
  111. package/dist/modules/waitlist/service.js +1 -0
  112. package/dist/modules/waitlist/types.js +1 -0
  113. package/dist/permission.js +1 -0
  114. package/dist/query.js +1 -0
  115. package/dist/role.js +1 -0
  116. package/dist/schemas/nodes.js +1 -0
  117. package/dist/service-client.js +1 -0
  118. package/dist/service.js +1 -0
  119. package/dist/services/applets.js +1 -0
  120. package/dist/services/avatars.js +1 -0
  121. package/dist/services/chat-flow.js +1 -0
  122. package/dist/services/community.js +1 -0
  123. package/dist/services/configuration.js +1 -0
  124. package/dist/services/databases.js +1 -0
  125. package/dist/services/functions.js +1 -0
  126. package/dist/services/graphql.js +1 -0
  127. package/dist/services/health.js +1 -0
  128. package/dist/services/locale.js +1 -0
  129. package/dist/services/messaging.js +1 -0
  130. package/dist/services/permissions.js +1 -0
  131. package/dist/services/pricing.js +1 -0
  132. package/dist/services/projects.js +1 -0
  133. package/dist/services/roles.js +1 -0
  134. package/dist/services/schema.js +1 -0
  135. package/dist/services/storage.js +1 -0
  136. package/dist/services/subscription.js +1 -0
  137. package/dist/services/teams.js +1 -0
  138. package/dist/services/tenant-subscription.js +1 -0
  139. package/dist/services/users.js +1 -0
  140. package/package.json +1 -1
  141. package/src/actions/authOptions.ts +1 -0
  142. package/tsconfig.json +2 -1
package/dist/models.js CHANGED
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBjb25kYSBNb2RlbHNcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBNb2RlbHMge1xuICAgIC8qKlxuICAgICAqIERvY3VtZW50cyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgRG9jdW1lbnRMaXN0PERvY3VtZW50IGV4dGVuZHMgTW9kZWxzLkRvY3VtZW50PiA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiBkb2N1bWVudHMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgZG9jdW1lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgZG9jdW1lbnRzOiBEb2N1bWVudFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb2xsZWN0aW9ucyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQ29sbGVjdGlvbkxpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgY29sbGVjdGlvbnMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgY29sbGVjdGlvbnMuXG4gICAgICAgICAqL1xuICAgICAgICBjb2xsZWN0aW9uczogQ29sbGVjdGlvbltdO1xuICAgIH1cblxuICAgIGV4cG9ydCB0eXBlIFNtc1RlbXBsYXRlID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGVtcGxhdGUgdHlwZVxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGVtcGxhdGUgbG9jYWxlXG4gICAgICAgICAqL1xuICAgICAgICBsb2NhbGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRlbXBsYXRlIG1lc3NhZ2VcbiAgICAgICAgICovXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEYXRhYmFzZXMgTGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIERhdGFiYXNlTGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiBkYXRhYmFzZXMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgZGF0YWJhc2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgZGF0YWJhc2VzOiBEYXRhYmFzZVtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmRleGVzIExpc3RcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBJbmRleExpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgaW5kZXhlcyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBpbmRleGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgaW5kZXhlczogSW5kZXhbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXNlcnMgTGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIFVzZXJMaXN0PFByZWZlcmVuY2VzIGV4dGVuZHMgTW9kZWxzLlByZWZlcmVuY2VzPiA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiB1c2VycyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiB1c2Vycy5cbiAgICAgICAgICovXG4gICAgICAgIHVzZXJzOiBVc2VyPFByZWZlcmVuY2VzPltdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXNzaW9ucyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgU2Vzc2lvbkxpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2Ygc2Vzc2lvbnMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2Ygc2Vzc2lvbnMuXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uczogU2Vzc2lvbltdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZGVudGl0aWVzIExpc3RcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBJZGVudGl0eUxpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgaWRlbnRpdGllcyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBpZGVudGl0aWVzLlxuICAgICAgICAgKi9cbiAgICAgICAgaWRlbnRpdGllczogSWRlbnRpdHlbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTG9ncyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgTG9nTGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiBsb2dzIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIGxvZ3MuXG4gICAgICAgICAqL1xuICAgICAgICBsb2dzOiBMb2dbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmlsZXMgTGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEZpbGVMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIGZpbGVzIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIGZpbGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgZmlsZXM6IEZpbGVbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQnVja2V0cyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQnVja2V0TGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiBidWNrZXRzIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIGJ1Y2tldHMuXG4gICAgICAgICAqL1xuICAgICAgICBidWNrZXRzOiBCdWNrZXRbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGVhbXMgTGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIFRlYW1MaXN0PFByZWZlcmVuY2VzIGV4dGVuZHMgTW9kZWxzLlByZWZlcmVuY2VzPiA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiB0ZWFtcyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiB0ZWFtcy5cbiAgICAgICAgICovXG4gICAgICAgIHRlYW1zOiBUZWFtPFByZWZlcmVuY2VzPltdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNZW1iZXJzaGlwcyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgTWVtYmVyc2hpcExpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgbWVtYmVyc2hpcHMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgbWVtYmVyc2hpcHMuXG4gICAgICAgICAqL1xuICAgICAgICBtZW1iZXJzaGlwczogTWVtYmVyc2hpcFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbnMgTGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEZ1bmN0aW9uTGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiBmdW5jdGlvbnMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgZnVuY3Rpb25zLlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb25zOiBGdW5jdGlvbltdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSdW50aW1lcyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgUnVudGltZUxpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgcnVudGltZXMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgcnVudGltZXMuXG4gICAgICAgICAqL1xuICAgICAgICBydW50aW1lczogUnVudGltZVtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXBsb3ltZW50cyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgRGVwbG95bWVudExpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgZGVwbG95bWVudHMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgZGVwbG95bWVudHMuXG4gICAgICAgICAqL1xuICAgICAgICBkZXBsb3ltZW50czogRGVwbG95bWVudFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFeGVjdXRpb25zIExpc3RcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBFeGVjdXRpb25MaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgZXhlY3V0aW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIGV4ZWN1dGlvbnM6IEV4ZWN1dGlvbltdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb3VudHJpZXMgTGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIENvdW50cnlMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIGNvdW50cmllcyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBjb3VudHJpZXMuXG4gICAgICAgICAqL1xuICAgICAgICBjb3VudHJpZXM6IENvdW50cnlbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udGluZW50cyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQ29udGluZW50TGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiBjb250aW5lbnRzIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIGNvbnRpbmVudHMuXG4gICAgICAgICAqL1xuICAgICAgICBjb250aW5lbnRzOiBDb250aW5lbnRbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTGFuZ3VhZ2VzIExpc3RcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBMYW5ndWFnZUxpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgbGFuZ3VhZ2VzIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIGxhbmd1YWdlcy5cbiAgICAgICAgICovXG4gICAgICAgIGxhbmd1YWdlczogTGFuZ3VhZ2VbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3VycmVuY2llcyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQ3VycmVuY3lMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIGN1cnJlbmNpZXMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgY3VycmVuY2llcy5cbiAgICAgICAgICovXG4gICAgICAgIGN1cnJlbmNpZXM6IEN1cnJlbmN5W107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFBob25lcyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgUGhvbmVMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIHBob25lcyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBwaG9uZXMuXG4gICAgICAgICAqL1xuICAgICAgICBwaG9uZXM6IFBob25lW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlcyBMaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgVmFyaWFibGVMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIHZhcmlhYmxlcyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiB2YXJpYWJsZXMuXG4gICAgICAgICAqL1xuICAgICAgICB2YXJpYWJsZXM6IFZhcmlhYmxlW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIExvY2FsZSBjb2RlcyBsaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgTG9jYWxlQ29kZUxpc3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgbG9jYWxlQ29kZXMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgbG9jYWxlQ29kZXMuXG4gICAgICAgICAqL1xuICAgICAgICBsb2NhbGVDb2RlczogTG9jYWxlQ29kZVtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcm92aWRlciBsaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgUHJvdmlkZXJMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIHByb3ZpZGVycyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBwcm92aWRlcnMuXG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlcnM6IFByb3ZpZGVyW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1lc3NhZ2UgbGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIE1lc3NhZ2VMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIG1lc3NhZ2VzIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIG1lc3NhZ2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgbWVzc2FnZXM6IE1lc3NhZ2VbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVG9waWMgbGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIFRvcGljTGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiB0b3BpY3MgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgdG9waWNzLlxuICAgICAgICAgKi9cbiAgICAgICAgdG9waWNzOiBUb3BpY1tdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVyIGxpc3RcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBTdWJzY3JpYmVyTGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiBzdWJzY3JpYmVycyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBzdWJzY3JpYmVycy5cbiAgICAgICAgICovXG4gICAgICAgIHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRhcmdldCBsaXN0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgVGFyZ2V0TGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiB0YXJnZXRzIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIHRhcmdldHMuXG4gICAgICAgICAqL1xuICAgICAgICB0YXJnZXRzOiBUYXJnZXRbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWNhdGlvbnMgTGlzdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIFNwZWNpZmljYXRpb25MaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIHNwZWNpZmljYXRpb25zIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIHNwZWNpZmljYXRpb25zLlxuICAgICAgICAgKi9cbiAgICAgICAgc3BlY2lmaWNhdGlvbnM6IFNwZWNpZmljYXRpb25bXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGF0YWJhc2VcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBEYXRhYmFzZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERhdGFiYXNlIElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEYXRhYmFzZSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGF0YWJhc2UgY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEYXRhYmFzZSB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBkYXRhYmFzZSBpcyBlbmFibGVkLiBDYW4gYmUgJiMwMzk7ZW5hYmxlZCYjMDM5OyBvciAmIzAzOTtkaXNhYmxlZCYjMDM5Oy4gV2hlbiBkaXNhYmxlZCwgdGhlIGRhdGFiYXNlIGlzIGluYWNjZXNzaWJsZSB0byB1c2VycywgYnV0IHJlbWFpbnMgYWNjZXNzaWJsZSB0byBTZXJ2ZXIgU0RLcyB1c2luZyBBUEkga2V5cy5cbiAgICAgICAgICovXG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbGxlY3Rpb25cbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBDb2xsZWN0aW9uID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29sbGVjdGlvbiBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29sbGVjdGlvbiBjcmVhdGlvbiBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbGxlY3Rpb24gdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29sbGVjdGlvbiBwZXJtaXNzaW9ucy4gW0xlYXJuIG1vcmUgYWJvdXQgcGVybWlzc2lvbnNdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9wZXJtaXNzaW9ucykuXG4gICAgICAgICAqL1xuICAgICAgICAkcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGF0YWJhc2UgSUQuXG4gICAgICAgICAqL1xuICAgICAgICBkYXRhYmFzZUlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb2xsZWN0aW9uIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb2xsZWN0aW9uIGVuYWJsZWQuIENhbiBiZSAmIzAzOTtlbmFibGVkJiMwMzk7IG9yICYjMDM5O2Rpc2FibGVkJiMwMzk7LiBXaGVuIGRpc2FibGVkLCB0aGUgY29sbGVjdGlvbiBpcyBpbmFjY2Vzc2libGUgdG8gdXNlcnMsIGJ1dCByZW1haW5zIGFjY2Vzc2libGUgdG8gU2VydmVyIFNES3MgdXNpbmcgQVBJIGtleXMuXG4gICAgICAgICAqL1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBkb2N1bWVudC1sZXZlbCBwZXJtaXNzaW9ucyBhcmUgZW5hYmxlZC4gW0xlYXJuIG1vcmUgYWJvdXQgcGVybWlzc2lvbnNdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9wZXJtaXNzaW9ucykuXG4gICAgICAgICAqL1xuICAgICAgICBkb2N1bWVudFNlY3VyaXR5OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29sbGVjdGlvbiBhdHRyaWJ1dGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgYXR0cmlidXRlczogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb2xsZWN0aW9uIGluZGV4ZXMuXG4gICAgICAgICAqL1xuICAgICAgICBpbmRleGVzOiBJbmRleFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGVzIExpc3RcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBBdHRyaWJ1dGVMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaW4gdGhlIGdpdmVuIGNvbGxlY3Rpb24uXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBhdHRyaWJ1dGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgYXR0cmlidXRlczogc3RyaW5nW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZVN0cmluZ1xuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEF0dHJpYnV0ZVN0cmluZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBLZXkuXG4gICAgICAgICAqL1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXR0cmlidXRlIHN0YXR1cy4gUG9zc2libGUgdmFsdWVzOiBgYXZhaWxhYmxlYCwgYHByb2Nlc3NpbmdgLCBgZGVsZXRpbmdgLCBgc3R1Y2tgLCBvciBgZmFpbGVkYFxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFcnJvciBtZXNzYWdlLiBEaXNwbGF5cyBlcnJvciBnZW5lcmF0ZWQgb24gZmFpbHVyZSBvZiBjcmVhdGluZyBvciBkZWxldGluZyBhbiBhdHRyaWJ1dGUuXG4gICAgICAgICAqL1xuICAgICAgICBlcnJvcjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIHJlcXVpcmVkP1xuICAgICAgICAgKi9cbiAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJcyBhdHRyaWJ1dGUgYW4gYXJyYXk/XG4gICAgICAgICAqL1xuICAgICAgICBhcnJheT86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgc2l6ZS5cbiAgICAgICAgICovXG4gICAgICAgIHNpemU6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlZmF1bHQgdmFsdWUgZm9yIGF0dHJpYnV0ZSB3aGVuIG5vdCBwcm92aWRlZC4gQ2Fubm90IGJlIHNldCB3aGVuIGF0dHJpYnV0ZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICovXG4gICAgICAgIGRlZmF1bHQ/OiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZUludGVnZXJcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBBdHRyaWJ1dGVJbnRlZ2VyID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQXR0cmlidXRlIEtleS5cbiAgICAgICAgICovXG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXR0cmlidXRlIHR5cGUuXG4gICAgICAgICAqL1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgc3RhdHVzLiBQb3NzaWJsZSB2YWx1ZXM6IGBhdmFpbGFibGVgLCBgcHJvY2Vzc2luZ2AsIGBkZWxldGluZ2AsIGBzdHVja2AsIG9yIGBmYWlsZWRgXG4gICAgICAgICAqL1xuICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEVycm9yIG1lc3NhZ2UuIERpc3BsYXlzIGVycm9yIGdlbmVyYXRlZCBvbiBmYWlsdXJlIG9mIGNyZWF0aW5nIG9yIGRlbGV0aW5nIGFuIGF0dHJpYnV0ZS5cbiAgICAgICAgICovXG4gICAgICAgIGVycm9yOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJcyBhdHRyaWJ1dGUgcmVxdWlyZWQ/XG4gICAgICAgICAqL1xuICAgICAgICByZXF1aXJlZDogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIGF0dHJpYnV0ZSBhbiBhcnJheT9cbiAgICAgICAgICovXG4gICAgICAgIGFycmF5PzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1pbmltdW0gdmFsdWUgdG8gZW5mb3JjZSBmb3IgbmV3IGRvY3VtZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIG1pbj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1heGltdW0gdmFsdWUgdG8gZW5mb3JjZSBmb3IgbmV3IGRvY3VtZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIG1heD86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlZmF1bHQgdmFsdWUgZm9yIGF0dHJpYnV0ZSB3aGVuIG5vdCBwcm92aWRlZC4gQ2Fubm90IGJlIHNldCB3aGVuIGF0dHJpYnV0ZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICovXG4gICAgICAgIGRlZmF1bHQ/OiBudW1iZXI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZUZsb2F0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQXR0cmlidXRlRmxvYXQgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgS2V5LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBzdGF0dXMuIFBvc3NpYmxlIHZhbHVlczogYGF2YWlsYWJsZWAsIGBwcm9jZXNzaW5nYCwgYGRlbGV0aW5nYCwgYHN0dWNrYCwgb3IgYGZhaWxlZGBcbiAgICAgICAgICovXG4gICAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXJyb3IgbWVzc2FnZS4gRGlzcGxheXMgZXJyb3IgZ2VuZXJhdGVkIG9uIGZhaWx1cmUgb2YgY3JlYXRpbmcgb3IgZGVsZXRpbmcgYW4gYXR0cmlidXRlLlxuICAgICAgICAgKi9cbiAgICAgICAgZXJyb3I6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIGF0dHJpYnV0ZSByZXF1aXJlZD9cbiAgICAgICAgICovXG4gICAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIGFuIGFycmF5P1xuICAgICAgICAgKi9cbiAgICAgICAgYXJyYXk/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWluaW11bSB2YWx1ZSB0byBlbmZvcmNlIGZvciBuZXcgZG9jdW1lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgbWluPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWF4aW11bSB2YWx1ZSB0byBlbmZvcmNlIGZvciBuZXcgZG9jdW1lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgbWF4PzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgYXR0cmlidXRlIHdoZW4gbm90IHByb3ZpZGVkLiBDYW5ub3QgYmUgc2V0IHdoZW4gYXR0cmlidXRlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZGVmYXVsdD86IG51bWJlcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlQm9vbGVhblxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEF0dHJpYnV0ZUJvb2xlYW4gPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgS2V5LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBzdGF0dXMuIFBvc3NpYmxlIHZhbHVlczogYGF2YWlsYWJsZWAsIGBwcm9jZXNzaW5nYCwgYGRlbGV0aW5nYCwgYHN0dWNrYCwgb3IgYGZhaWxlZGBcbiAgICAgICAgICovXG4gICAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXJyb3IgbWVzc2FnZS4gRGlzcGxheXMgZXJyb3IgZ2VuZXJhdGVkIG9uIGZhaWx1cmUgb2YgY3JlYXRpbmcgb3IgZGVsZXRpbmcgYW4gYXR0cmlidXRlLlxuICAgICAgICAgKi9cbiAgICAgICAgZXJyb3I6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIGF0dHJpYnV0ZSByZXF1aXJlZD9cbiAgICAgICAgICovXG4gICAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIGFuIGFycmF5P1xuICAgICAgICAgKi9cbiAgICAgICAgYXJyYXk/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgYXR0cmlidXRlIHdoZW4gbm90IHByb3ZpZGVkLiBDYW5ub3QgYmUgc2V0IHdoZW4gYXR0cmlidXRlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZGVmYXVsdD86IGJvb2xlYW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZUVtYWlsXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQXR0cmlidXRlRW1haWwgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgS2V5LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBzdGF0dXMuIFBvc3NpYmxlIHZhbHVlczogYGF2YWlsYWJsZWAsIGBwcm9jZXNzaW5nYCwgYGRlbGV0aW5nYCwgYHN0dWNrYCwgb3IgYGZhaWxlZGBcbiAgICAgICAgICovXG4gICAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXJyb3IgbWVzc2FnZS4gRGlzcGxheXMgZXJyb3IgZ2VuZXJhdGVkIG9uIGZhaWx1cmUgb2YgY3JlYXRpbmcgb3IgZGVsZXRpbmcgYW4gYXR0cmlidXRlLlxuICAgICAgICAgKi9cbiAgICAgICAgZXJyb3I6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIGF0dHJpYnV0ZSByZXF1aXJlZD9cbiAgICAgICAgICovXG4gICAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIGFuIGFycmF5P1xuICAgICAgICAgKi9cbiAgICAgICAgYXJyYXk/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3RyaW5nIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgIGZvcm1hdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgYXR0cmlidXRlIHdoZW4gbm90IHByb3ZpZGVkLiBDYW5ub3QgYmUgc2V0IHdoZW4gYXR0cmlidXRlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZGVmYXVsdD86IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlRW51bVxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEF0dHJpYnV0ZUVudW0gPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgS2V5LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBzdGF0dXMuIFBvc3NpYmxlIHZhbHVlczogYGF2YWlsYWJsZWAsIGBwcm9jZXNzaW5nYCwgYGRlbGV0aW5nYCwgYHN0dWNrYCwgb3IgYGZhaWxlZGBcbiAgICAgICAgICovXG4gICAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXJyb3IgbWVzc2FnZS4gRGlzcGxheXMgZXJyb3IgZ2VuZXJhdGVkIG9uIGZhaWx1cmUgb2YgY3JlYXRpbmcgb3IgZGVsZXRpbmcgYW4gYXR0cmlidXRlLlxuICAgICAgICAgKi9cbiAgICAgICAgZXJyb3I6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIGF0dHJpYnV0ZSByZXF1aXJlZD9cbiAgICAgICAgICovXG4gICAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIGFuIGFycmF5P1xuICAgICAgICAgKi9cbiAgICAgICAgYXJyYXk/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXJyYXkgb2YgZWxlbWVudHMgaW4gZW51bWVyYXRlZCB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgZWxlbWVudHM6IHN0cmluZ1tdO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3RyaW5nIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgIGZvcm1hdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgYXR0cmlidXRlIHdoZW4gbm90IHByb3ZpZGVkLiBDYW5ub3QgYmUgc2V0IHdoZW4gYXR0cmlidXRlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZGVmYXVsdD86IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlSVBcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBBdHRyaWJ1dGVJcCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBLZXkuXG4gICAgICAgICAqL1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXR0cmlidXRlIHN0YXR1cy4gUG9zc2libGUgdmFsdWVzOiBgYXZhaWxhYmxlYCwgYHByb2Nlc3NpbmdgLCBgZGVsZXRpbmdgLCBgc3R1Y2tgLCBvciBgZmFpbGVkYFxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFcnJvciBtZXNzYWdlLiBEaXNwbGF5cyBlcnJvciBnZW5lcmF0ZWQgb24gZmFpbHVyZSBvZiBjcmVhdGluZyBvciBkZWxldGluZyBhbiBhdHRyaWJ1dGUuXG4gICAgICAgICAqL1xuICAgICAgICBlcnJvcjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIHJlcXVpcmVkP1xuICAgICAgICAgKi9cbiAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJcyBhdHRyaWJ1dGUgYW4gYXJyYXk/XG4gICAgICAgICAqL1xuICAgICAgICBhcnJheT86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdHJpbmcgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZWZhdWx0IHZhbHVlIGZvciBhdHRyaWJ1dGUgd2hlbiBub3QgcHJvdmlkZWQuIENhbm5vdCBiZSBzZXQgd2hlbiBhdHRyaWJ1dGUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAqL1xuICAgICAgICBkZWZhdWx0Pzogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGVVUkxcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBBdHRyaWJ1dGVVcmwgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgS2V5LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBzdGF0dXMuIFBvc3NpYmxlIHZhbHVlczogYGF2YWlsYWJsZWAsIGBwcm9jZXNzaW5nYCwgYGRlbGV0aW5nYCwgYHN0dWNrYCwgb3IgYGZhaWxlZGBcbiAgICAgICAgICovXG4gICAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXJyb3IgbWVzc2FnZS4gRGlzcGxheXMgZXJyb3IgZ2VuZXJhdGVkIG9uIGZhaWx1cmUgb2YgY3JlYXRpbmcgb3IgZGVsZXRpbmcgYW4gYXR0cmlidXRlLlxuICAgICAgICAgKi9cbiAgICAgICAgZXJyb3I6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIGF0dHJpYnV0ZSByZXF1aXJlZD9cbiAgICAgICAgICovXG4gICAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIGFuIGFycmF5P1xuICAgICAgICAgKi9cbiAgICAgICAgYXJyYXk/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3RyaW5nIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgIGZvcm1hdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVmYXVsdCB2YWx1ZSBmb3IgYXR0cmlidXRlIHdoZW4gbm90IHByb3ZpZGVkLiBDYW5ub3QgYmUgc2V0IHdoZW4gYXR0cmlidXRlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZGVmYXVsdD86IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlRGF0ZXRpbWVcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBBdHRyaWJ1dGVEYXRldGltZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBLZXkuXG4gICAgICAgICAqL1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXR0cmlidXRlIHN0YXR1cy4gUG9zc2libGUgdmFsdWVzOiBgYXZhaWxhYmxlYCwgYHByb2Nlc3NpbmdgLCBgZGVsZXRpbmdgLCBgc3R1Y2tgLCBvciBgZmFpbGVkYFxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFcnJvciBtZXNzYWdlLiBEaXNwbGF5cyBlcnJvciBnZW5lcmF0ZWQgb24gZmFpbHVyZSBvZiBjcmVhdGluZyBvciBkZWxldGluZyBhbiBhdHRyaWJ1dGUuXG4gICAgICAgICAqL1xuICAgICAgICBlcnJvcjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIHJlcXVpcmVkP1xuICAgICAgICAgKi9cbiAgICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJcyBhdHRyaWJ1dGUgYW4gYXJyYXk/XG4gICAgICAgICAqL1xuICAgICAgICBhcnJheT86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICBmb3JtYXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlZmF1bHQgdmFsdWUgZm9yIGF0dHJpYnV0ZSB3aGVuIG5vdCBwcm92aWRlZC4gT25seSBudWxsIGlzIG9wdGlvbmFsXG4gICAgICAgICAqL1xuICAgICAgICBkZWZhdWx0Pzogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGVSZWxhdGlvbnNoaXBcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBBdHRyaWJ1dGVSZWxhdGlvbnNoaXAgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgS2V5LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdHRyaWJ1dGUgdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dHJpYnV0ZSBzdGF0dXMuIFBvc3NpYmxlIHZhbHVlczogYGF2YWlsYWJsZWAsIGBwcm9jZXNzaW5nYCwgYGRlbGV0aW5nYCwgYHN0dWNrYCwgb3IgYGZhaWxlZGBcbiAgICAgICAgICovXG4gICAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXJyb3IgbWVzc2FnZS4gRGlzcGxheXMgZXJyb3IgZ2VuZXJhdGVkIG9uIGZhaWx1cmUgb2YgY3JlYXRpbmcgb3IgZGVsZXRpbmcgYW4gYXR0cmlidXRlLlxuICAgICAgICAgKi9cbiAgICAgICAgZXJyb3I6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIGF0dHJpYnV0ZSByZXF1aXJlZD9cbiAgICAgICAgICovXG4gICAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgYXR0cmlidXRlIGFuIGFycmF5P1xuICAgICAgICAgKi9cbiAgICAgICAgYXJyYXk/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIElEIG9mIHRoZSByZWxhdGVkIGNvbGxlY3Rpb24uXG4gICAgICAgICAqL1xuICAgICAgICByZWxhdGVkQ29sbGVjdGlvbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHR5cGUgb2YgdGhlIHJlbGF0aW9uc2hpcC5cbiAgICAgICAgICovXG4gICAgICAgIHJlbGF0aW9uVHlwZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgdGhlIHJlbGF0aW9uc2hpcCB0d28td2F5P1xuICAgICAgICAgKi9cbiAgICAgICAgdHdvV2F5OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGtleSBvZiB0aGUgdHdvLXdheSByZWxhdGlvbnNoaXAuXG4gICAgICAgICAqL1xuICAgICAgICB0d29XYXlLZXk6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhvdyBkZWxldGluZyB0aGUgcGFyZW50IGRvY3VtZW50IHdpbGwgcHJvcGFnYXRlIHRvIGNoaWxkIGRvY3VtZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIG9uRGVsZXRlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGV0aGVyIHRoaXMgaXMgdGhlIHBhcmVudCBvciBjaGlsZCBzaWRlIG9mIHRoZSByZWxhdGlvbnNoaXBcbiAgICAgICAgICovXG4gICAgICAgIHNpZGU6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5kZXhcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBJbmRleCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluZGV4IEtleS5cbiAgICAgICAgICovXG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSW5kZXggdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluZGV4IHN0YXR1cy4gUG9zc2libGUgdmFsdWVzOiBgYXZhaWxhYmxlYCwgYHByb2Nlc3NpbmdgLCBgZGVsZXRpbmdgLCBgc3R1Y2tgLCBvciBgZmFpbGVkYFxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFcnJvciBtZXNzYWdlLiBEaXNwbGF5cyBlcnJvciBnZW5lcmF0ZWQgb24gZmFpbHVyZSBvZiBjcmVhdGluZyBvciBkZWxldGluZyBhbiBpbmRleC5cbiAgICAgICAgICovXG4gICAgICAgIGVycm9yOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRleCBhdHRyaWJ1dGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgYXR0cmlidXRlczogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRleCBvcmRlcnMuXG4gICAgICAgICAqL1xuICAgICAgICBvcmRlcnM/OiBzdHJpbmdbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRG9jdW1lbnRcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBEb2N1bWVudCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERvY3VtZW50IElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb2xsZWN0aW9uIElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGNvbGxlY3Rpb25JZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGF0YWJhc2UgSUQuXG4gICAgICAgICAqL1xuICAgICAgICAkZGF0YWJhc2VJZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRG9jdW1lbnQgY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEb2N1bWVudCB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEb2N1bWVudCBwZXJtaXNzaW9ucy4gW0xlYXJuIG1vcmUgYWJvdXQgcGVybWlzc2lvbnNdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9wZXJtaXNzaW9ucykuXG4gICAgICAgICAqL1xuICAgICAgICAkcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIExvZ1xuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIF9Mb2cgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFdmVudCBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgZXZlbnQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgSUQuXG4gICAgICAgICAqL1xuICAgICAgICB1c2VySWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgRW1haWwuXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyRW1haWw6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgTmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIHVzZXJOYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBUEkgbW9kZSB3aGVuIGV2ZW50IHRyaWdnZXJlZC5cbiAgICAgICAgICovXG4gICAgICAgIG1vZGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElQIHNlc3Npb24gaW4gdXNlIHdoZW4gdGhlIHNlc3Npb24gd2FzIGNyZWF0ZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpcDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogTG9nIGNyZWF0aW9uIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGltZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogT3BlcmF0aW5nIHN5c3RlbSBjb2RlIG5hbWUuIFZpZXcgbGlzdCBvZiBbYXZhaWxhYmxlIG9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBjb25kYS9hcHBjb25kYS9ibG9iL21hc3Rlci9kb2NzL2xpc3RzL29zLmpzb24pLlxuICAgICAgICAgKi9cbiAgICAgICAgb3NDb2RlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPcGVyYXRpbmcgc3lzdGVtIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBvc05hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbi5cbiAgICAgICAgICovXG4gICAgICAgIG9zVmVyc2lvbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2xpZW50IHR5cGUuXG4gICAgICAgICAqL1xuICAgICAgICBjbGllbnRUeXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDbGllbnQgY29kZSBuYW1lLiBWaWV3IGxpc3Qgb2YgW2F2YWlsYWJsZSBvcHRpb25zXShodHRwczovL2dpdGh1Yi5jb20vYXBwY29uZGEvYXBwY29uZGEvYmxvYi9tYXN0ZXIvZG9jcy9saXN0cy9jbGllbnRzLmpzb24pLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xpZW50Q29kZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2xpZW50IG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBjbGllbnROYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDbGllbnQgdmVyc2lvbi5cbiAgICAgICAgICovXG4gICAgICAgIGNsaWVudFZlcnNpb246IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENsaWVudCBlbmdpbmUgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGNsaWVudEVuZ2luZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2xpZW50IGVuZ2luZSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xpZW50RW5naW5lVmVyc2lvbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGV2aWNlIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXZpY2UgYnJhbmQgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGRldmljZUJyYW5kOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXZpY2UgbW9kZWwgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGRldmljZU1vZGVsOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb3VudHJ5IHR3by1jaGFyYWN0ZXIgSVNPIDMxNjYtMSBhbHBoYSBjb2RlLlxuICAgICAgICAgKi9cbiAgICAgICAgY291bnRyeUNvZGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvdW50cnkgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGNvdW50cnlOYW1lOiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVzZXJcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBVc2VyPFByZWZlcmVuY2VzIGV4dGVuZHMgTW9kZWxzLlByZWZlcmVuY2VzPiA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgSUQuXG4gICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhhc2hlZCB1c2VyIHBhc3N3b3JkLlxuICAgICAgICAgKi9cbiAgICAgICAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYXNzd29yZCBoYXNoaW5nIGFsZ29yaXRobS5cbiAgICAgICAgICovXG4gICAgICAgIGhhc2g/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYXNzd29yZCBoYXNoaW5nIGFsZ29yaXRobSBjb25maWd1cmF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgaGFzaE9wdGlvbnM/OiBvYmplY3Q7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIHJlZ2lzdHJhdGlvbiBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgIHJlZ2lzdHJhdGlvbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVXNlciBzdGF0dXMuIFBhc3MgYHRydWVgIGZvciBlbmFibGVkIGFuZCBgZmFsc2VgIGZvciBkaXNhYmxlZC5cbiAgICAgICAgICovXG4gICAgICAgIHN0YXR1czogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExhYmVscyBmb3IgdGhlIHVzZXIuXG4gICAgICAgICAqL1xuICAgICAgICBsYWJlbHM6IHN0cmluZ1tdO1xuICAgICAgICAvKipcbiAgICAgICAgICogUGFzc3dvcmQgdXBkYXRlIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgcGFzc3dvcmRVcGRhdGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgZW1haWwgYWRkcmVzcy5cbiAgICAgICAgICovXG4gICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIHBob25lIG51bWJlciBpbiBFLjE2NCBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICBwaG9uZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRW1haWwgdmVyaWZpY2F0aW9uIHN0YXR1cy5cbiAgICAgICAgICovXG4gICAgICAgIGVtYWlsVmVyaWZpY2F0aW9uOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogUGhvbmUgdmVyaWZpY2F0aW9uIHN0YXR1cy5cbiAgICAgICAgICovXG4gICAgICAgIHBob25lVmVyaWZpY2F0aW9uOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogTXVsdGkgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIHN0YXR1cy5cbiAgICAgICAgICovXG4gICAgICAgIG1mYTogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgcHJlZmVyZW5jZXMgYXMgYSBrZXktdmFsdWUgb2JqZWN0XG4gICAgICAgICAqL1xuICAgICAgICBwcmVmczogUHJlZmVyZW5jZXM7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHVzZXItb3duZWQgbWVzc2FnZSByZWNlaXZlci4gQSBzaW5nbGUgdXNlciBtYXkgaGF2ZSBtdWx0aXBsZSBlLmcuIGVtYWlscywgcGhvbmVzLCBhbmQgYSBicm93c2VyLiBFYWNoIHRhcmdldCBpcyByZWdpc3RlcmVkIHdpdGggYSBzaW5nbGUgcHJvdmlkZXIuXG4gICAgICAgICAqL1xuICAgICAgICB0YXJnZXRzOiBUYXJnZXRbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1vc3QgcmVjZW50IGFjY2VzcyBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB1cGRhdGVkIGFnYWluIGFmdGVyIDI0IGhvdXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgYWNjZXNzZWRBdDogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGdvTUQ1XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQWxnb01kNSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsZ28gdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWxnb1NIQVxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEFsZ29TaGEgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGdvIHR5cGUuXG4gICAgICAgICAqL1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFsZ29QSFBhc3NcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBBbGdvUGhwYXNzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQWxnbyB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGdvQmNyeXB0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQWxnb0JjcnlwdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsZ28gdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWxnb1NjcnlwdFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEFsZ29TY3J5cHQgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGdvIHR5cGUuXG4gICAgICAgICAqL1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDUFUgY29tcGxleGl0eSBvZiBjb21wdXRlZCBoYXNoLlxuICAgICAgICAgKi9cbiAgICAgICAgY29zdENwdTogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWVtb3J5IGNvbXBsZXhpdHkgb2YgY29tcHV0ZWQgaGFzaC5cbiAgICAgICAgICovXG4gICAgICAgIGNvc3RNZW1vcnk6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhcmFsbGVsaXphdGlvbiBvZiBjb21wdXRlZCBoYXNoLlxuICAgICAgICAgKi9cbiAgICAgICAgY29zdFBhcmFsbGVsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMZW5ndGggdXNlZCB0byBjb21wdXRlIGhhc2guXG4gICAgICAgICAqL1xuICAgICAgICBsZW5ndGg6IG51bWJlcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWxnb1NjcnlwdE1vZGlmaWVkXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQWxnb1NjcnlwdE1vZGlmaWVkID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQWxnbyB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FsdCB1c2VkIHRvIGNvbXB1dGUgaGFzaC5cbiAgICAgICAgICovXG4gICAgICAgIHNhbHQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlcGFyYXRvciB1c2VkIHRvIGNvbXB1dGUgaGFzaC5cbiAgICAgICAgICovXG4gICAgICAgIHNhbHRTZXBhcmF0b3I6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEtleSB1c2VkIHRvIGNvbXB1dGUgaGFzaC5cbiAgICAgICAgICovXG4gICAgICAgIHNpZ25lcktleTogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGdvQXJnb24yXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQWxnb0FyZ29uMiA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsZ28gdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1lbW9yeSB1c2VkIHRvIGNvbXB1dGUgaGFzaC5cbiAgICAgICAgICovXG4gICAgICAgIG1lbW9yeUNvc3Q6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFtb3VudCBvZiB0aW1lIGNvbnN1bWVkIHRvIGNvbXB1dGUgaGFzaFxuICAgICAgICAgKi9cbiAgICAgICAgdGltZUNvc3Q6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE51bWJlciBvZiB0aHJlYWRzIHVzZWQgdG8gY29tcHV0ZSBoYXNoLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhyZWFkczogbnVtYmVyO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcmVmZXJlbmNlc1xuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIFByZWZlcmVuY2VzID0ge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNlc3Npb25cbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBTZXNzaW9uID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2Vzc2lvbiBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2Vzc2lvbiBjcmVhdGlvbiBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlc3Npb24gdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVXNlciBJRC5cbiAgICAgICAgICovXG4gICAgICAgIHVzZXJJZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2Vzc2lvbiBleHBpcmF0aW9uIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgZXhwaXJlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXNzaW9uIFByb3ZpZGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXI6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlc3Npb24gUHJvdmlkZXIgVXNlciBJRC5cbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyVWlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXNzaW9uIFByb3ZpZGVyIEFjY2VzcyBUb2tlbi5cbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyQWNjZXNzVG9rZW46IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBkYXRlIG9mIHdoZW4gdGhlIGFjY2VzcyB0b2tlbiBleHBpcmVzIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyQWNjZXNzVG9rZW5FeHBpcnk6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlc3Npb24gUHJvdmlkZXIgUmVmcmVzaCBUb2tlbi5cbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyUmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJUCBpbiB1c2Ugd2hlbiB0aGUgc2Vzc2lvbiB3YXMgY3JlYXRlZC5cbiAgICAgICAgICovXG4gICAgICAgIGlwOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPcGVyYXRpbmcgc3lzdGVtIGNvZGUgbmFtZS4gVmlldyBsaXN0IG9mIFthdmFpbGFibGUgb3B0aW9uc10oaHR0cHM6Ly9naXRodWIuY29tL2FwcGNvbmRhL2FwcGNvbmRhL2Jsb2IvbWFzdGVyL2RvY3MvbGlzdHMvb3MuanNvbikuXG4gICAgICAgICAqL1xuICAgICAgICBvc0NvZGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9wZXJhdGluZyBzeXN0ZW0gbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIG9zTmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogT3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgb3NWZXJzaW9uOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDbGllbnQgdHlwZS5cbiAgICAgICAgICovXG4gICAgICAgIGNsaWVudFR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENsaWVudCBjb2RlIG5hbWUuIFZpZXcgbGlzdCBvZiBbYXZhaWxhYmxlIG9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBjb25kYS9hcHBjb25kYS9ibG9iL21hc3Rlci9kb2NzL2xpc3RzL2NsaWVudHMuanNvbikuXG4gICAgICAgICAqL1xuICAgICAgICBjbGllbnRDb2RlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDbGllbnQgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGNsaWVudE5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENsaWVudCB2ZXJzaW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xpZW50VmVyc2lvbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2xpZW50IGVuZ2luZSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xpZW50RW5naW5lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDbGllbnQgZW5naW5lIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBjbGllbnRFbmdpbmVWZXJzaW9uOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXZpY2UgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGRldmljZU5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERldmljZSBicmFuZCBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgZGV2aWNlQnJhbmQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERldmljZSBtb2RlbCBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgZGV2aWNlTW9kZWw6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvdW50cnkgdHdvLWNoYXJhY3RlciBJU08gMzE2Ni0xIGFscGhhIGNvZGUuXG4gICAgICAgICAqL1xuICAgICAgICBjb3VudHJ5Q29kZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ291bnRyeSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgY291bnRyeU5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRoZSBjdXJyZW50IHVzZXIgc2Vzc2lvbi5cbiAgICAgICAgICovXG4gICAgICAgIGN1cnJlbnQ6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhY3RpdmUgc2Vzc2lvbiBmYWN0b3JzLlxuICAgICAgICAgKi9cbiAgICAgICAgZmFjdG9yczogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZWNyZXQgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuIE9ubHkgaW5jbHVkZWQgaWYgdGhlIHJlcXVlc3Qgd2FzIG1hZGUgd2l0aCBhbiBBUEkga2V5XG4gICAgICAgICAqL1xuICAgICAgICBzZWNyZXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1vc3QgcmVjZW50IGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0IHdoZW4gdGhlIHNlc3Npb24gc3VjY2Vzc2Z1bGx5IHBhc3NlZCBNRkEgY2hhbGxlbmdlLlxuICAgICAgICAgKi9cbiAgICAgICAgbWZhVXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElkZW50aXR5XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgSWRlbnRpdHkgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZGVudGl0eSBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSWRlbnRpdHkgY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZGVudGl0eSB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIElELlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcklkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZGVudGl0eSBQcm92aWRlci5cbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJRCBvZiB0aGUgVXNlciBpbiB0aGUgSWRlbnRpdHkgUHJvdmlkZXIuXG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlclVpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRW1haWwgb2YgdGhlIFVzZXIgaW4gdGhlIElkZW50aXR5IFByb3ZpZGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJFbWFpbDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSWRlbnRpdHkgUHJvdmlkZXIgQWNjZXNzIFRva2VuLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGRhdGUgb2Ygd2hlbiB0aGUgYWNjZXNzIHRva2VuIGV4cGlyZXMgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJBY2Nlc3NUb2tlbkV4cGlyeTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSWRlbnRpdHkgUHJvdmlkZXIgUmVmcmVzaCBUb2tlbi5cbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyUmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRva2VuXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgVG9rZW4gPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb2tlbiBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVG9rZW4gY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIElELlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcklkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb2tlbiBzZWNyZXQga2V5LiBUaGlzIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyB1bmxlc3MgdGhlIHJlc3BvbnNlIGlzIHJldHVybmVkIHVzaW5nIGFuIEFQSSBrZXkgb3IgYXMgcGFydCBvZiBhIHdlYmhvb2sgcGF5bG9hZC5cbiAgICAgICAgICovXG4gICAgICAgIHNlY3JldDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVG9rZW4gZXhwaXJhdGlvbiBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgIGV4cGlyZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2VjdXJpdHkgcGhyYXNlIG9mIGEgdG9rZW4uIEVtcHR5IGlmIHNlY3VyaXR5IHBocmFzZSB3YXMgbm90IHJlcXVlc3RlZCB3aGVuIGNyZWF0aW5nIGEgdG9rZW4uIEl0IGluY2x1ZGVzIHJhbmRvbWx5IGdlbmVyYXRlZCBwaHJhc2Ugd2hpY2ggaXMgYWxzbyBzZW50IGluIHRoZSBleHRlcm5hbCByZXNvdXJjZSBzdWNoIGFzIGVtYWlsLlxuICAgICAgICAgKi9cbiAgICAgICAgcGhyYXNlOiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEpXVFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEp3dCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEpXVCBlbmNvZGVkIHN0cmluZy5cbiAgICAgICAgICovXG4gICAgICAgIGp3dDogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMb2NhbGVcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBMb2NhbGUgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIElQIGFkZHJlc3MuXG4gICAgICAgICAqL1xuICAgICAgICBpcDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ291bnRyeSBjb2RlIGluIFtJU08gMzE2Ni0xXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT18zMTY2LTEpIHR3by1jaGFyYWN0ZXIgZm9ybWF0XG4gICAgICAgICAqL1xuICAgICAgICBjb3VudHJ5Q29kZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ291bnRyeSBuYW1lLiBUaGlzIGZpZWxkIHN1cHBvcnQgbG9jYWxpemF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgY291bnRyeTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29udGluZW50IGNvZGUuIEEgdHdvIGNoYXJhY3RlciBjb250aW5lbnQgY29kZSAmcXVvdDtBRiZxdW90OyBmb3IgQWZyaWNhLCAmcXVvdDtBTiZxdW90OyBmb3IgQW50YXJjdGljYSwgJnF1b3Q7QVMmcXVvdDsgZm9yIEFzaWEsICZxdW90O0VVJnF1b3Q7IGZvciBFdXJvcGUsICZxdW90O05BJnF1b3Q7IGZvciBOb3J0aCBBbWVyaWNhLCAmcXVvdDtPQyZxdW90OyBmb3IgT2NlYW5pYSwgYW5kICZxdW90O1NBJnF1b3Q7IGZvciBTb3V0aCBBbWVyaWNhLlxuICAgICAgICAgKi9cbiAgICAgICAgY29udGluZW50Q29kZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29udGluZW50IG5hbWUuIFRoaXMgZmllbGQgc3VwcG9ydCBsb2NhbGl6YXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICBjb250aW5lbnQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRydWUgaWYgY291bnRyeSBpcyBwYXJ0IG9mIHRoZSBFdXJvcGVhbiBVbmlvbi5cbiAgICAgICAgICovXG4gICAgICAgIGV1OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3VycmVuY3kgY29kZSBpbiBbSVNPIDQyMTctMV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fNDIxNykgdGhyZWUtY2hhcmFjdGVyIGZvcm1hdFxuICAgICAgICAgKi9cbiAgICAgICAgY3VycmVuY3k6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogTG9jYWxlQ29kZVxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIExvY2FsZUNvZGUgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMb2NhbGUgY29kZXMgaW4gW0lTTyA2MzktMV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9JU09fNjM5LTFfY29kZXMpXG4gICAgICAgICAqL1xuICAgICAgICBjb2RlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMb2NhbGUgbmFtZVxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaWxlXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgRmlsZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpbGUgSUQuXG4gICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1Y2tldCBJRC5cbiAgICAgICAgICovXG4gICAgICAgIGJ1Y2tldElkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaWxlIGNyZWF0aW9uIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRmlsZSB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaWxlIHBlcm1pc3Npb25zLiBbTGVhcm4gbW9yZSBhYm91dCBwZXJtaXNzaW9uc10oaHR0cHM6Ly9hcHBjb25kYS5pby9kb2NzL3Blcm1pc3Npb25zKS5cbiAgICAgICAgICovXG4gICAgICAgICRwZXJtaXNzaW9uczogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaWxlIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaWxlIE1ENSBzaWduYXR1cmUuXG4gICAgICAgICAqL1xuICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpbGUgbWltZSB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgbWltZVR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpbGUgb3JpZ2luYWwgc2l6ZSBpbiBieXRlcy5cbiAgICAgICAgICovXG4gICAgICAgIHNpemVPcmlnaW5hbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIGNodW5rcyBhdmFpbGFibGVcbiAgICAgICAgICovXG4gICAgICAgIGNodW5rc1RvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3RhbCBudW1iZXIgb2YgY2h1bmtzIHVwbG9hZGVkXG4gICAgICAgICAqL1xuICAgICAgICBjaHVua3NVcGxvYWRlZDogbnVtYmVyO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBCdWNrZXRcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBCdWNrZXQgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCdWNrZXQgSUQuXG4gICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1Y2tldCBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1Y2tldCB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCdWNrZXQgcGVybWlzc2lvbnMuIFtMZWFybiBtb3JlIGFib3V0IHBlcm1pc3Npb25zXShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvcGVybWlzc2lvbnMpLlxuICAgICAgICAgKi9cbiAgICAgICAgJHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgZmlsZS1sZXZlbCBzZWN1cml0eSBpcyBlbmFibGVkLiBbTGVhcm4gbW9yZSBhYm91dCBwZXJtaXNzaW9uc10oaHR0cHM6Ly9hcHBjb25kYS5pby9kb2NzL3Blcm1pc3Npb25zKS5cbiAgICAgICAgICovXG4gICAgICAgIGZpbGVTZWN1cml0eTogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1Y2tldCBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnVja2V0IGVuYWJsZWQuXG4gICAgICAgICAqL1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWF4aW11bSBmaWxlIHNpemUgc3VwcG9ydGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgbWF4aW11bUZpbGVTaXplOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGxvd2VkIGZpbGUgZXh0ZW5zaW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb21wcmVzc2lvbiBhbGdvcml0aG0gY2hvb3NlbiBmb3IgY29tcHJlc3Npb24uIFdpbGwgYmUgb25lIG9mIG5vbmUsIFtnemlwXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HemlwKSwgb3IgW3pzdGRdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1pzdGQpLlxuICAgICAgICAgKi9cbiAgICAgICAgY29tcHJlc3Npb246IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1Y2tldCBpcyBlbmNyeXB0ZWQuXG4gICAgICAgICAqL1xuICAgICAgICBlbmNyeXB0aW9uOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogVmlydXMgc2Nhbm5pbmcgaXMgZW5hYmxlZC5cbiAgICAgICAgICovXG4gICAgICAgIGFudGl2aXJ1czogYm9vbGVhbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGVhbVxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIFRlYW08UHJlZmVyZW5jZXMgZXh0ZW5kcyBNb2RlbHMuUHJlZmVyZW5jZXM+ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGVhbSBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGVhbSBjcmVhdGlvbiBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRlYW0gdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGVhbSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIHRlYW0gbWVtYmVycy5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUZWFtIHByZWZlcmVuY2VzIGFzIGEga2V5LXZhbHVlIG9iamVjdFxuICAgICAgICAgKi9cbiAgICAgICAgcHJlZnM6IFByZWZlcmVuY2VzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNZW1iZXJzaGlwXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgTWVtYmVyc2hpcCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1lbWJlcnNoaXAgSUQuXG4gICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1lbWJlcnNoaXAgY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNZW1iZXJzaGlwIHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgSUQuXG4gICAgICAgICAqL1xuICAgICAgICB1c2VySWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIHVzZXJOYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIGVtYWlsIGFkZHJlc3MuXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyRW1haWw6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRlYW0gSUQuXG4gICAgICAgICAqL1xuICAgICAgICB0ZWFtSWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRlYW0gbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIHRlYW1OYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEYXRlLCB0aGUgdXNlciBoYXMgYmVlbiBpbnZpdGVkIHRvIGpvaW4gdGhlIHRlYW0gaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgaW52aXRlZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGF0ZSwgdGhlIHVzZXIgaGFzIGFjY2VwdGVkIHRoZSBpbnZpdGF0aW9uIHRvIGpvaW4gdGhlIHRlYW0gaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgam9pbmVkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIGNvbmZpcm1hdGlvbiBzdGF0dXMsIHRydWUgaWYgdGhlIHVzZXIgaGFzIGpvaW5lZCB0aGUgdGVhbSBvciBmYWxzZSBvdGhlcndpc2UuXG4gICAgICAgICAqL1xuICAgICAgICBjb25maXJtOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogTXVsdGkgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIHN0YXR1cywgdHJ1ZSBpZiB0aGUgdXNlciBoYXMgTUZBIGVuYWJsZWQgb3IgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAgICAgKi9cbiAgICAgICAgbWZhOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogVXNlciBsaXN0IG9mIHJvbGVzXG4gICAgICAgICAqL1xuICAgICAgICByb2xlczogc3RyaW5nW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgRnVuY3Rpb24gPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRnVuY3Rpb24gY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFeGVjdXRpb24gcGVybWlzc2lvbnMuXG4gICAgICAgICAqL1xuICAgICAgICBleGVjdXRlOiBzdHJpbmdbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZ1bmN0aW9uIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiBlbmFibGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIHRoZSBmdW5jdGlvbiBkZXBsb3llZCB3aXRoIHRoZSBsYXRlc3QgY29uZmlndXJhdGlvbj8gVGhpcyBpcyBzZXQgdG8gZmFsc2UgaWYgeW91JiMwMzk7dmUgY2hhbmdlZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGVudHJ5cG9pbnQsIGNvbW1hbmRzLCBvciBvdGhlciBzZXR0aW5ncyB0aGF0IG5lZWRzIHJlZGVwbG95IHRvIGJlIGFwcGxpZWQuIFdoZW4gdGhlIHZhbHVlIGlzIGZhbHNlLCByZWRlcGxveSB0aGUgZnVuY3Rpb24gdG8gdXBkYXRlIGl0IHdpdGggdGhlIGxhdGVzdCBjb25maWd1cmF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgbGl2ZTogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgZXhlY3V0aW9ucyB3aWxsIGJlIGxvZ2dlZC4gV2hlbiBzZXQgdG8gZmFsc2UsIGV4ZWN1dGlvbnMgd2lsbCBub3QgYmUgbG9nZ2VkLCBidXQgd2lsbCByZWR1Y2UgcmVzb3VyY2UgdXNlZCBieSB5b3VyIEFwcGNvbmRhIHByb2plY3QuXG4gICAgICAgICAqL1xuICAgICAgICBsb2dnaW5nOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogRnVuY3Rpb24gZXhlY3V0aW9uIHJ1bnRpbWUuXG4gICAgICAgICAqL1xuICAgICAgICBydW50aW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiYjMDM5O3MgYWN0aXZlIGRlcGxveW1lbnQgSUQuXG4gICAgICAgICAqL1xuICAgICAgICBkZXBsb3ltZW50OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGxvd2VkIHBlcm1pc3Npb24gc2NvcGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgc2NvcGVzOiBzdHJpbmdbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZ1bmN0aW9uIHZhcmlhYmxlcy5cbiAgICAgICAgICovXG4gICAgICAgIHZhcnM6IFZhcmlhYmxlW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiB0cmlnZ2VyIGV2ZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIGV2ZW50czogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiBleGVjdXRpb24gc2NoZWR1bHQgaW4gQ1JPTiBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICBzY2hlZHVsZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRnVuY3Rpb24gZXhlY3V0aW9uIHRpbWVvdXQgaW4gc2Vjb25kcy5cbiAgICAgICAgICovXG4gICAgICAgIHRpbWVvdXQ6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBlbnRyeXBvaW50IGZpbGUgdXNlZCB0byBleGVjdXRlIHRoZSBkZXBsb3ltZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgZW50cnlwb2ludDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGJ1aWxkIGNvbW1hbmQgdXNlZCB0byBidWlsZCB0aGUgZGVwbG95bWVudC5cbiAgICAgICAgICovXG4gICAgICAgIGNvbW1hbmRzOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWZXJzaW9uIG9mIE9wZW4gUnVudGltZXMgdXNlZCBmb3IgdGhlIGZ1bmN0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRnVuY3Rpb24gVkNTIChWZXJzaW9uIENvbnRyb2wgU3lzdGVtKSBpbnN0YWxsYXRpb24gaWQuXG4gICAgICAgICAqL1xuICAgICAgICBpbnN0YWxsYXRpb25JZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVkNTIChWZXJzaW9uIENvbnRyb2wgU3lzdGVtKSBSZXBvc2l0b3J5IElEXG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlclJlcG9zaXRvcnlJZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVkNTIChWZXJzaW9uIENvbnRyb2wgU3lzdGVtKSBicmFuY2ggbmFtZVxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJCcmFuY2g6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhdGggdG8gZnVuY3Rpb24gaW4gVkNTIChWZXJzaW9uIENvbnRyb2wgU3lzdGVtKSByZXBvc2l0b3J5XG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlclJvb3REaXJlY3Rvcnk6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIFZDUyAoVmVyc2lvbiBDb250cm9sIFN5c3RlbSkgY29ubmVjdGlvbiBpcyBpbiBzaWxlbnQgbW9kZT8gV2hlbiBpbiBzaWxlbmNlIG1vZGUsIG5vIGNvbW1lbnRzIHdpbGwgYmUgcG9zdGVkIG9uIHRoZSByZXBvc2l0b3J5IHB1bGwgb3IgbWVyZ2UgcmVxdWVzdHNcbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyU2lsZW50TW9kZTogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1hY2hpbmUgc3BlY2lmaWNhdGlvbiBmb3IgYnVpbGRzIGFuZCBleGVjdXRpb25zLlxuICAgICAgICAgKi9cbiAgICAgICAgc3BlY2lmaWNhdGlvbjogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSdW50aW1lXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgUnVudGltZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJ1bnRpbWUgSUQuXG4gICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhcmVudCBydW50aW1lIGtleS5cbiAgICAgICAgICovXG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogUnVudGltZSBOYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogUnVudGltZSB2ZXJzaW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQmFzZSBEb2NrZXIgaW1hZ2UgdXNlZCB0byBidWlsZCB0aGUgcnVudGltZS5cbiAgICAgICAgICovXG4gICAgICAgIGJhc2U6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEltYWdlIG5hbWUgb2YgRG9ja2VyIEh1Yi5cbiAgICAgICAgICovXG4gICAgICAgIGltYWdlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOYW1lIG9mIHRoZSBsb2dvIGltYWdlLlxuICAgICAgICAgKi9cbiAgICAgICAgbG9nbzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy5cbiAgICAgICAgICovXG4gICAgICAgIHN1cHBvcnRzOiBzdHJpbmdbXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVwbG95bWVudFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIERlcGxveW1lbnQgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXBsb3ltZW50IElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXBsb3ltZW50IGNyZWF0aW9uIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVwbG95bWVudCB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUeXBlIG9mIGRlcGxveW1lbnQuXG4gICAgICAgICAqL1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXNvdXJjZSBJRC5cbiAgICAgICAgICovXG4gICAgICAgIHJlc291cmNlSWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlc291cmNlIHR5cGUuXG4gICAgICAgICAqL1xuICAgICAgICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBlbnRyeXBvaW50IGZpbGUgdG8gdXNlIHRvIGV4ZWN1dGUgdGhlIGRlcGxveW1lbnQgY29kZS5cbiAgICAgICAgICovXG4gICAgICAgIGVudHJ5cG9pbnQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBjb2RlIHNpemUgaW4gYnl0ZXMuXG4gICAgICAgICAqL1xuICAgICAgICBzaXplOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgYnVpbGQgb3V0cHV0IHNpemUgaW4gYnl0ZXMuXG4gICAgICAgICAqL1xuICAgICAgICBidWlsZFNpemU6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBjdXJyZW50IGJ1aWxkIElELlxuICAgICAgICAgKi9cbiAgICAgICAgYnVpbGRJZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciB0aGUgZGVwbG95bWVudCBzaG91bGQgYmUgYXV0b21hdGljYWxseSBhY3RpdmF0ZWQuXG4gICAgICAgICAqL1xuICAgICAgICBhY3RpdmF0ZTogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBkZXBsb3ltZW50IHN0YXR1cy4gUG9zc2libGUgdmFsdWVzIGFyZSAmcXVvdDtwcm9jZXNzaW5nJnF1b3Q7LCAmcXVvdDtidWlsZGluZyZxdW90OywgJnF1b3Q7d2FpdGluZyZxdW90OywgJnF1b3Q7cmVhZHkmcXVvdDssIGFuZCAmcXVvdDtmYWlsZWQmcXVvdDsuXG4gICAgICAgICAqL1xuICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBidWlsZCBsb2dzLlxuICAgICAgICAgKi9cbiAgICAgICAgYnVpbGRMb2dzOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgY3VycmVudCBidWlsZCB0aW1lIGluIHNlY29uZHMuXG4gICAgICAgICAqL1xuICAgICAgICBidWlsZFRpbWU6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSB2Y3MgcHJvdmlkZXIgcmVwb3NpdG9yeVxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJSZXBvc2l0b3J5TmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIG5hbWUgb2YgdGhlIHZjcyBwcm92aWRlciByZXBvc2l0b3J5IG93bmVyXG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlclJlcG9zaXRvcnlPd25lcjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHVybCBvZiB0aGUgdmNzIHByb3ZpZGVyIHJlcG9zaXRvcnlcbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyUmVwb3NpdG9yeVVybDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGJyYW5jaCBvZiB0aGUgdmNzIHJlcG9zaXRvcnlcbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyQnJhbmNoOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgY29tbWl0IGhhc2ggb2YgdGhlIHZjcyBjb21taXRcbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyQ29tbWl0SGFzaDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHVybCBvZiB2Y3MgY29tbWl0IGF1dGhvclxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJDb21taXRBdXRob3JVcmw6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBuYW1lIG9mIHZjcyBjb21taXQgYXV0aG9yXG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlckNvbW1pdEF1dGhvcjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGNvbW1pdCBtZXNzYWdlXG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlckNvbW1pdE1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB1cmwgb2YgdGhlIHZjcyBjb21taXRcbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVyQ29tbWl0VXJsOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgYnJhbmNoIG9mIHRoZSB2Y3MgcmVwb3NpdG9yeVxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJCcmFuY2hVcmw6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRXhlY3V0aW9uXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgRXhlY3V0aW9uID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogRXhlY3V0aW9uIElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFeGVjdXRpb24gY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFeGVjdXRpb24gdXBhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFeGVjdXRpb24gcm9sZXMuXG4gICAgICAgICAqL1xuICAgICAgICAkcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICAgICAgICAvKipcbiAgICAgICAgICogRnVuY3Rpb24gSUQuXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbklkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdHJpZ2dlciB0aGF0IGNhdXNlZCB0aGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS4gUG9zc2libGUgdmFsdWVzIGNhbiBiZTogYGh0dHBgLCBgc2NoZWR1bGVgLCBvciBgZXZlbnRgLlxuICAgICAgICAgKi9cbiAgICAgICAgdHJpZ2dlcjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHN0YXR1cyBvZiB0aGUgZnVuY3Rpb24gZXhlY3V0aW9uLiBQb3NzaWJsZSB2YWx1ZXMgY2FuIGJlOiBgd2FpdGluZ2AsIGBwcm9jZXNzaW5nYCwgYGNvbXBsZXRlZGAsIG9yIGBmYWlsZWRgLlxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIVFRQIHJlcXVlc3QgbWV0aG9kIHR5cGUuXG4gICAgICAgICAqL1xuICAgICAgICByZXF1ZXN0TWV0aG9kOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIVFRQIHJlcXVlc3QgcGF0aCBhbmQgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICByZXF1ZXN0UGF0aDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSFRUUCByZXNwb25zZSBoZWFkZXJzIGFzIGEga2V5LXZhbHVlIG9iamVjdC4gVGhpcyB3aWxsIHJldHVybiBvbmx5IHdoaXRlbGlzdGVkIGhlYWRlcnMuIEFsbCBoZWFkZXJzIGFyZSByZXR1cm5lZCBpZiBleGVjdXRpb24gaXMgY3JlYXRlZCBhcyBzeW5jaHJvbm91cy5cbiAgICAgICAgICovXG4gICAgICAgIHJlcXVlc3RIZWFkZXJzOiBIZWFkZXJzW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVzcG9uc2VTdGF0dXNDb2RlOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIVFRQIHJlc3BvbnNlIGJvZHkuIFRoaXMgd2lsbCByZXR1cm4gZW1wdHkgdW5sZXNzIGV4ZWN1dGlvbiBpcyBjcmVhdGVkIGFzIHN5bmNocm9ub3VzLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVzcG9uc2VCb2R5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgYXMgYSBrZXktdmFsdWUgb2JqZWN0LiBUaGlzIHdpbGwgcmV0dXJuIG9ubHkgd2hpdGVsaXN0ZWQgaGVhZGVycy4gQWxsIGhlYWRlcnMgYXJlIHJldHVybmVkIGlmIGV4ZWN1dGlvbiBpcyBjcmVhdGVkIGFzIHN5bmNocm9ub3VzLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVzcG9uc2VIZWFkZXJzOiBIZWFkZXJzW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiBsb2dzLiBJbmNsdWRlcyB0aGUgbGFzdCA0LDAwMCBjaGFyYWN0ZXJzLiBUaGlzIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyB1bmxlc3MgdGhlIHJlc3BvbnNlIGlzIHJldHVybmVkIHVzaW5nIGFuIEFQSSBrZXkgb3IgYXMgcGFydCBvZiBhIHdlYmhvb2sgcGF5bG9hZC5cbiAgICAgICAgICovXG4gICAgICAgIGxvZ3M6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZ1bmN0aW9uIGVycm9ycy4gSW5jbHVkZXMgdGhlIGxhc3QgNCwwMDAgY2hhcmFjdGVycy4gVGhpcyB3aWxsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgdW5sZXNzIHRoZSByZXNwb25zZSBpcyByZXR1cm5lZCB1c2luZyBhbiBBUEkga2V5IG9yIGFzIHBhcnQgb2YgYSB3ZWJob29rIHBheWxvYWQuXG4gICAgICAgICAqL1xuICAgICAgICBlcnJvcnM6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZ1bmN0aW9uIGV4ZWN1dGlvbiBkdXJhdGlvbiBpbiBzZWNvbmRzLlxuICAgICAgICAgKi9cbiAgICAgICAgZHVyYXRpb246IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBzY2hlZHVsZWQgdGltZSBmb3IgZXhlY3V0aW9uLiBJZiBsZWZ0IGVtcHR5LCBleGVjdXRpb24gd2lsbCBiZSBxdWV1ZWQgaW1tZWRpYXRlbHkuXG4gICAgICAgICAqL1xuICAgICAgICBzY2hlZHVsZWRBdD86IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQnVpbGRcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBCdWlsZCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1aWxkIElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGVwbG95bWVudCB0aGF0IGNyZWF0ZWQgdGhpcyBidWlsZC5cbiAgICAgICAgICovXG4gICAgICAgIGRlcGxveW1lbnRJZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGJ1aWxkIHN0YXR1cy4gVGhlcmUgYXJlIGEgZmV3IGRpZmZlcmVudCB0eXBlcyBhbmQgZWFjaCBvbmUgbWVhbnMgc29tZXRoaW5nIGRpZmZlcmVudC4gXFxuRmFpbGVkIC0gVGhlIGRlcGxveW1lbnQgYnVpbGQgaGFzIGZhaWxlZC4gTW9yZSBkZXRhaWxzIGNhbiB1c3VhbGx5IGJlIGZvdW5kIGluIGJ1aWxkU3RkZXJyXFxuUmVhZHkgLSBUaGUgZGVwbG95bWVudCBidWlsZCB3YXMgc3VjY2Vzc2Z1bCBhbmQgdGhlIGRlcGxveW1lbnQgaXMgcmVhZHkgdG8gYmUgZGVwbG95ZWRcXG5Qcm9jZXNzaW5nIC0gVGhlIGRlcGxveW1lbnQgaXMgY3VycmVudGx5IHdhaXRpbmcgdG8gaGF2ZSBhIGJ1aWxkIHRyaWdnZXJlZFxcbkJ1aWxkaW5nIC0gVGhlIGRlcGxveW1lbnQgaXMgY3VycmVudGx5IGJlaW5nIGJ1aWx0XG4gICAgICAgICAqL1xuICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBzdGRvdXQgb2YgdGhlIGJ1aWxkLlxuICAgICAgICAgKi9cbiAgICAgICAgc3Rkb3V0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgc3RkZXJyIG9mIHRoZSBidWlsZC5cbiAgICAgICAgICovXG4gICAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGRlcGxveW1lbnQgY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICBzdGFydFRpbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0aW1lIHRoZSBidWlsZCB3YXMgZmluaXNoZWQgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgZW5kVGltZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGJ1aWxkIGR1cmF0aW9uIGluIHNlY29uZHMuXG4gICAgICAgICAqL1xuICAgICAgICBkdXJhdGlvbjogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGNvZGUgc2l6ZSBpbiBieXRlcy5cbiAgICAgICAgICovXG4gICAgICAgIHNpemU6IG51bWJlcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVmFyaWFibGVcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBWYXJpYWJsZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZhcmlhYmxlIElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWYXJpYWJsZSBjcmVhdGlvbiBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZhcmlhYmxlIGNyZWF0aW9uIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVmFyaWFibGUga2V5LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWYXJpYWJsZSB2YWx1ZS5cbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXJ2aWNlIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSBiZWxvbmdzLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICZxdW90O3Byb2plY3QmcXVvdDssICZxdW90O2Z1bmN0aW9uJnF1b3Q7XG4gICAgICAgICAqL1xuICAgICAgICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElEIG9mIHJlc291cmNlIHRvIHdoaWNoIHRoZSB2YXJpYWJsZSBiZWxvbmdzLiBJZiByZXNvdXJjZVR5cGUgaXMgJnF1b3Q7cHJvamVjdCZxdW90OywgaXQgaXMgZW1wdHkuIElmIHJlc291cmNlVHlwZSBpcyAmcXVvdDtmdW5jdGlvbiZxdW90OywgaXQgaXMgSUQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVzb3VyY2VJZDogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb3VudHJ5XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgQ291bnRyeSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvdW50cnkgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvdW50cnkgdHdvLWNoYXJhY3RlciBJU08gMzE2Ni0xIGFscGhhIGNvZGUuXG4gICAgICAgICAqL1xuICAgICAgICBjb2RlOiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnRpbmVudFxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIENvbnRpbmVudCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbnRpbmVudCBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29udGluZW50IHR3byBsZXR0ZXIgY29kZS5cbiAgICAgICAgICovXG4gICAgICAgIGNvZGU6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogTGFuZ3VhZ2VcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBMYW5ndWFnZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExhbmd1YWdlIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMYW5ndWFnZSB0d28tY2hhcmFjdGVyIElTTyA2MzktMSBjb2Rlcy5cbiAgICAgICAgICovXG4gICAgICAgIGNvZGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExhbmd1YWdlIG5hdGl2ZSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgbmF0aXZlTmFtZTogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDdXJyZW5jeVxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEN1cnJlbmN5ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3VycmVuY3kgc3ltYm9sLlxuICAgICAgICAgKi9cbiAgICAgICAgc3ltYm9sOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW5jeSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3VycmVuY3kgbmF0aXZlIHN5bWJvbC5cbiAgICAgICAgICovXG4gICAgICAgIHN5bWJvbE5hdGl2ZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogTnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzLlxuICAgICAgICAgKi9cbiAgICAgICAgZGVjaW1hbERpZ2l0czogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3VycmVuY3kgZGlnaXQgcm91bmRpbmcuXG4gICAgICAgICAqL1xuICAgICAgICByb3VuZGluZzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3VycmVuY3kgY29kZSBpbiBbSVNPIDQyMTctMV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fNDIxNykgdGhyZWUtY2hhcmFjdGVyIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgIGNvZGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEN1cnJlbmN5IHBsdXJhbCBuYW1lXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lUGx1cmFsOiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFBob25lXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgUGhvbmUgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQaG9uZSBjb2RlLlxuICAgICAgICAgKi9cbiAgICAgICAgY29kZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ291bnRyeSB0d28tY2hhcmFjdGVyIElTTyAzMTY2LTEgYWxwaGEgY29kZS5cbiAgICAgICAgICovXG4gICAgICAgIGNvdW50cnlDb2RlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb3VudHJ5IG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBjb3VudHJ5TmFtZTogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWFsdGggQW50aXZpcnVzXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgSGVhbHRoQW50aXZpcnVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQW50aXZpcnVzIHZlcnNpb24uXG4gICAgICAgICAqL1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbnRpdmlydXMgc3RhdHVzLiBQb3NzaWJsZSB2YWx1ZXMgY2FuIGFyZTogYGRpc2FibGVkYCwgYG9mZmxpbmVgLCBgb25saW5lYFxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhlYWx0aCBRdWV1ZVxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEhlYWx0aFF1ZXVlID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQW1vdW50IG9mIGFjdGlvbnMgaW4gdGhlIHF1ZXVlLlxuICAgICAgICAgKi9cbiAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWFsdGggU3RhdHVzXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgSGVhbHRoU3RhdHVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICAgICAgICovXG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIER1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyBob3cgbG9uZyB0aGUgaGVhbHRoIGNoZWNrIHRvb2suXG4gICAgICAgICAqL1xuICAgICAgICBwaW5nOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXJ2aWNlIHN0YXR1cy4gUG9zc2libGUgdmFsdWVzIGNhbiBhcmU6IGBwYXNzYCwgYGZhaWxgXG4gICAgICAgICAqL1xuICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogSGVhbHRoIENlcnRpZmljYXRlXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgSGVhbHRoQ2VydGlmaWNhdGUgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDZXJ0aWZpY2F0ZSBuYW1lXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJqZWN0IFNOXG4gICAgICAgICAqL1xuICAgICAgICBzdWJqZWN0U046IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzc3VlciBvcmdhbmlzYXRpb25cbiAgICAgICAgICovXG4gICAgICAgIGlzc3Vlck9yZ2FuaXNhdGlvbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVmFsaWQgZnJvbVxuICAgICAgICAgKi9cbiAgICAgICAgdmFsaWRGcm9tOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWYWxpZCB0b1xuICAgICAgICAgKi9cbiAgICAgICAgdmFsaWRUbzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2lnbmF0dXJlIHR5cGUgU05cbiAgICAgICAgICovXG4gICAgICAgIHNpZ25hdHVyZVR5cGVTTjogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWFsdGggVGltZVxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEhlYWx0aFRpbWUgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IHVuaXggdGltZXN0YW1wIG9uIHRydXN0ZnVsIHJlbW90ZSBzZXJ2ZXIuXG4gICAgICAgICAqL1xuICAgICAgICByZW1vdGVUaW1lOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IHVuaXggdGltZXN0YW1wIG9mIGxvY2FsIHNlcnZlciB3aGVyZSBBcHBjb25kYSBydW5zLlxuICAgICAgICAgKi9cbiAgICAgICAgbG9jYWxUaW1lOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEaWZmZXJlbmNlIG9mIHVuaXggcmVtb3RlIGFuZCBsb2NhbCB0aW1lc3RhbXBzIGluIG1pbGxpc2Vjb25kcy5cbiAgICAgICAgICovXG4gICAgICAgIGRpZmY6IG51bWJlcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSGVhZGVyc1xuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIEhlYWRlcnMgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIZWFkZXIgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhlYWRlciB2YWx1ZS5cbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNwZWNpZmljYXRpb25cbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBTcGVjaWZpY2F0aW9uID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogTWVtb3J5IHNpemUgaW4gTUIuXG4gICAgICAgICAqL1xuICAgICAgICBtZW1vcnk6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE51bWJlciBvZiBDUFVzLlxuICAgICAgICAgKi9cbiAgICAgICAgY3B1czogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgc2l6ZSBlbmFibGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNpemUgc2x1Zy5cbiAgICAgICAgICovXG4gICAgICAgIHNsdWc6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogTUZBIENoYWxsZW5nZVxuICAgICAqL1xuICAgIGV4cG9ydCB0eXBlIE1mYUNoYWxsZW5nZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRva2VuIElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb2tlbiBjcmVhdGlvbiBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgSUQuXG4gICAgICAgICAqL1xuICAgICAgICB1c2VySWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRva2VuIGV4cGlyYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICBleHBpcmU6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogTUZBIFJlY292ZXJ5IENvZGVzXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgTWZhUmVjb3ZlcnlDb2RlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlY292ZXJ5IGNvZGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVjb3ZlcnlDb2Rlczogc3RyaW5nW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1GQVR5cGVcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBNZmFUeXBlID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2VjcmV0IHRva2VuIHVzZWQgZm9yIFRPVFAgZmFjdG9yLlxuICAgICAgICAgKi9cbiAgICAgICAgc2VjcmV0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVUkkgZm9yIGF1dGhlbnRpY2F0b3IgYXBwcy5cbiAgICAgICAgICovXG4gICAgICAgIHVyaTogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNRkFGYWN0b3JzXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgTWZhRmFjdG9ycyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENhbiBUT1RQIGJlIHVzZWQgZm9yIE1GQSBjaGFsbGVuZ2UgZm9yIHRoaXMgYWNjb3VudC5cbiAgICAgICAgICovXG4gICAgICAgIHRvdHA6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYW4gcGhvbmUgKFNNUykgYmUgdXNlZCBmb3IgTUZBIGNoYWxsZW5nZSBmb3IgdGhpcyBhY2NvdW50LlxuICAgICAgICAgKi9cbiAgICAgICAgcGhvbmU6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYW4gZW1haWwgYmUgdXNlZCBmb3IgTUZBIGNoYWxsZW5nZSBmb3IgdGhpcyBhY2NvdW50LlxuICAgICAgICAgKi9cbiAgICAgICAgZW1haWw6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYW4gcmVjb3ZlcnkgY29kZSBiZSB1c2VkIGZvciBNRkEgY2hhbGxlbmdlIGZvciB0aGlzIGFjY291bnQuXG4gICAgICAgICAqL1xuICAgICAgICByZWNvdmVyeUNvZGU6IGJvb2xlYW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVyXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgUHJvdmlkZXIgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm92aWRlciBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvdmlkZXIgY3JlYXRpb24gdGltZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm92aWRlciB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgbmFtZSBmb3IgdGhlIHByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIG5hbWUgb2YgdGhlIHByb3ZpZGVyIHNlcnZpY2UuXG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlcjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXMgcHJvdmlkZXIgZW5hYmxlZD9cbiAgICAgICAgICovXG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUeXBlIG9mIHByb3ZpZGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvdmlkZXIgY3JlZGVudGlhbHMuXG4gICAgICAgICAqL1xuICAgICAgICBjcmVkZW50aWFsczogb2JqZWN0O1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvdmlkZXIgb3B0aW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIG9wdGlvbnM/OiBvYmplY3Q7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1lc3NhZ2VcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBNZXNzYWdlID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogTWVzc2FnZSBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWVzc2FnZSBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1lc3NhZ2UgdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWVzc2FnZSBwcm92aWRlciB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJUeXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3BpYyBJRHMgc2V0IGFzIHJlY2lwaWVudHMuXG4gICAgICAgICAqL1xuICAgICAgICB0b3BpY3M6IHN0cmluZ1tdO1xuICAgICAgICAvKipcbiAgICAgICAgICogVXNlciBJRHMgc2V0IGFzIHJlY2lwaWVudHMuXG4gICAgICAgICAqL1xuICAgICAgICB1c2Vyczogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYXJnZXQgSURzIHNldCBhcyByZWNpcGllbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgdGFyZ2V0czogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgc2NoZWR1bGVkIHRpbWUgZm9yIG1lc3NhZ2UuXG4gICAgICAgICAqL1xuICAgICAgICBzY2hlZHVsZWRBdD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0aW1lIHdoZW4gdGhlIG1lc3NhZ2Ugd2FzIGRlbGl2ZXJlZC5cbiAgICAgICAgICovXG4gICAgICAgIGRlbGl2ZXJlZEF0Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVsaXZlcnkgZXJyb3JzIGlmIGFueS5cbiAgICAgICAgICovXG4gICAgICAgIGRlbGl2ZXJ5RXJyb3JzPzogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOdW1iZXIgb2YgcmVjaXBpZW50cyB0aGUgbWVzc2FnZSB3YXMgZGVsaXZlcmVkIHRvLlxuICAgICAgICAgKi9cbiAgICAgICAgZGVsaXZlcmVkVG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERhdGEgb2YgdGhlIG1lc3NhZ2UuXG4gICAgICAgICAqL1xuICAgICAgICBkYXRhOiBvYmplY3Q7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdGF0dXMgb2YgZGVsaXZlcnkuXG4gICAgICAgICAqL1xuICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogVG9waWNcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBUb3BpYyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvcGljIElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3BpYyBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvcGljIHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSB0b3BpYy5cbiAgICAgICAgICovXG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIGNvdW50IG9mIGVtYWlsIHN1YnNjcmliZXJzIHN1YnNjcmliZWQgdG8gdGhlIHRvcGljLlxuICAgICAgICAgKi9cbiAgICAgICAgZW1haWxUb3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgY291bnQgb2YgU01TIHN1YnNjcmliZXJzIHN1YnNjcmliZWQgdG8gdGhlIHRvcGljLlxuICAgICAgICAgKi9cbiAgICAgICAgc21zVG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIGNvdW50IG9mIHB1c2ggc3Vic2NyaWJlcnMgc3Vic2NyaWJlZCB0byB0aGUgdG9waWMuXG4gICAgICAgICAqL1xuICAgICAgICBwdXNoVG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1YnNjcmliZSBwZXJtaXNzaW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIHN1YnNjcmliZTogc3RyaW5nW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZXJcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBTdWJzY3JpYmVyID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogU3Vic2NyaWJlciBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3Vic2NyaWJlciBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1YnNjcmliZXIgdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IElELlxuICAgICAgICAgKi9cbiAgICAgICAgdGFyZ2V0SWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhcmdldC5cbiAgICAgICAgICovXG4gICAgICAgIHRhcmdldDogVGFyZ2V0O1xuICAgICAgICAvKipcbiAgICAgICAgICogVG9waWMgSUQuXG4gICAgICAgICAqL1xuICAgICAgICB1c2VySWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZXIgTmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIHVzZXJOYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUb3BpYyBJRC5cbiAgICAgICAgICovXG4gICAgICAgIHRvcGljSWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0YXJnZXQgcHJvdmlkZXIgdHlwZS4gQ2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBgZW1haWxgLCBgc21zYCBvciBgcHVzaGAuXG4gICAgICAgICAqL1xuICAgICAgICBwcm92aWRlclR5cGU6IHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGFyZ2V0XG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgVGFyZ2V0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYXJnZXQgY3JlYXRpb24gdGltZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYXJnZXQgdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IE5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VyIElELlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcklkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm92aWRlciBJRC5cbiAgICAgICAgICovXG4gICAgICAgIHByb3ZpZGVySWQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdGFyZ2V0IHByb3ZpZGVyIHR5cGUuIENhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzogYGVtYWlsYCwgYHNtc2Agb3IgYHB1c2hgLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdmlkZXJUeXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdGFyZ2V0IGlkZW50aWZpZXIuXG4gICAgICAgICAqL1xuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgfVxuICAgIGV4cG9ydCB0eXBlIEFwcGxldCA9IHtcbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuXG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgQXBwbGV0TGlzdCA9IHtcbiAgICAgICAgYXBwbGV0czogQXBwbGV0W107XG5cbiAgICB9XG5cbiAgICBleHBvcnQgdHlwZSBUZW5hbnQgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIFRhcmdldCBJRC5cbiAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYXJnZXQgY3JlYXRpb24gdGltZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuXG4gICAgICAgIHNsdWc6IHN0cmluZztcblxuICAgICAgICB1c2VyczogVXNlcjxhbnk+W107XG4gICAgfVxuICAgIGV4cG9ydCB0eXBlIFRlbmFudExpc3QgPSB7XG4gICAgICAgIHRlbmFudHM6IFRlbmFudFtdO1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuXG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgVGVuYW50VXNlciA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFyZ2V0IElELlxuICAgICAgICAqL1xuICAgICAgICAkaWQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYXJnZXQgY3JlYXRpb24gdGltZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgICAgICAgdGVuYW50SWQ6IHN0cmluZztcblxuICAgICAgICB1c2VySWQ6IHN0cmluZztcblxuICAgICAgICB1c2VyPzogVXNlcjxhbnk+O1xuICAgIH1cbiAgICBleHBvcnQgdHlwZSBUZW5hbnRVc2VyTGlzdCA9IHtcbiAgICAgICAgdGVuYW50VXNlcnM6IFRlbmFudFVzZXJbXTtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcblxuICAgIH1cblxuICAgIGV4cG9ydCB0eXBlIF9Sb2xlID0ge1xuICAgICAgICAvKipcbiAgICAgICAgKiBUYXJnZXQgSUQuXG4gICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IGNyZWF0aW9uIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ6IHN0cmluZztcblxuICAgICAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICB9XG4gICAgZXhwb3J0IHR5cGUgUm9sZUxpc3QgPSB7XG4gICAgICAgIHJvbGVzOiBSb2xlW107XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFdlYmhvb2tcbiAgICAqL1xuICAgIGV4cG9ydCB0eXBlIFdlYmhvb2sgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZWJob29rIElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZWJob29rIGNyZWF0aW9uIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2ViaG9vayB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZWJob29rIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZWJob29rIFVSTCBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIHVybDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2ViaG9vayB0cmlnZ2VyIGV2ZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIGV2ZW50czogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRpY2F0ZWQgaWYgU1NMIC8gVExTIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBpcyBlbmFibGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgc2VjdXJpdHk6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHVzZXJuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgaHR0cFVzZXI6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb24gcGFzc3dvcmQuXG4gICAgICAgICAqL1xuICAgICAgICBodHRwUGFzczogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2lnbmF0dXJlIGtleSB3aGljaCBjYW4gYmUgdXNlZCB0byB2YWxpZGF0ZWQgaW5jb21pbmdcbiAgICAgICAgICovXG4gICAgICAgIHNpZ25hdHVyZUtleTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSW5kaWNhdGVzIGlmIHRoaXMgd2ViaG9vayBpcyBlbmFibGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlYmhvb2sgZXJyb3IgbG9ncyBmcm9tIHRoZSBtb3N0IHJlY2VudCBmYWlsdXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgbG9nczogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogTnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWxlZCB3ZWJob29rIGF0dGVtcHRzLlxuICAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgICB9XG5cbiAgICBleHBvcnQgdHlwZSBXZWJob29rTGlzdCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvdGFsIG51bWJlciBvZiB3ZWJob29rcyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiB3ZWJob29rcy5cbiAgICAgICAgICovXG4gICAgICAgIHdlYmhvb2tzOiBXZWJob29rW107XG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgUGVybWlzc2lvbiA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFyZ2V0IElELlxuICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhcmdldCBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhcmdldCB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG5cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gICAgfVxuICAgIGV4cG9ydCB0eXBlIFBlcm1pc3Npb25MaXN0ID0ge1xuICAgICAgICBwZXJtaXNzaW9uczogUGVybWlzc2lvbltdO1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgIH1cblxuXG4gICAgZXhwb3J0IHR5cGUgUGVybWlzc2lvbkluUm9sZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFyZ2V0IElELlxuICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhcmdldCBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhcmdldCB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG5cbiAgICAgICAgcm9sZUlkOiBzdHJpbmc7XG5cbiAgICAgICAgcGVybWlzc2lvbklkOiBzdHJpbmc7XG5cbiAgICAgICBcbiAgICB9XG4gICAgZXhwb3J0IHR5cGUgUGVybWlzc2lvbkluUm9sZUxpc3QgPSB7XG4gICAgICAgIGluUm9sZXM6IFJvbGVbXTtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICB9XG5cbiAgICBleHBvcnQgdHlwZSBNb2NrTnVtYmVyID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogTW9jayBwaG9uZSBudW1iZXIgZm9yIHRlc3RpbmcgcGhvbmUgYXV0aGVudGljYXRpb24uIFVzZWZ1bCBmb3IgdGVzdGluZyBwaG9uZSBhdXRoZW50aWNhdGlvbiB3aXRob3V0IHNlbmRpbmcgYW4gU01TLlxuICAgICAgICAgKi9cbiAgICAgICAgcGhvbmU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1vY2sgT1RQIGZvciB0aGUgbnVtYmVyLiBcbiAgICAgICAgICovXG4gICAgICAgIG90cDogc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBdXRoUHJvdmlkZXJcbiAgICAgKi9cbiAgICBleHBvcnQgdHlwZSBBdXRoUHJvdmlkZXIgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdXRoIFByb3ZpZGVyLlxuICAgICAgICAgKi9cbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdXRoIFByb3ZpZGVyIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPQXV0aCAyLjAgYXBwbGljYXRpb24gSUQuXG4gICAgICAgICAqL1xuICAgICAgICBhcHBJZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogT0F1dGggMi4wIGFwcGxpY2F0aW9uIHNlY3JldC4gTWlnaHQgYmUgSlNPTiBzdHJpbmcgaWYgcHJvdmlkZXIgcmVxdWlyZXMgZXh0cmEgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIHNlY3JldDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXV0aCBQcm92aWRlciBpcyBhY3RpdmUgYW5kIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBzZXNzaW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICB9XG5cblxuICAgIGV4cG9ydCB0eXBlIFByb2plY3QgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm9qZWN0IElELlxuICAgICAgICAgKi9cbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm9qZWN0IGNyZWF0aW9uIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvamVjdCB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm9qZWN0IG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm9qZWN0IGRlc2NyaXB0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFByb2plY3QgdGVhbSBJRC5cbiAgICAgICAgICovXG4gICAgICAgIHRlYW1JZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvamVjdCBsb2dvIGZpbGUgSUQuXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm9qZWN0IHdlYnNpdGUgVVJMLlxuICAgICAgICAgKi9cbiAgICAgICAgdXJsOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb21wYW55IGxlZ2FsIG5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBsZWdhbE5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvdW50cnkgY29kZSBpbiBbSVNPIDMxNjYtMV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fMzE2Ni0xKSB0d28tY2hhcmFjdGVyIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgIGxlZ2FsQ291bnRyeTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3RhdGUgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGxlZ2FsU3RhdGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENpdHkgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGxlZ2FsQ2l0eTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29tcGFueSBBZGRyZXNzLlxuICAgICAgICAgKi9cbiAgICAgICAgbGVnYWxBZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb21wYW55IFRheCBJRC5cbiAgICAgICAgICovXG4gICAgICAgIGxlZ2FsVGF4SWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlc3Npb24gZHVyYXRpb24gaW4gc2Vjb25kcy5cbiAgICAgICAgICovXG4gICAgICAgIGF1dGhEdXJhdGlvbjogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWF4IHVzZXJzIGFsbG93ZWQuIDAgaXMgdW5saW1pdGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgYXV0aExpbWl0OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYXggc2Vzc2lvbnMgYWxsb3dlZCBwZXIgdXNlci4gMTAwIG1heGltdW0uXG4gICAgICAgICAqL1xuICAgICAgICBhdXRoU2Vzc2lvbnNMaW1pdDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWF4IGFsbG93ZWQgcGFzc3dvcmRzIGluIHRoZSBoaXN0b3J5IGxpc3QgcGVyIHVzZXIuIE1heCBwYXNzd29yZHMgbGltaXQgYWxsb3dlZCBpbiBoaXN0b3J5IGlzIDIwLiBVc2UgMCBmb3IgZGlzYWJsaW5nIHBhc3N3b3JkIGhpc3RvcnkuXG4gICAgICAgICAqL1xuICAgICAgICBhdXRoUGFzc3dvcmRIaXN0b3J5OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBjaGVjayB1c2VyJiMwMzk7cyBwYXNzd29yZCBhZ2FpbnN0IG1vc3QgY29tbW9ubHkgdXNlZCBwYXNzd29yZHMuXG4gICAgICAgICAqL1xuICAgICAgICBhdXRoUGFzc3dvcmREaWN0aW9uYXJ5OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBvciBub3QgdG8gY2hlY2sgdGhlIHVzZXIgcGFzc3dvcmQgZm9yIHNpbWlsYXJpdHkgd2l0aCB0aGVpciBwZXJzb25hbCBkYXRhLlxuICAgICAgICAgKi9cbiAgICAgICAgYXV0aFBlcnNvbmFsRGF0YUNoZWNrOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQW4gYXJyYXkgb2YgbW9jayBudW1iZXJzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHZlcmlmaWNhdGlvbiBjb2RlcyAoT1RQcykuXG4gICAgICAgICAqL1xuICAgICAgICBhdXRoTW9ja051bWJlcnM6IE1vY2tOdW1iZXJbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIHNlbmQgc2Vzc2lvbiBhbGVydCBlbWFpbHMgdG8gdXNlcnMuXG4gICAgICAgICAqL1xuICAgICAgICBhdXRoU2Vzc2lvbkFsZXJ0czogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgQXV0aCBQcm92aWRlcnMuXG4gICAgICAgICAqL1xuICAgICAgICBvQXV0aFByb3ZpZGVyczogQXV0aFByb3ZpZGVyW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIFBsYXRmb3Jtcy5cbiAgICAgICAgICovXG4gICAgICAgIHBsYXRmb3JtczogUGxhdGZvcm1bXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgV2ViaG9va3MuXG4gICAgICAgICAqL1xuICAgICAgICB3ZWJob29rczogV2ViaG9va1tdO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBBUEkgS2V5cy5cbiAgICAgICAgICovXG4gICAgICAgIGtleXM6IEtleVtdO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3RhdHVzIGZvciBjdXN0b20gU01UUFxuICAgICAgICAgKi9cbiAgICAgICAgc210cEVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTTVRQIHNlbmRlciBuYW1lXG4gICAgICAgICAqL1xuICAgICAgICBzbXRwU2VuZGVyTmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU01UUCBzZW5kZXIgZW1haWxcbiAgICAgICAgICovXG4gICAgICAgIHNtdHBTZW5kZXJFbWFpbDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogU01UUCByZXBseSB0byBlbWFpbFxuICAgICAgICAgKi9cbiAgICAgICAgc210cFJlcGx5VG86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNNVFAgc2VydmVyIGhvc3QgbmFtZVxuICAgICAgICAgKi9cbiAgICAgICAgc210cEhvc3Q6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNNVFAgc2VydmVyIHBvcnRcbiAgICAgICAgICovXG4gICAgICAgIHNtdHBQb3J0OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTTVRQIHNlcnZlciB1c2VybmFtZVxuICAgICAgICAgKi9cbiAgICAgICAgc210cFVzZXJuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTTVRQIHNlcnZlciBwYXNzd29yZFxuICAgICAgICAgKi9cbiAgICAgICAgc210cFBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTTVRQIHNlcnZlciBzZWN1cmUgcHJvdG9jb2xcbiAgICAgICAgICovXG4gICAgICAgIHNtdHBTZWN1cmU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEVtYWlsL1Bhc3N3b3JkIGF1dGggbWV0aG9kIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgYXV0aEVtYWlsUGFzc3dvcmQ6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYWdpYyBVUkwgYXV0aCBtZXRob2Qgc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICBhdXRoVXNlcnNBdXRoTWFnaWNVUkw6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFbWFpbCAoT1RQKSBhdXRoIG1ldGhvZCBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIGF1dGhFbWFpbE90cDogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFub255bW91cyBhdXRoIG1ldGhvZCBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIGF1dGhBbm9ueW1vdXM6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbnZpdGVzIGF1dGggbWV0aG9kIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgYXV0aEludml0ZXM6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBKV1QgYXV0aCBtZXRob2Qgc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICBhdXRoSldUOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogUGhvbmUgYXV0aCBtZXRob2Qgc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICBhdXRoUGhvbmU6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBY2NvdW50IHNlcnZpY2Ugc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICBzZXJ2aWNlU3RhdHVzRm9yQWNjb3VudDogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF2YXRhcnMgc2VydmljZSBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIHNlcnZpY2VTdGF0dXNGb3JBdmF0YXJzOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGF0YWJhc2VzIHNlcnZpY2Ugc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICBzZXJ2aWNlU3RhdHVzRm9yRGF0YWJhc2VzOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogTG9jYWxlIHNlcnZpY2Ugc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICBzZXJ2aWNlU3RhdHVzRm9yTG9jYWxlOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogSGVhbHRoIHNlcnZpY2Ugc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICBzZXJ2aWNlU3RhdHVzRm9ySGVhbHRoOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogU3RvcmFnZSBzZXJ2aWNlIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgc2VydmljZVN0YXR1c0ZvclN0b3JhZ2U6IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUZWFtcyBzZXJ2aWNlIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgc2VydmljZVN0YXR1c0ZvclRlYW1zOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogVXNlcnMgc2VydmljZSBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIHNlcnZpY2VTdGF0dXNGb3JVc2VyczogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZ1bmN0aW9ucyBzZXJ2aWNlIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgc2VydmljZVN0YXR1c0ZvckZ1bmN0aW9uczogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdyYXBoUUwgc2VydmljZSBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIHNlcnZpY2VTdGF0dXNGb3JHcmFwaHFsOiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWVzc2FnaW5nIHNlcnZpY2Ugc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICBzZXJ2aWNlU3RhdHVzRm9yTWVzc2FnaW5nOiBib29sZWFuO1xuICAgIH1cblxuICAgIGV4cG9ydCB0eXBlIFByb2plY3RMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIHByb2plY3RzIGRvY3VtZW50cyB0aGF0IG1hdGNoZWQgeW91ciBxdWVyeS5cbiAgICAgICAgICovXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIHByb2plY3RzLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvamVjdHM6IFByb2plY3RbXTtcbiAgICB9XG5cbiAgICBleHBvcnQgdHlwZSBLZXlMaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIGtleXMgZG9jdW1lbnRzIHRoYXQgbWF0Y2hlZCB5b3VyIHF1ZXJ5LlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2Yga2V5cy5cbiAgICAgICAgICovXG4gICAgICAgIGtleXM6IEtleVtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogS2V5XG4gICAgKi9cbiAgICBleHBvcnQgdHlwZSBLZXkgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBLZXkgSUQuXG4gICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEtleSBjcmVhdGlvbiBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEtleSB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBLZXkgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEtleSBleHBpcmF0aW9uIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgZXhwaXJlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGxvd2VkIHBlcm1pc3Npb24gc2NvcGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgc2NvcGVzOiBzdHJpbmdbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlY3JldCBrZXkuXG4gICAgICAgICAqL1xuICAgICAgICBzZWNyZXQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1vc3QgcmVjZW50IGFjY2VzcyBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB1cGRhdGVkIGFnYWluIGFmdGVyIDI0IGhvdXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgYWNjZXNzZWRBdDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBTREsgdXNlciBhZ2VudHMgdGhhdCB1c2VkIHRoaXMga2V5LlxuICAgICAgICAgKi9cbiAgICAgICAgc2Rrczogc3RyaW5nW107XG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgUGxhdGZvcm1MaXN0ID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVG90YWwgbnVtYmVyIG9mIHBsYXRmb3JtcyBkb2N1bWVudHMgdGhhdCBtYXRjaGVkIHlvdXIgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBwbGF0Zm9ybXMuXG4gICAgICAgICAqL1xuICAgICAgICBwbGF0Zm9ybXM6IFBsYXRmb3JtW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBQbGF0Zm9ybVxuICAgICovXG4gICAgZXhwb3J0IHR5cGUgUGxhdGZvcm0gPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQbGF0Zm9ybSBJRC5cbiAgICAgICAgICovXG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogUGxhdGZvcm0gY3JlYXRpb24gZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQbGF0Zm9ybSB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQbGF0Zm9ybSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogUGxhdGZvcm0gdHlwZS4gUG9zc2libGUgdmFsdWVzIGFyZTogd2ViLCBmbHV0dGVyLXdlYiwgZmx1dHRlci1pb3MsIGZsdXR0ZXItYW5kcm9pZCwgaW9zLCBhbmRyb2lkLCBhbmQgdW5pdHkuXG4gICAgICAgICAqL1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQbGF0Zm9ybSBLZXkuIGlPUyBidW5kbGUgSUQgb3IgQW5kcm9pZCBwYWNrYWdlIG5hbWUuICBFbXB0eSBzdHJpbmcgZm9yIG90aGVyIHBsYXRmb3Jtcy5cbiAgICAgICAgICovXG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXBwIHN0b3JlIG9yIEdvb2dsZSBQbGF5IHN0b3JlIElELlxuICAgICAgICAgKi9cbiAgICAgICAgc3RvcmU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlYiBhcHAgaG9zdG5hbWUuIEVtcHR5IHN0cmluZyBmb3Igb3RoZXIgcGxhdGZvcm1zLlxuICAgICAgICAgKi9cbiAgICAgICAgaG9zdG5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb24gdXNlcm5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICBodHRwVXNlcjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvbiBwYXNzd29yZC5cbiAgICAgICAgICovXG4gICAgICAgIGh0dHBQYXNzOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgRW1haWxUZW1wbGF0ZSA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRlbXBsYXRlIHR5cGVcbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRlbXBsYXRlIGxvY2FsZVxuICAgICAgICAgKi9cbiAgICAgICAgbG9jYWxlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUZW1wbGF0ZSBtZXNzYWdlXG4gICAgICAgICAqL1xuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOYW1lIG9mIHRoZSBzZW5kZXJcbiAgICAgICAgICovXG4gICAgICAgIHNlbmRlck5hbWU6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEVtYWlsIG9mIHRoZSBzZW5kZXJcbiAgICAgICAgICovXG4gICAgICAgIHNlbmRlckVtYWlsOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXBseSB0byBlbWFpbCBhZGRyZXNzXG4gICAgICAgICAqL1xuICAgICAgICByZXBseVRvOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFbWFpbCBzdWJqZWN0XG4gICAgICAgICAqL1xuICAgICAgICBzdWJqZWN0OiBzdHJpbmc7XG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgU3BhY2VHcm91cCA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFyZ2V0IElELlxuICAgICAgICAqL1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhcmdldCBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYXJnZXQgdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdD86IHN0cmluZztcblxuICAgICAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgfVxuICAgIGV4cG9ydCB0eXBlIFNwYWNlR3JvdXBMaXN0ID0ge1xuICAgICAgICBzcGFjZUdyb3VwczogU3BhY2VHcm91cFtdO1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuXG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgTG9nID0ge1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFyZ2V0IGNyZWF0aW9uIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgICAgICAgdGVuYW50SWQ6IHN0cmluZztcbiAgICAgICAgdXNlcklkOiBzdHJpbmc7XG4gICAgICAgIGFwaUtleUlkOiBzdHJpbmc7XG4gICAgICAgIHJvd0lkOiBzdHJpbmc7XG4gICAgICAgIHVybDogc3RyaW5nO1xuICAgICAgICBhY3Rpb246IHN0cmluZztcbiAgICAgICAgZGV0YWlsczogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgY29tbWVudElkOiBzdHJpbmcgfCBudWxsO1xuICAgIH1cblxuICAgIGV4cG9ydCB0eXBlIFJvbGUgPSB7XG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBUYXJnZXQgY3JlYXRpb24gdGltZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYXJnZXQgdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdD86IHN0cmluZztcblxuICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZ1xuICAgICAgICB0eXBlOiBzdHJpbmdcbiAgICAgICAgYXNzaWduVG9OZXdVc2VyczogYm9vbGVhblxuICAgICAgICBpc0RlZmF1bHQ6IGJvb2xlYW5cbiAgICAgICAgb3JkZXI6IG51bWJlclxuXG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgQWRtaW5Vc2VyID0ge1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFyZ2V0IGNyZWF0aW9uIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgICAgICAgdXNlcklkOiBzdHJpbmc7XG5cbiAgICB9XG5cbiAgICBleHBvcnQgdHlwZSBBZG1pblVzZXJMaXN0ID0ge1xuICAgICAgICBhZG1pblVzZXJzOiBBZG1pblVzZXJbXTtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcblxuICAgIH1cblxuICAgIGV4cG9ydCB0eXBlIFVzZXJSb2xlID0ge1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFyZ2V0IGNyZWF0aW9uIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgICAgICAgdXNlcklkOiBzdHJpbmc7XG4gICAgICAgIHJvbGVJZDogc3RyaW5nO1xuICAgICAgICB0ZW5hbnRJZDogc3RyaW5nIHwgbnVsbDtcblxuICAgIH1cblxuICAgIGV4cG9ydCB0eXBlIFVzZXJSb2xlTGlzdCA9IHtcbiAgICAgICAgdXNlclJvbGVzOiBVc2VyUm9sZVtdO1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuXG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgVGVuYW50VHlwZSA9IHtcbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIFRhcmdldCBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgKi9cbiAgICAgICAgJGNyZWF0ZWRBdD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhcmdldCB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0Pzogc3RyaW5nO1xuXG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlUGx1cmFsOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICAgIGlzRGVmYXVsdDogc3RyaW5nO1xuXG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgR3JvdXAgPSB7XG4gICAgICAgICRpZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBUYXJnZXQgY3JlYXRpb24gdGltZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICovXG4gICAgICAgICRjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYXJnZXQgdXBkYXRlIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgJHVwZGF0ZWRBdD86IHN0cmluZztcblxuICAgICAgICB0ZW5hbnRJZDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAgICBjb2xvcjogc3RyaW5nO1xuXG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgR3JvdXBVc2VyID0ge1xuICAgICAgICAkaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFyZ2V0IGNyZWF0aW9uIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LlxuICAgICAgICAqL1xuICAgICAgICAkY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGFyZ2V0IHVwZGF0ZSBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgICovXG4gICAgICAgICR1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgICAgICAgZ3JvdXBJZDogc3RyaW5nO1xuICAgICAgICB1c2VySWQ6IHN0cmluZztcblxuICAgIH1cblxuICAgIGV4cG9ydCB0eXBlIEdyb3VwV2l0aERldGFpbHMgPSBHcm91cCAmIHtcbiAgICAgICAgdXNlcnM6IChHcm91cFVzZXIgJiB7IHVzZXI6IFVzZXI8YW55PiB9KVtdO1xuICAgIH07XG5cbiAgICBleHBvcnQgdHlwZSBUZW5hbnRVc2VyV2l0aFVzZXIgPSBUZW5hbnRVc2VyICYge1xuICAgICAgICB1c2VyOiBVc2VyV2l0aFJvbGVzO1xuICAgIH07XG5cbiAgICBleHBvcnQgdHlwZSBVc2VyV2l0aFJvbGVzID0gVXNlcjxhbnk+ICYge1xuICAgICAgICBhZG1pbj86IEFkbWluVXNlciB8IG51bGw7XG4gICAgICAgIHJvbGVzOiAoVXNlclJvbGUgJiB7IHJvbGU6IFJvbGUgfSlbXTtcbiAgICB9XG5cbiAgICBleHBvcnQgdHlwZSBSb2xlV2l0aFBlcm1pc3Npb25zID0gUm9sZSAmIHtcbiAgICAgICAgcGVybWlzc2lvbnM6IChSb2xlUGVybWlzc2lvbiAmIHsgcGVybWlzc2lvbjogUGVybWlzc2lvbiB9KVtdO1xuICAgIH07XG5cbiAgICBleHBvcnQgdHlwZSBSb2xlUGVybWlzc2lvbiA9IHtcbiAgICAgICAgJGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIFRhcmdldCBjcmVhdGlvbiB0aW1lIGluIElTTyA4NjAxIGZvcm1hdC5cbiAgICAgICAgKi9cbiAgICAgICAgJGNyZWF0ZWRBdD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhcmdldCB1cGRhdGUgZGF0ZSBpbiBJU08gODYwMSBmb3JtYXQuXG4gICAgICAgICAqL1xuICAgICAgICAkdXBkYXRlZEF0Pzogc3RyaW5nO1xuXG4gICAgICAgIHJvbGVJZDogc3RyaW5nXG4gICAgICAgIHBlcm1pc3Npb25JZDogc3RyaW5nXG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgUGVybWlzc2lvbldpdGhSb2xlcyA9IFBlcm1pc3Npb24gJiB7XG4gICAgICAgIGluUm9sZXM6IChSb2xlUGVybWlzc2lvbiAmIHsgcm9sZTogUm9sZSB9KVtdO1xuICAgICAgfTtcblxuICAgICAgZXhwb3J0IHR5cGUgUm9sZVdpdGhQZXJtaXNzaW9uc0FuZFVzZXJzID0gUm9sZVdpdGhQZXJtaXNzaW9ucyAmIHtcbiAgICAgICAgdXNlcnM6IChVc2VyUm9sZSAmIHsgdXNlcjogVXNlcjxhbnk+IH0pW107XG4gICAgICB9O1xuXG59XG4iXX0=
@@ -15,3 +15,4 @@ export const CreateUser = actionClient
15
15
  throw new Error('Failed to fetch ListWaitlists');
16
16
  }
17
17
  });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2FjY291bnQvYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7QUFFYixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTVDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxZQUFZO0tBQ2pDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztLQUN4QixNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQWlCLEVBQUU7SUFDN0MsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUN0RCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xELE9BQU8sTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRWhFLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDckQsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInO1xuXG5pbXBvcnQgeyBhY3Rpb25DbGllbnQgfSBmcm9tIFwiLi4vLi4vYWN0aW9ucy9hY3Rpb25DbGllbnRcIjtcbmltcG9ydCB7IGdldFNES0ZvckN1cnJlbnRVc2VyIH0gZnJvbSBcIi4uLy4uL2dldFNES0ZvckN1cnJlbnRVc2VyXCI7XG5pbXBvcnQgeyBDcmVhdGVVc2VyU2NoZW1hIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuXG5leHBvcnQgY29uc3QgQ3JlYXRlVXNlciA9IGFjdGlvbkNsaWVudFxuICAgIC5zY2hlbWEoQ3JlYXRlVXNlclNjaGVtYSlcbiAgICAuYWN0aW9uKGFzeW5jICh7IHBhcnNlZElucHV0IH0pOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlcklkLCBlbWFpbCwgcGFzc3dvcmQsIG5hbWUgfSA9IHBhcnNlZElucHV0O1xuICAgICAgICAgICAgY29uc3QgeyBhY2NvdW50cyB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBhY2NvdW50cy5jcmVhdGUodXNlcklkLCBlbWFpbCwgcGFzc3dvcmQsIG5hbWUpO1xuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBMaXN0V2FpdGxpc3RzOicsIGVycm9yKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZldGNoIExpc3RXYWl0bGlzdHMnKTtcbiAgICAgICAgfVxuICAgIH0pO1xuIl19
@@ -5,3 +5,4 @@ export var AuthenticationFactor;
5
5
  AuthenticationFactor["Totp"] = "totp";
6
6
  AuthenticationFactor["Recoverycode"] = "recoverycode";
7
7
  })(AuthenticationFactor || (AuthenticationFactor = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24tZmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvYWNjb3VudC9lbnVtcy9hdXRoZW50aWNhdGlvbi1mYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBS1g7QUFMRCxXQUFZLG9CQUFvQjtJQUM1Qix1Q0FBZSxDQUFBO0lBQ2YsdUNBQWUsQ0FBQTtJQUNmLHFDQUFhLENBQUE7SUFDYixxREFBNkIsQ0FBQTtBQUNqQyxDQUFDLEVBTFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUsvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEF1dGhlbnRpY2F0aW9uRmFjdG9yIHtcbiAgICBFbWFpbCA9ICdlbWFpbCcsXG4gICAgUGhvbmUgPSAncGhvbmUnLFxuICAgIFRvdHAgPSAndG90cCcsXG4gICAgUmVjb3Zlcnljb2RlID0gJ3JlY292ZXJ5Y29kZScsXG59Il19
@@ -2,3 +2,4 @@ export var AuthenticatorType;
2
2
  (function (AuthenticatorType) {
3
3
  AuthenticatorType["Totp"] = "totp";
4
4
  })(AuthenticatorType || (AuthenticatorType = {}));
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRvci10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvYWNjb3VudC9lbnVtcy9hdXRoZW50aWNhdG9yLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksaUJBRVg7QUFGRCxXQUFZLGlCQUFpQjtJQUN6QixrQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFGVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBRTVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQXV0aGVudGljYXRvclR5cGUge1xuICAgIFRvdHAgPSAndG90cCcsXG59Il19
@@ -40,3 +40,4 @@ export var OAuthProvider;
40
40
  OAuthProvider["Zoom"] = "zoom";
41
41
  OAuthProvider["Mock"] = "mock";
42
42
  })(OAuthProvider || (OAuthProvider = {}));
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvYWNjb3VudC9lbnVtcy9vLWF1dGgtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksYUF3Q1g7QUF4Q0QsV0FBWSxhQUFhO0lBQ3JCLGtDQUFpQixDQUFBO0lBQ2pCLGdDQUFlLENBQUE7SUFDZixnQ0FBZSxDQUFBO0lBQ2Ysd0NBQXVCLENBQUE7SUFDdkIsc0NBQXFCLENBQUE7SUFDckIsd0NBQXVCLENBQUE7SUFDdkIsZ0NBQWUsQ0FBQTtJQUNmLDRCQUFXLENBQUE7SUFDWCw0Q0FBMkIsQ0FBQTtJQUMzQixvQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBaUIsQ0FBQTtJQUNqQixvQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBYSxDQUFBO0lBQ2Isc0NBQXFCLENBQUE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsa0NBQWlCLENBQUE7SUFDakIsa0NBQWlCLENBQUE7SUFDakIsc0NBQXFCLENBQUE7SUFDckIsd0NBQXVCLENBQUE7SUFDdkIsa0NBQWlCLENBQUE7SUFDakIsOEJBQWEsQ0FBQTtJQUNiLDhCQUFhLENBQUE7SUFDYixrQ0FBaUIsQ0FBQTtJQUNqQixnREFBK0IsQ0FBQTtJQUMvQixnQ0FBZSxDQUFBO0lBQ2YsMENBQXlCLENBQUE7SUFDekIsZ0NBQWUsQ0FBQTtJQUNmLG9DQUFtQixDQUFBO0lBQ25CLGtDQUFpQixDQUFBO0lBQ2pCLDBDQUF5QixDQUFBO0lBQ3pCLGdEQUErQixDQUFBO0lBQy9CLGtDQUFpQixDQUFBO0lBQ2pCLHdDQUF1QixDQUFBO0lBQ3ZCLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBYSxDQUFBO0lBQ2IsOEJBQWEsQ0FBQTtJQUNiLDhCQUFhLENBQUE7QUFDakIsQ0FBQyxFQXhDVyxhQUFhLEtBQWIsYUFBYSxRQXdDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBPQXV0aFByb3ZpZGVyIHtcbiAgICBBbWF6b24gPSAnYW1hem9uJyxcbiAgICBBcHBsZSA9ICdhcHBsZScsXG4gICAgQXV0aDAgPSAnYXV0aDAnLFxuICAgIEF1dGhlbnRpayA9ICdhdXRoZW50aWsnLFxuICAgIEF1dG9kZXNrID0gJ2F1dG9kZXNrJyxcbiAgICBCaXRidWNrZXQgPSAnYml0YnVja2V0JyxcbiAgICBCaXRseSA9ICdiaXRseScsXG4gICAgQm94ID0gJ2JveCcsXG4gICAgRGFpbHltb3Rpb24gPSAnZGFpbHltb3Rpb24nLFxuICAgIERpc2NvcmQgPSAnZGlzY29yZCcsXG4gICAgRGlzcXVzID0gJ2Rpc3F1cycsXG4gICAgRHJvcGJveCA9ICdkcm9wYm94JyxcbiAgICBFdHN5ID0gJ2V0c3knLFxuICAgIEZhY2Vib29rID0gJ2ZhY2Vib29rJyxcbiAgICBHaXRodWIgPSAnZ2l0aHViJyxcbiAgICBHaXRsYWIgPSAnZ2l0bGFiJyxcbiAgICBHb29nbGUgPSAnZ29vZ2xlJyxcbiAgICBMaW5rZWRpbiA9ICdsaW5rZWRpbicsXG4gICAgTWljcm9zb2Z0ID0gJ21pY3Jvc29mdCcsXG4gICAgTm90aW9uID0gJ25vdGlvbicsXG4gICAgT2lkYyA9ICdvaWRjJyxcbiAgICBPa3RhID0gJ29rdGEnLFxuICAgIFBheXBhbCA9ICdwYXlwYWwnLFxuICAgIFBheXBhbFNhbmRib3ggPSAncGF5cGFsU2FuZGJveCcsXG4gICAgUG9kaW8gPSAncG9kaW8nLFxuICAgIFNhbGVzZm9yY2UgPSAnc2FsZXNmb3JjZScsXG4gICAgU2xhY2sgPSAnc2xhY2snLFxuICAgIFNwb3RpZnkgPSAnc3BvdGlmeScsXG4gICAgU3RyaXBlID0gJ3N0cmlwZScsXG4gICAgVHJhZGVzaGlmdCA9ICd0cmFkZXNoaWZ0JyxcbiAgICBUcmFkZXNoaWZ0Qm94ID0gJ3RyYWRlc2hpZnRCb3gnLFxuICAgIFR3aXRjaCA9ICd0d2l0Y2gnLFxuICAgIFdvcmRwcmVzcyA9ICd3b3JkcHJlc3MnLFxuICAgIFlhaG9vID0gJ3lhaG9vJyxcbiAgICBZYW1tZXIgPSAneWFtbWVyJyxcbiAgICBZYW5kZXggPSAneWFuZGV4JyxcbiAgICBab2hvID0gJ3pvaG8nLFxuICAgIFpvb20gPSAnem9vbScsXG4gICAgTW9jayA9ICdtb2NrJyxcbn0iXX0=
@@ -1,3 +1,4 @@
1
1
  export * from './actions';
2
2
  export * from './schema';
3
3
  export * from './service';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kdWxlcy9hY2NvdW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZSc7Il19
@@ -5,3 +5,4 @@ export const CreateUserSchema = z.object({
5
5
  password: z.string(),
6
6
  name: z.string().optional()
7
7
  });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZXMvYWNjb3VudC9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2pCLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3BCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVVc2VyU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHVzZXJJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGVtYWlsOiB6LnN0cmluZygpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7Il19
@@ -1257,3 +1257,4 @@ Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/
1257
1257
  return await this.client.call('put', uri, apiHeaders, payload);
1258
1258
  }
1259
1259
  }
1260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2FjY291bnQvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sY0FBYyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEMsTUFBTSxPQUFPLE9BQU87SUFHaEIsWUFBWSxNQUFjO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLEdBQUc7UUFDTCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUUzRCxNQUFNLFVBQVUsR0FBaUM7WUFDN0MsY0FBYyxFQUFFLGtCQUFrQjtTQUNyQyxDQUFBO1FBR0QsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6QixLQUFLLEVBQ0wsR0FBRyxFQUNILFVBQVUsRUFDVixPQUFPLENBQ1YsQ0FBQztJQUNOLENBQUM7SUFDRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQXdCLE1BQWMsRUFBRSxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxJQUFhO1FBQzlGLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLGlCQUFpQixDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLGlCQUFpQixDQUFDLHFDQUFxQyxDQUFDLENB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QUFRLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDL0IsQ0FBQztRQUNELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMvQixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBRTNELE1BQU0sVUFBVSxHQUFpQztZQUM3QyxjQUFjLEVBQUUsa0JBQWtCO1NBQ3JDLENBQUE7UUFHRCxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3pCLEtBQUssRUFDTCxHQUFHLEVBQ0gsVUFBVSxFQUNWLE9BQU8sQ0FDVixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IEF1dGhlbnRpY2F0b3JUeXBlIH0gZnJvbSAnLi9lbnVtcy9hdXRoZW50aWNhdG9yLXR5cGUnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25GYWN0b3IgfSBmcm9tICcuL2VudW1zL2F1dGhlbnRpY2F0aW9uLWZhY3Rvcic7XG5pbXBvcnQgeyBPQXV0aFByb3ZpZGVyIH0gZnJvbSAnLi9lbnVtcy9vLWF1dGgtcHJvdmlkZXInO1xuaW1wb3J0IHsgQXBwY29uZGFFeGNlcHRpb24sIENsaWVudCwgUGF5bG9hZCB9IGZyb20gJy4uLy4uL2NsaWVudCc7XG5pbXBvcnQgeyBVc2VyLCBQcmVmZXJlbmNlcywgSWRlbnRpdHlMaXN0LCBKd3QsIExvZ0xpc3QsIE1mYVR5cGUsIE1mYUNoYWxsZW5nZSwgTWZhRmFjdG9ycywgTWZhUmVjb3ZlcnlDb2RlcywgVG9rZW4sIFNlc3Npb25MaXN0LCBTZXNzaW9uLCBUYXJnZXQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlJztcblxuXG5leHBvcnQgY2xhc3MgQWNjb3VudCB7XG4gICAgY2xpZW50OiBDbGllbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihjbGllbnQ6IENsaWVudCkge1xuICAgICAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWNjb3VudFxuICAgICAqXG4gICAgICogR2V0IHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuVXNlcjxQcmVmZXJlbmNlcz4+fVxuICAgICAqL1xuICAgIGFzeW5jIGdldDxUIGV4dGVuZHMgUHJlZmVyZW5jZXM+KCk6IFByb21pc2U8VXNlcjxUPj4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50JztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFjY291bnRcbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGVuZHBvaW50IHRvIGFsbG93IGEgbmV3IHVzZXIgdG8gcmVnaXN0ZXIgYSBuZXcgYWNjb3VudCBpbiB5b3VyIHByb2plY3QuIEFmdGVyIHRoZSB1c2VyIHJlZ2lzdHJhdGlvbiBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCB5b3UgY2FuIHVzZSB0aGUgWy9hY2NvdW50L3ZlcmZpY2F0aW9uXShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjY3JlYXRlVmVyaWZpY2F0aW9uKSByb3V0ZSB0byBzdGFydCB2ZXJpZnlpbmcgdGhlIHVzZXIgZW1haWwgYWRkcmVzcy4gVG8gYWxsb3cgdGhlIG5ldyB1c2VyIHRvIGxvZ2luIHRvIHRoZWlyIG5ldyBhY2NvdW50LCB5b3UgbmVlZCB0byBjcmVhdGUgYSBuZXcgW2FjY291bnQgc2Vzc2lvbl0oaHR0cHM6Ly9hcHBjb25kYS5pby9kb2NzL3JlZmVyZW5jZXMvY2xvdWQvY2xpZW50LXdlYi9hY2NvdW50I2NyZWF0ZUVtYWlsU2Vzc2lvbikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVtYWlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuVXNlcjxQcmVmZXJlbmNlcz4+fVxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZTxUIGV4dGVuZHMgUHJlZmVyZW5jZXM+KHVzZXJJZDogc3RyaW5nLCBlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogUHJvbWlzZTxVc2VyPFQ+PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJ1c2VySWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZW1haWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcImVtYWlsXCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJwYXNzd29yZFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudCc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB1c2VySWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd1c2VySWQnXSA9IHVzZXJJZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGVtYWlsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnZW1haWwnXSA9IGVtYWlsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcGFzc3dvcmQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydwYXNzd29yZCddID0gcGFzc3dvcmQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnbmFtZSddID0gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwb3N0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhY2NvdW50XG4gICAgICpcbiAgICAgKiBEZWxldGUgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHt9Pn1cbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGUoKTogUHJvbWlzZTx7fT4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50JztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdkZWxldGUnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgZW1haWxcbiAgICAgKlxuICAgICAqIFVwZGF0ZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIgYWNjb3VudCBlbWFpbCBhZGRyZXNzLiBBZnRlciBjaGFuZ2luZyB1c2VyIGFkZHJlc3MsIHRoZSB1c2VyIGNvbmZpcm1hdGlvbiBzdGF0dXMgd2lsbCBnZXQgcmVzZXQuIEEgbmV3IGNvbmZpcm1hdGlvbiBlbWFpbCBpcyBub3Qgc2VudCBhdXRvbWF0aWNhbGx5IGhvd2V2ZXIgeW91IGNhbiB1c2UgdGhlIHNlbmQgY29uZmlybWF0aW9uIGVtYWlsIGVuZHBvaW50IGFnYWluIHRvIHNlbmQgdGhlIGNvbmZpcm1hdGlvbiBlbWFpbC4gRm9yIHNlY3VyaXR5IG1lYXN1cmVzLCB1c2VyIHBhc3N3b3JkIGlzIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoaXMgcmVxdWVzdC5cblRoaXMgZW5kcG9pbnQgY2FuIGFsc28gYmUgdXNlZCB0byBjb252ZXJ0IGFuIGFub255bW91cyBhY2NvdW50IHRvIGEgbm9ybWFsIG9uZSwgYnkgcGFzc2luZyBhbiBlbWFpbCBhZGRyZXNzIGFuZCBhIG5ldyBwYXNzd29yZC5cblxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVtYWlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLlVzZXI8UHJlZmVyZW5jZXM+Pn1cbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVFbWFpbDxUIGV4dGVuZHMgUHJlZmVyZW5jZXM+KGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXI8VD4+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBlbWFpbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwiZW1haWxcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcGFzc3dvcmQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcInBhc3N3b3JkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L2VtYWlsJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIGVtYWlsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnZW1haWwnXSA9IGVtYWlsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcGFzc3dvcmQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydwYXNzd29yZCddID0gcGFzc3dvcmQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAncGF0Y2gnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTGlzdCBJZGVudGl0aWVzXG4gICAgICpcbiAgICAgKiBHZXQgdGhlIGxpc3Qgb2YgaWRlbnRpdGllcyBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHF1ZXJpZXNcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJZGVudGl0eUxpc3Q+fVxuICAgICAqL1xuICAgIGFzeW5jIGxpc3RJZGVudGl0aWVzKHF1ZXJpZXM/OiBzdHJpbmdbXSk6IFByb21pc2U8SWRlbnRpdHlMaXN0PiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvaWRlbnRpdGllcyc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBxdWVyaWVzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsncXVlcmllcyddID0gcXVlcmllcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVsZXRlIGlkZW50aXR5XG4gICAgICpcbiAgICAgKiBEZWxldGUgYW4gaWRlbnRpdHkgYnkgaXRzIHVuaXF1ZSBJRC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZGVudGl0eUlkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8e30+fVxuICAgICAqL1xuICAgIGFzeW5jIGRlbGV0ZUlkZW50aXR5KGlkZW50aXR5SWQ6IHN0cmluZyk6IFByb21pc2U8e30+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpZGVudGl0eUlkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJpZGVudGl0eUlkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L2lkZW50aXRpZXMve2lkZW50aXR5SWR9Jy5yZXBsYWNlKCd7aWRlbnRpdHlJZH0nLCBpZGVudGl0eUlkKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdkZWxldGUnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEpXVFxuICAgICAqXG4gICAgICogVXNlIHRoaXMgZW5kcG9pbnQgdG8gY3JlYXRlIGEgSlNPTiBXZWIgVG9rZW4uIFlvdSBjYW4gdXNlIHRoZSByZXN1bHRpbmcgSldUIHRvIGF1dGhlbnRpY2F0ZSBvbiBiZWhhbGYgb2YgdGhlIGN1cnJlbnQgdXNlciB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgQXBwY29uZGEgc2VydmVyLXNpZGUgQVBJIGFuZCBTREtzLiBUaGUgSldUIHNlY3JldCBpcyB2YWxpZCBmb3IgMTUgbWludXRlcyBmcm9tIGl0cyBjcmVhdGlvbiBhbmQgd2lsbCBiZSBpbnZhbGlkIGlmIHRoZSB1c2VyIHdpbGwgbG9nb3V0IGluIHRoYXQgdGltZSBmcmFtZS5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPEp3dD59XG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlSldUKCk6IFByb21pc2U8Snd0PiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvand0cyc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAncG9zdCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMaXN0IGxvZ3NcbiAgICAgKlxuICAgICAqIEdldCB0aGUgbGlzdCBvZiBsYXRlc3Qgc2VjdXJpdHkgYWN0aXZpdHkgbG9ncyBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci4gRWFjaCBsb2cgcmV0dXJucyB1c2VyIElQIGFkZHJlc3MsIGxvY2F0aW9uIGFuZCBkYXRlIGFuZCB0aW1lIG9mIGxvZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHF1ZXJpZXNcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxMb2dMaXN0Pn1cbiAgICAgKi9cbiAgICBhc3luYyBsaXN0TG9ncyhxdWVyaWVzPzogc3RyaW5nW10pOiBQcm9taXNlPExvZ0xpc3Q+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9sb2dzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHF1ZXJpZXMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydxdWVyaWVzJ10gPSBxdWVyaWVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgTUZBXG4gICAgICpcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBNRkEgb24gYW4gYWNjb3VudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWZhXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLlVzZXI8UHJlZmVyZW5jZXM+Pn1cbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVNRkE8VCBleHRlbmRzIFByZWZlcmVuY2VzPihtZmE6IGJvb2xlYW4pOiBQcm9taXNlPFVzZXI8VD4+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBtZmEgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcIm1mYVwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9tZmEnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgbWZhICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnbWZhJ10gPSBtZmE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAncGF0Y2gnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEF1dGhlbnRpY2F0b3JcbiAgICAgKlxuICAgICAqIEFkZCBhbiBhdXRoZW50aWNhdG9yIGFwcCB0byBiZSB1c2VkIGFzIGFuIE1GQSBmYWN0b3IuIFZlcmlmeSB0aGUgYXV0aGVudGljYXRvciB1c2luZyB0aGUgW3ZlcmlmeSBhdXRoZW50aWNhdG9yXSgvZG9jcy9yZWZlcmVuY2VzL2Nsb3VkL2NsaWVudC13ZWIvYWNjb3VudCN1cGRhdGVNZmFBdXRoZW50aWNhdG9yKSBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0F1dGhlbnRpY2F0b3JUeXBlfSB0eXBlXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TWZhVHlwZT59XG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlTWZhQXV0aGVudGljYXRvcih0eXBlOiBBdXRoZW50aWNhdG9yVHlwZSk6IFByb21pc2U8TWZhVHlwZT4ge1xuICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcInR5cGVcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvbWZhL2F1dGhlbnRpY2F0b3JzL3t0eXBlfScucmVwbGFjZSgne3R5cGV9JywgdHlwZSk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAncG9zdCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBWZXJpZnkgQXV0aGVudGljYXRvclxuICAgICAqXG4gICAgICogVmVyaWZ5IGFuIGF1dGhlbnRpY2F0b3IgYXBwIGFmdGVyIGFkZGluZyBpdCB1c2luZyB0aGUgW2FkZCBhdXRoZW50aWNhdG9yXSgvZG9jcy9yZWZlcmVuY2VzL2Nsb3VkL2NsaWVudC13ZWIvYWNjb3VudCNjcmVhdGVNZmFBdXRoZW50aWNhdG9yKSBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0F1dGhlbnRpY2F0b3JUeXBlfSB0eXBlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG90cFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5Vc2VyPFByZWZlcmVuY2VzPj59XG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlTWZhQXV0aGVudGljYXRvcjxUIGV4dGVuZHMgUHJlZmVyZW5jZXM+KHR5cGU6IEF1dGhlbnRpY2F0b3JUeXBlLCBvdHA6IHN0cmluZyk6IFByb21pc2U8VXNlcjxUPj4ge1xuICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcInR5cGVcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygb3RwID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJvdHBcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvbWZhL2F1dGhlbnRpY2F0b3JzL3t0eXBlfScucmVwbGFjZSgne3R5cGV9JywgdHlwZSk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBvdHAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydvdHAnXSA9IG90cDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwdXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVsZXRlIEF1dGhlbnRpY2F0b3JcbiAgICAgKlxuICAgICAqIERlbGV0ZSBhbiBhdXRoZW50aWNhdG9yIGZvciBhIHVzZXIgYnkgSUQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0F1dGhlbnRpY2F0b3JUeXBlfSB0eXBlXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8e30+fVxuICAgICAqL1xuICAgIGFzeW5jIGRlbGV0ZU1mYUF1dGhlbnRpY2F0b3IodHlwZTogQXV0aGVudGljYXRvclR5cGUpOiBQcm9taXNlPHt9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwidHlwZVwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9tZmEvYXV0aGVudGljYXRvcnMve3R5cGV9Jy5yZXBsYWNlKCd7dHlwZX0nLCB0eXBlKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdkZWxldGUnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIE1GQSBDaGFsbGVuZ2VcbiAgICAgKlxuICAgICAqIEJlZ2luIHRoZSBwcm9jZXNzIG9mIE1GQSB2ZXJpZmljYXRpb24gYWZ0ZXIgc2lnbi1pbi4gRmluaXNoIHRoZSBmbG93IHdpdGggW3VwZGF0ZU1mYUNoYWxsZW5nZV0oL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjdXBkYXRlTWZhQ2hhbGxlbmdlKSBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0F1dGhlbnRpY2F0aW9uRmFjdG9yfSBmYWN0b3JcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNZmFDaGFsbGVuZ2U+fVxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZU1mYUNoYWxsZW5nZShmYWN0b3I6IEF1dGhlbnRpY2F0aW9uRmFjdG9yKTogUHJvbWlzZTxNZmFDaGFsbGVuZ2U+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmYWN0b3IgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcImZhY3RvclwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9tZmEvY2hhbGxlbmdlJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIGZhY3RvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ2ZhY3RvciddID0gZmFjdG9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3Bvc3QnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIE1GQSBDaGFsbGVuZ2UgKGNvbmZpcm1hdGlvbilcbiAgICAgKlxuICAgICAqIENvbXBsZXRlIHRoZSBNRkEgY2hhbGxlbmdlIGJ5IHByb3ZpZGluZyB0aGUgb25lLXRpbWUgcGFzc3dvcmQuIEZpbmlzaCB0aGUgcHJvY2VzcyBvZiBNRkEgdmVyaWZpY2F0aW9uIGJ5IHByb3ZpZGluZyB0aGUgb25lLXRpbWUgcGFzc3dvcmQuIFRvIGJlZ2luIHRoZSBmbG93LCB1c2UgW2NyZWF0ZU1mYUNoYWxsZW5nZV0oL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjY3JlYXRlTWZhQ2hhbGxlbmdlKSBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbGxlbmdlSWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3RwXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8e30+fVxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZU1mYUNoYWxsZW5nZShjaGFsbGVuZ2VJZDogc3RyaW5nLCBvdHA6IHN0cmluZyk6IFByb21pc2U8e30+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjaGFsbGVuZ2VJZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwiY2hhbGxlbmdlSWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygb3RwID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJvdHBcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvbWZhL2NoYWxsZW5nZSc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBjaGFsbGVuZ2VJZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ2NoYWxsZW5nZUlkJ10gPSBjaGFsbGVuZ2VJZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG90cCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ290cCddID0gb3RwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3B1dCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMaXN0IEZhY3RvcnNcbiAgICAgKlxuICAgICAqIExpc3QgdGhlIGZhY3RvcnMgYXZhaWxhYmxlIG9uIHRoZSBhY2NvdW50IHRvIGJlIHVzZWQgYXMgYSBNRkEgY2hhbGxhbmdlLlxuICAgICAqXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TWZhRmFjdG9ycz59XG4gICAgICovXG4gICAgYXN5bmMgbGlzdE1mYUZhY3RvcnMoKTogUHJvbWlzZTxNZmFGYWN0b3JzPiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvbWZhL2ZhY3RvcnMnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgTUZBIFJlY292ZXJ5IENvZGVzXG4gICAgICpcbiAgICAgKiBHZXQgcmVjb3ZlcnkgY29kZXMgdGhhdCBjYW4gYmUgdXNlZCBhcyBiYWNrdXAgZm9yIE1GQSBmbG93LiBCZWZvcmUgZ2V0dGluZyBjb2RlcywgdGhleSBtdXN0IGJlIGdlbmVyYXRlZCB1c2luZyBbY3JlYXRlTWZhUmVjb3ZlcnlDb2Rlc10oL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjY3JlYXRlTWZhUmVjb3ZlcnlDb2RlcykgbWV0aG9kLiBBbiBPVFAgY2hhbGxlbmdlIGlzIHJlcXVpcmVkIHRvIHJlYWQgcmVjb3ZlcnkgY29kZXMuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNZmFSZWNvdmVyeUNvZGVzPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRNZmFSZWNvdmVyeUNvZGVzKCk6IFByb21pc2U8TWZhUmVjb3ZlcnlDb2Rlcz4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L21mYS9yZWNvdmVyeS1jb2Rlcyc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBNRkEgUmVjb3ZlcnkgQ29kZXNcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlIHJlY292ZXJ5IGNvZGVzIGFzIGJhY2t1cCBmb3IgTUZBIGZsb3cuIEl0JiMwMzk7cyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSBhbmQgc2hvdyB0aGVuIGltbWVkaWF0ZWx5IGFmdGVyIHVzZXIgc3VjY2Vzc2Z1bGx5IGFkZHMgdGhlaXIgYXV0aGVodGljYXRvci4gUmVjb3ZlcnkgY29kZXMgY2FuIGJlIHVzZWQgYXMgYSBNRkEgdmVyaWZpY2F0aW9uIHR5cGUgaW4gW2NyZWF0ZU1mYUNoYWxsZW5nZV0oL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjY3JlYXRlTWZhQ2hhbGxlbmdlKSBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuTWZhUmVjb3ZlcnlDb2Rlcz59XG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlTWZhUmVjb3ZlcnlDb2RlcygpOiBQcm9taXNlPE1mYVJlY292ZXJ5Q29kZXM+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9tZmEvcmVjb3ZlcnktY29kZXMnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3Bvc3QnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdlbmVyYXRlIE1GQSBSZWNvdmVyeSBDb2Rlc1xuICAgICAqXG4gICAgICogUmVnZW5lcmF0ZSByZWNvdmVyeSBjb2RlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGJhY2t1cCBmb3IgTUZBIGZsb3cuIEJlZm9yZSByZWdlbmVyYXRpbmcgY29kZXMsIHRoZXkgbXVzdCBiZSBmaXJzdCBnZW5lcmF0ZWQgdXNpbmcgW2NyZWF0ZU1mYVJlY292ZXJ5Q29kZXNdKC9kb2NzL3JlZmVyZW5jZXMvY2xvdWQvY2xpZW50LXdlYi9hY2NvdW50I2NyZWF0ZU1mYVJlY292ZXJ5Q29kZXMpIG1ldGhvZC4gQW4gT1RQIGNoYWxsZW5nZSBpcyByZXF1aXJlZCB0byByZWdlbnJlYXRlIHJlY292ZXJ5IGNvZGVzLlxuICAgICAqXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLk1mYVJlY292ZXJ5Q29kZXM+fVxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZU1mYVJlY292ZXJ5Q29kZXMoKTogUHJvbWlzZTxNZmFSZWNvdmVyeUNvZGVzPiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvbWZhL3JlY292ZXJ5LWNvZGVzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwYXRjaCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgbmFtZVxuICAgICAqXG4gICAgICogVXBkYXRlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciBhY2NvdW50IG5hbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5Vc2VyPFByZWZlcmVuY2VzPj59XG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlTmFtZTxUIGV4dGVuZHMgUHJlZmVyZW5jZXM+KG5hbWU6IHN0cmluZyk6IFByb21pc2U8VXNlcjxUPj4ge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcIm5hbWVcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvbmFtZSc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnbmFtZSddID0gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwYXRjaCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgcGFzc3dvcmRcbiAgICAgKlxuICAgICAqIFVwZGF0ZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIgcGFzc3dvcmQuIEZvciB2YWxpZGF0aW9uLCB1c2VyIGlzIHJlcXVpcmVkIHRvIHBhc3MgaW4gdGhlIG5ldyBwYXNzd29yZCwgYW5kIHRoZSBvbGQgcGFzc3dvcmQuIEZvciB1c2VycyBjcmVhdGVkIHdpdGggT0F1dGgsIFRlYW0gSW52aXRlcyBhbmQgTWFnaWMgVVJMLCBvbGRQYXNzd29yZCBpcyBvcHRpb25hbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzd29yZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvbGRQYXNzd29yZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5Vc2VyPFByZWZlcmVuY2VzPj59XG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlUGFzc3dvcmQ8VCBleHRlbmRzIFByZWZlcmVuY2VzPihwYXNzd29yZDogc3RyaW5nLCBvbGRQYXNzd29yZD86IHN0cmluZyk6IFByb21pc2U8VXNlcjxUPj4ge1xuICAgICAgICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJwYXNzd29yZFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9wYXNzd29yZCc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXNzd29yZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3Bhc3N3b3JkJ10gPSBwYXNzd29yZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9sZFBhc3N3b3JkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnb2xkUGFzc3dvcmQnXSA9IG9sZFBhc3N3b3JkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3BhdGNoJyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBwaG9uZVxuICAgICAqXG4gICAgICogVXBkYXRlIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXImIzAzOTtzIHBob25lIG51bWJlci4gQWZ0ZXIgdXBkYXRpbmcgdGhlIHBob25lIG51bWJlciwgdGhlIHBob25lIHZlcmlmaWNhdGlvbiBzdGF0dXMgd2lsbCBiZSByZXNldC4gQSBjb25maXJtYXRpb24gU01TIGlzIG5vdCBzZW50IGF1dG9tYXRpY2FsbHksIGhvd2V2ZXIgeW91IGNhbiB1c2UgdGhlIFtQT1NUIC9hY2NvdW50L3ZlcmlmaWNhdGlvbi9waG9uZV0oaHR0cHM6Ly9hcHBjb25kYS5pby9kb2NzL3JlZmVyZW5jZXMvY2xvdWQvY2xpZW50LXdlYi9hY2NvdW50I2NyZWF0ZVBob25lVmVyaWZpY2F0aW9uKSBlbmRwb2ludCB0byBzZW5kIGEgY29uZmlybWF0aW9uIFNNUy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwaG9uZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzd29yZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5Vc2VyPFByZWZlcmVuY2VzPj59XG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlUGhvbmU8VCBleHRlbmRzIFByZWZlcmVuY2VzPihwaG9uZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxVc2VyPFQ+PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcGhvbmUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcInBob25lXCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJwYXNzd29yZFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9waG9uZSc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBwaG9uZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3Bob25lJ10gPSBwaG9uZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBhc3N3b3JkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsncGFzc3dvcmQnXSA9IHBhc3N3b3JkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3BhdGNoJyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBhY2NvdW50IHByZWZlcmVuY2VzXG4gICAgICpcbiAgICAgKiBHZXQgdGhlIHByZWZlcmVuY2VzIGFzIGEga2V5LXZhbHVlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFByZWZlcmVuY2VzPn1cbiAgICAgKi9cbiAgICBhc3luYyBnZXRQcmVmczxUIGV4dGVuZHMgUHJlZmVyZW5jZXM+KCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L3ByZWZzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdnZXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXBkYXRlIHByZWZlcmVuY2VzXG4gICAgICpcbiAgICAgKiBVcGRhdGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyIGFjY291bnQgcHJlZmVyZW5jZXMuIFRoZSBvYmplY3QgeW91IHBhc3MgaXMgc3RvcmVkIGFzIGlzLCBhbmQgcmVwbGFjZXMgYW55IHByZXZpb3VzIHZhbHVlLiBUaGUgbWF4aW11bSBhbGxvd2VkIHByZWZzIHNpemUgaXMgNjRrQiBhbmQgdGhyb3dzIGVycm9yIGlmIGV4Y2VlZGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQYXJ0aWFsPFByZWZlcmVuY2VzPn0gcHJlZnNcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuVXNlcjxQcmVmZXJlbmNlcz4+fVxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZVByZWZzPFQgZXh0ZW5kcyBQcmVmZXJlbmNlcz4ocHJlZnM6IFBhcnRpYWw8UHJlZmVyZW5jZXM+KTogUHJvbWlzZTxVc2VyPFQ+PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJlZnMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcInByZWZzXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L3ByZWZzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHByZWZzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsncHJlZnMnXSA9IHByZWZzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3BhdGNoJyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBwYXNzd29yZCByZWNvdmVyeVxuICAgICAqXG4gICAgICogU2VuZHMgdGhlIHVzZXIgYW4gZW1haWwgd2l0aCBhIHRlbXBvcmFyeSBzZWNyZXQga2V5IGZvciBwYXNzd29yZCByZXNldC4gV2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGNvbmZpcm1hdGlvbiBsaW5rIGhlIGlzIHJlZGlyZWN0ZWQgYmFjayB0byB5b3VyIGFwcCBwYXNzd29yZCByZXNldCBVUkwgd2l0aCB0aGUgc2VjcmV0IGtleSBhbmQgZW1haWwgYWRkcmVzcyB2YWx1ZXMgYXR0YWNoZWQgdG8gdGhlIFVSTCBxdWVyeSBzdHJpbmcuIFVzZSB0aGUgcXVlcnkgc3RyaW5nIHBhcmFtcyB0byBzdWJtaXQgYSByZXF1ZXN0IHRvIHRoZSBbUFVUIC9hY2NvdW50L3JlY292ZXJ5XShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjdXBkYXRlUmVjb3ZlcnkpIGVuZHBvaW50IHRvIGNvbXBsZXRlIHRoZSBwcm9jZXNzLiBUaGUgdmVyaWZpY2F0aW9uIGxpbmsgc2VudCB0byB0aGUgdXNlciYjMDM5O3MgZW1haWwgYWRkcmVzcyBpcyB2YWxpZCBmb3IgMSBob3VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVtYWlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFRva2VuPn1cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVSZWNvdmVyeShlbWFpbDogc3RyaW5nLCB1cmw6IHN0cmluZyk6IFByb21pc2U8VG9rZW4+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBlbWFpbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwiZW1haWxcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJ1cmxcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvcmVjb3ZlcnknO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgZW1haWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydlbWFpbCddID0gZW1haWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB1cmwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd1cmwnXSA9IHVybDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwb3N0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBwYXNzd29yZCByZWNvdmVyeSAoY29uZmlybWF0aW9uKVxuICAgICAqXG4gICAgICogVXNlIHRoaXMgZW5kcG9pbnQgdG8gY29tcGxldGUgdGhlIHVzZXIgYWNjb3VudCBwYXNzd29yZCByZXNldC4gQm90aCB0aGUgKip1c2VySWQqKiBhbmQgKipzZWNyZXQqKiBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgYXMgcXVlcnkgcGFyYW1ldGVycyB0byB0aGUgcmVkaXJlY3QgVVJMIHlvdSBoYXZlIHByb3ZpZGVkIHdoZW4gc2VuZGluZyB5b3VyIHJlcXVlc3QgdG8gdGhlIFtQT1NUIC9hY2NvdW50L3JlY292ZXJ5XShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjY3JlYXRlUmVjb3ZlcnkpIGVuZHBvaW50LlxuXG5QbGVhc2Ugbm90ZSB0aGF0IGluIG9yZGVyIHRvIGF2b2lkIGEgW1JlZGlyZWN0IEF0dGFja10oaHR0cHM6Ly9naXRodWIuY29tL09XQVNQL0NoZWF0U2hlZXRTZXJpZXMvYmxvYi9tYXN0ZXIvY2hlYXRzaGVldHMvVW52YWxpZGF0ZWRfUmVkaXJlY3RzX2FuZF9Gb3J3YXJkc19DaGVhdF9TaGVldC5tZCkgdGhlIG9ubHkgdmFsaWQgcmVkaXJlY3QgVVJMcyBhcmUgdGhlIG9uZXMgZnJvbSBkb21haW5zIHlvdSBoYXZlIHNldCB3aGVuIGFkZGluZyB5b3VyIHBsYXRmb3JtcyBpbiB0aGUgY29uc29sZSBpbnRlcmZhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3JldFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzd29yZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5Ub2tlbj59XG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlUmVjb3ZlcnkodXNlcklkOiBzdHJpbmcsIHNlY3JldDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxUb2tlbj4ge1xuICAgICAgICBpZiAodHlwZW9mIHVzZXJJZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwidXNlcklkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHNlY3JldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwic2VjcmV0XCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJwYXNzd29yZFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9yZWNvdmVyeSc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB1c2VySWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd1c2VySWQnXSA9IHVzZXJJZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHNlY3JldCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3NlY3JldCddID0gc2VjcmV0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcGFzc3dvcmQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydwYXNzd29yZCddID0gcGFzc3dvcmQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAncHV0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIExpc3Qgc2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEdldCB0aGUgbGlzdCBvZiBhY3RpdmUgc2Vzc2lvbnMgYWNyb3NzIGRpZmZlcmVudCBkZXZpY2VzIGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLlxuICAgICAqXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8U2Vzc2lvbkxpc3Q+fVxuICAgICAqL1xuICAgIGFzeW5jIGxpc3RTZXNzaW9ucygpOiBQcm9taXNlPFNlc3Npb25MaXN0PiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvc2Vzc2lvbnMnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2dldCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGUgc2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIERlbGV0ZSBhbGwgc2Vzc2lvbnMgZnJvbSB0aGUgdXNlciBhY2NvdW50IGFuZCByZW1vdmUgYW55IHNlc3Npb25zIGNvb2tpZXMgZnJvbSB0aGUgZW5kIGNsaWVudC5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHt9Pn1cbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGVTZXNzaW9ucygpOiBQcm9taXNlPHt9PiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvc2Vzc2lvbnMnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYW5vbnltb3VzIHNlc3Npb25cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGVuZHBvaW50IHRvIGFsbG93IGEgbmV3IHVzZXIgdG8gcmVnaXN0ZXIgYW4gYW5vbnltb3VzIGFjY291bnQgaW4geW91ciBwcm9qZWN0LiBUaGlzIHJvdXRlIHdpbGwgYWxzbyBjcmVhdGUgYSBuZXcgc2Vzc2lvbiBmb3IgdGhlIHVzZXIuIFRvIGFsbG93IHRoZSBuZXcgdXNlciB0byBjb252ZXJ0IGFuIGFub255bW91cyBhY2NvdW50IHRvIGEgbm9ybWFsIGFjY291bnQsIHlvdSBuZWVkIHRvIHVwZGF0ZSBpdHMgW2VtYWlsIGFuZCBwYXNzd29yZF0oaHR0cHM6Ly9hcHBjb25kYS5pby9kb2NzL3JlZmVyZW5jZXMvY2xvdWQvY2xpZW50LXdlYi9hY2NvdW50I3VwZGF0ZUVtYWlsKSBvciBjcmVhdGUgYW4gW09BdXRoMiBzZXNzaW9uXShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjQ3JlYXRlT0F1dGgyU2Vzc2lvbikuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuU2Vzc2lvbj59XG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlQW5vbnltb3VzU2Vzc2lvbigpOiBQcm9taXNlPFNlc3Npb24+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9zZXNzaW9ucy9hbm9ueW1vdXMnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3Bvc3QnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGVtYWlsIHBhc3N3b3JkIHNlc3Npb25cbiAgICAgKlxuICAgICAqIEFsbG93IHRoZSB1c2VyIHRvIGxvZ2luIGludG8gdGhlaXIgYWNjb3VudCBieSBwcm92aWRpbmcgYSB2YWxpZCBlbWFpbCBhbmQgcGFzc3dvcmQgY29tYmluYXRpb24uIFRoaXMgcm91dGUgd2lsbCBjcmVhdGUgYSBuZXcgc2Vzc2lvbiBmb3IgdGhlIHVzZXIuXG5cbkEgdXNlciBpcyBsaW1pdGVkIHRvIDEwIGFjdGl2ZSBzZXNzaW9ucyBhdCBhIHRpbWUgYnkgZGVmYXVsdC4gW0xlYXJuIG1vcmUgYWJvdXQgc2Vzc2lvbiBsaW1pdHNdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9hdXRoZW50aWNhdGlvbi1zZWN1cml0eSNsaW1pdHMpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVtYWlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8U2Vzc2lvbj59XG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlRW1haWxQYXNzd29yZFNlc3Npb24oZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbj4ge1xuICAgICAgICBpZiAodHlwZW9mIGVtYWlsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJlbWFpbFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBwYXNzd29yZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwicGFzc3dvcmRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvc2Vzc2lvbnMvZW1haWwnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgZW1haWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydlbWFpbCddID0gZW1haWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBwYXNzd29yZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3Bhc3N3b3JkJ10gPSBwYXNzd29yZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwb3N0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBtYWdpYyBVUkwgc2Vzc2lvblxuICAgICAqXG4gICAgICogVXNlIHRoaXMgZW5kcG9pbnQgdG8gY3JlYXRlIGEgc2Vzc2lvbiBmcm9tIHRva2VuLiBQcm92aWRlIHRoZSAqKnVzZXJJZCoqIGFuZCAqKnNlY3JldCoqIHBhcmFtZXRlcnMgZnJvbSB0aGUgc3VjY2Vzc2Z1bCByZXNwb25zZSBvZiBhdXRoZW50aWNhdGlvbiBmbG93cyBpbml0aWF0ZWQgYnkgdG9rZW4gY3JlYXRpb24uIEZvciBleGFtcGxlLCBtYWdpYyBVUkwgYW5kIHBob25lIGxvZ2luLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWNyZXRcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuU2Vzc2lvbj59XG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlTWFnaWNVUkxTZXNzaW9uKHVzZXJJZDogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbj4ge1xuICAgICAgICBpZiAodHlwZW9mIHVzZXJJZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwidXNlcklkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHNlY3JldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwic2VjcmV0XCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L3Nlc3Npb25zL21hZ2ljLXVybCc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB1c2VySWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd1c2VySWQnXSA9IHVzZXJJZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHNlY3JldCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3NlY3JldCddID0gc2VjcmV0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3B1dCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgT0F1dGgyIHNlc3Npb25cbiAgICAgKlxuICAgICAqIEFsbG93IHRoZSB1c2VyIHRvIGxvZ2luIHRvIHRoZWlyIGFjY291bnQgdXNpbmcgdGhlIE9BdXRoMiBwcm92aWRlciBvZiB0aGVpciBjaG9pY2UuIEVhY2ggT0F1dGgyIHByb3ZpZGVyIHNob3VsZCBiZSBlbmFibGVkIGZyb20gdGhlIEFwcGNvbmRhIGNvbnNvbGUgZmlyc3QuIFVzZSB0aGUgc3VjY2VzcyBhbmQgZmFpbHVyZSBhcmd1bWVudHMgdG8gcHJvdmlkZSBhIHJlZGlyZWN0IFVSTCYjMDM5O3MgYmFjayB0byB5b3VyIGFwcCB3aGVuIGxvZ2luIGlzIGNvbXBsZXRlZC5cblxuSWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBhY3RpdmUgc2Vzc2lvbiwgdGhlIG5ldyBzZXNzaW9uIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGxvZ2dlZC1pbiBhY2NvdW50LiBJZiB0aGVyZSBhcmUgbm8gYWN0aXZlIHNlc3Npb25zLCB0aGUgc2VydmVyIHdpbGwgYXR0ZW1wdCB0byBsb29rIGZvciBhIHVzZXIgd2l0aCB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzIGFzIHRoZSBlbWFpbCByZWNlaXZlZCBmcm9tIHRoZSBPQXV0aDIgcHJvdmlkZXIgYW5kIGF0dGFjaCB0aGUgbmV3IHNlc3Npb24gdG8gdGhlIGV4aXN0aW5nIHVzZXIuIElmIG5vIG1hdGNoaW5nIHVzZXIgaXMgZm91bmQgLSB0aGUgc2VydmVyIHdpbGwgY3JlYXRlIGEgbmV3IHVzZXIuXG5cbkEgdXNlciBpcyBsaW1pdGVkIHRvIDEwIGFjdGl2ZSBzZXNzaW9ucyBhdCBhIHRpbWUgYnkgZGVmYXVsdC4gW0xlYXJuIG1vcmUgYWJvdXQgc2Vzc2lvbiBsaW1pdHNdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9hdXRoZW50aWNhdGlvbi1zZWN1cml0eSNsaW1pdHMpLlxuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge09BdXRoUHJvdmlkZXJ9IHByb3ZpZGVyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3NcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHNjb3Blc1xuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQgfCBzdHJpbmc+fVxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZU9BdXRoMlNlc3Npb24ocHJvdmlkZXI6IE9BdXRoUHJvdmlkZXIsIHN1Y2Nlc3M/OiBzdHJpbmcsIGZhaWx1cmU/OiBzdHJpbmcsIHNjb3Blcz86IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkIHwgc3RyaW5nPiB7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwcm92aWRlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwicHJvdmlkZXJcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvc2Vzc2lvbnMvb2F1dGgyL3twcm92aWRlcn0nLnJlcGxhY2UoJ3twcm92aWRlcn0nLCBwcm92aWRlcik7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdWNjZXNzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnc3VjY2VzcyddID0gc3VjY2VzcztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGZhaWx1cmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydmYWlsdXJlJ10gPSBmYWlsdXJlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygc2NvcGVzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnc2NvcGVzJ10gPSBzY29wZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHBheWxvYWRbJ3Byb2plY3QnXSA9IHRoaXMuY2xpZW50LmNvbmZpZy5wcm9qZWN0O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhTZXJ2aWNlLmZsYXR0ZW4ocGF5bG9hZCkpKSB7XG4gICAgICAgICAgICB1cmkuc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3c/LmxvY2F0aW9uKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVyaS50b1N0cmluZygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVyaS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBwaG9uZSBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBlbmRwb2ludCB0byBjcmVhdGUgYSBzZXNzaW9uIGZyb20gdG9rZW4uIFByb3ZpZGUgdGhlICoqdXNlcklkKiogYW5kICoqc2VjcmV0KiogcGFyYW1ldGVycyBmcm9tIHRoZSBzdWNjZXNzZnVsIHJlc3BvbnNlIG9mIGF1dGhlbnRpY2F0aW9uIGZsb3dzIGluaXRpYXRlZCBieSB0b2tlbiBjcmVhdGlvbi4gRm9yIGV4YW1wbGUsIG1hZ2ljIFVSTCBhbmQgcGhvbmUgbG9naW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3JldFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5TZXNzaW9uPn1cbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVQaG9uZVNlc3Npb24odXNlcklkOiBzdHJpbmcsIHNlY3JldDogc3RyaW5nKTogUHJvbWlzZTxTZXNzaW9uPiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJ1c2VySWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygc2VjcmV0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJzZWNyZXRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvc2Vzc2lvbnMvcGhvbmUnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsndXNlcklkJ10gPSB1c2VySWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBzZWNyZXQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydzZWNyZXQnXSA9IHNlY3JldDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwdXQnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIHNlc3Npb25cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGVuZHBvaW50IHRvIGNyZWF0ZSBhIHNlc3Npb24gZnJvbSB0b2tlbi4gUHJvdmlkZSB0aGUgKip1c2VySWQqKiBhbmQgKipzZWNyZXQqKiBwYXJhbWV0ZXJzIGZyb20gdGhlIHN1Y2Nlc3NmdWwgcmVzcG9uc2Ugb2YgYXV0aGVudGljYXRpb24gZmxvd3MgaW5pdGlhdGVkIGJ5IHRva2VuIGNyZWF0aW9uLiBGb3IgZXhhbXBsZSwgbWFnaWMgVVJMIGFuZCBwaG9uZSBsb2dpbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjcmV0XG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLlNlc3Npb24+fVxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVNlc3Npb24odXNlcklkOiBzdHJpbmcsIHNlY3JldDogc3RyaW5nKTogUHJvbWlzZTxTZXNzaW9uPiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJ1c2VySWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygc2VjcmV0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJzZWNyZXRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvc2Vzc2lvbnMvdG9rZW4nO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsndXNlcklkJ10gPSB1c2VySWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBzZWNyZXQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydzZWNyZXQnXSA9IHNlY3JldDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwb3N0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBlbmRwb2ludCB0byBnZXQgYSBsb2dnZWQgaW4gdXNlciYjMDM5O3Mgc2Vzc2lvbiB1c2luZyBhIFNlc3Npb24gSUQuIElucHV0dGluZyAmIzAzOTtjdXJyZW50JiMwMzk7IHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IHNlc3Npb24gYmVpbmcgdXNlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXNzaW9uSWRcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuU2Vzc2lvbj59XG4gICAgICovXG4gICAgYXN5bmMgZ2V0U2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbj4ge1xuICAgICAgICBpZiAodHlwZW9mIHNlc3Npb25JZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwic2Vzc2lvbklkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L3Nlc3Npb25zL3tzZXNzaW9uSWR9Jy5yZXBsYWNlKCd7c2Vzc2lvbklkfScsIHNlc3Npb25JZCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZ2V0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBlbmRwb2ludCB0byBleHRlbmQgYSBzZXNzaW9uJiMwMzk7cyBsZW5ndGguIEV4dGVuZGluZyBhIHNlc3Npb24gaXMgdXNlZnVsIHdoZW4gc2Vzc2lvbiBleHBpcnkgaXMgc2hvcnQuIElmIHRoZSBzZXNzaW9uIHdhcyBjcmVhdGVkIHVzaW5nIGFuIE9BdXRoIHByb3ZpZGVyLCB0aGlzIGVuZHBvaW50IHJlZnJlc2hlcyB0aGUgYWNjZXNzIHRva2VuIGZyb20gdGhlIHByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlc3Npb25JZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5TZXNzaW9uPn1cbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVTZXNzaW9uKHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTxTZXNzaW9uPiB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2Vzc2lvbklkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJzZXNzaW9uSWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvc2Vzc2lvbnMve3Nlc3Npb25JZH0nLnJlcGxhY2UoJ3tzZXNzaW9uSWR9Jywgc2Vzc2lvbklkKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwYXRjaCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGUgc2Vzc2lvblxuICAgICAqXG4gICAgICogTG9nb3V0IHRoZSB1c2VyLiBVc2UgJiMwMzk7Y3VycmVudCYjMDM5OyBhcyB0aGUgc2Vzc2lvbiBJRCB0byBsb2dvdXQgb24gdGhpcyBkZXZpY2UsIHVzZSBhIHNlc3Npb24gSUQgdG8gbG9nb3V0IG9uIGFub3RoZXIgZGV2aWNlLiBJZiB5b3UmIzAzOTtyZSBsb29raW5nIHRvIGxvZ291dCB0aGUgdXNlciBvbiBhbGwgZGV2aWNlcywgdXNlIFtEZWxldGUgU2Vzc2lvbnNdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9yZWZlcmVuY2VzL2Nsb3VkL2NsaWVudC13ZWIvYWNjb3VudCNkZWxldGVTZXNzaW9ucykgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXNzaW9uSWRcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7fT59XG4gICAgICovXG4gICAgYXN5bmMgZGVsZXRlU2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8e30+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXNzaW9uSWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcInNlc3Npb25JZFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC9zZXNzaW9ucy97c2Vzc2lvbklkfScucmVwbGFjZSgne3Nlc3Npb25JZH0nLCBzZXNzaW9uSWQpO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgc3RhdHVzXG4gICAgICpcbiAgICAgKiBCbG9jayB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyIGFjY291bnQuIEJlaGluZCB0aGUgc2NlbmUsIHRoZSB1c2VyIHJlY29yZCBpcyBub3QgZGVsZXRlZCBidXQgcGVybWFuZW50bHkgYmxvY2tlZCBmcm9tIGFueSBhY2Nlc3MuIFRvIGNvbXBsZXRlbHkgZGVsZXRlIGEgdXNlciwgdXNlIHRoZSBVc2VycyBBUEkgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5Vc2VyPFByZWZlcmVuY2VzPj59XG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlU3RhdHVzPFQgZXh0ZW5kcyBQcmVmZXJlbmNlcz4oKTogUHJvbWlzZTxVc2VyPFQ+PiB7XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvc3RhdHVzJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuY2xpZW50LmNvbmZpZy5lbmRwb2ludCArIGFwaVBhdGgpO1xuXG4gICAgICAgIGNvbnN0IGFwaUhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jbGllbnQuY2FsbChcbiAgICAgICAgICAgICdwYXRjaCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgcHVzaCB0YXJnZXRcbiAgICAgKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldElkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGlkZW50aWZpZXJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvdmlkZXJJZFxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFRhcmdldD59XG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlUHVzaFRhcmdldCh0YXJnZXRJZDogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcsIHByb3ZpZGVySWQ/OiBzdHJpbmcpOiBQcm9taXNlPFRhcmdldD4ge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldElkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJ0YXJnZXRJZFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBpZGVudGlmaWVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJpZGVudGlmaWVyXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L3RhcmdldHMvcHVzaCc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXRJZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3RhcmdldElkJ10gPSB0YXJnZXRJZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGlkZW50aWZpZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydpZGVudGlmaWVyJ10gPSBpZGVudGlmaWVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcHJvdmlkZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3Byb3ZpZGVySWQnXSA9IHByb3ZpZGVySWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAncG9zdCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgcHVzaCB0YXJnZXRcbiAgICAgKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldElkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGlkZW50aWZpZXJcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUYXJnZXQ+fVxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZVB1c2hUYXJnZXQodGFyZ2V0SWQ6IHN0cmluZywgaWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxUYXJnZXQ+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXRJZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwidGFyZ2V0SWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgaWRlbnRpZmllciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwiaWRlbnRpZmllclwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC90YXJnZXRzL3t0YXJnZXRJZH0vcHVzaCcucmVwbGFjZSgne3RhcmdldElkfScsIHRhcmdldElkKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIGlkZW50aWZpZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydpZGVudGlmaWVyJ10gPSBpZGVudGlmaWVyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3B1dCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGUgcHVzaCB0YXJnZXRcbiAgICAgKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldElkXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8e30+fVxuICAgICAqL1xuICAgIGFzeW5jIGRlbGV0ZVB1c2hUYXJnZXQodGFyZ2V0SWQ6IHN0cmluZyk6IFByb21pc2U8e30+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXRJZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwidGFyZ2V0SWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvdGFyZ2V0cy97dGFyZ2V0SWR9L3B1c2gnLnJlcGxhY2UoJ3t0YXJnZXRJZH0nLCB0YXJnZXRJZCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAnZGVsZXRlJyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBlbWFpbCB0b2tlbiAoT1RQKVxuICAgICAqXG4gICAgICogU2VuZHMgdGhlIHVzZXIgYW4gZW1haWwgd2l0aCBhIHNlY3JldCBrZXkgZm9yIGNyZWF0aW5nIGEgc2Vzc2lvbi4gSWYgdGhlIHByb3ZpZGVkIHVzZXIgSUQgaGFzIG5vdCBiZSByZWdpc3RlcmVkLCBhIG5ldyB1c2VyIHdpbGwgYmUgY3JlYXRlZC4gVXNlIHRoZSByZXR1cm5lZCB1c2VyIElEIGFuZCBzZWNyZXQgYW5kIHN1Ym1pdCBhIHJlcXVlc3QgdG8gdGhlIFtQT1NUIC92MS9hY2NvdW50L3Nlc3Npb25zL3Rva2VuXShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjY3JlYXRlU2Vzc2lvbikgZW5kcG9pbnQgdG8gY29tcGxldGUgdGhlIGxvZ2luIHByb2Nlc3MuIFRoZSBzZWNyZXQgc2VudCB0byB0aGUgdXNlciYjMDM5O3MgZW1haWwgaXMgdmFsaWQgZm9yIDE1IG1pbnV0ZXMuXG5cbkEgdXNlciBpcyBsaW1pdGVkIHRvIDEwIGFjdGl2ZSBzZXNzaW9ucyBhdCBhIHRpbWUgYnkgZGVmYXVsdC4gW0xlYXJuIG1vcmUgYWJvdXQgc2Vzc2lvbiBsaW1pdHNdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9hdXRoZW50aWNhdGlvbi1zZWN1cml0eSNsaW1pdHMpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcGhyYXNlXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLlRva2VuPn1cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVFbWFpbFRva2VuKHVzZXJJZDogc3RyaW5nLCBlbWFpbDogc3RyaW5nLCBwaHJhc2U/OiBib29sZWFuKTogUHJvbWlzZTxUb2tlbj4ge1xuICAgICAgICBpZiAodHlwZW9mIHVzZXJJZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwidXNlcklkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGVtYWlsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJlbWFpbFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC90b2tlbnMvZW1haWwnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsndXNlcklkJ10gPSB1c2VySWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBlbWFpbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ2VtYWlsJ10gPSBlbWFpbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBocmFzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3BocmFzZSddID0gcGhyYXNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3Bvc3QnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIG1hZ2ljIFVSTCB0b2tlblxuICAgICAqXG4gICAgICogU2VuZHMgdGhlIHVzZXIgYW4gZW1haWwgd2l0aCBhIHNlY3JldCBrZXkgZm9yIGNyZWF0aW5nIGEgc2Vzc2lvbi4gSWYgdGhlIHByb3ZpZGVkIHVzZXIgSUQgaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQsIGEgbmV3IHVzZXIgd2lsbCBiZSBjcmVhdGVkLiBXaGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgbGluayBpbiB0aGUgZW1haWwsIHRoZSB1c2VyIGlzIHJlZGlyZWN0ZWQgYmFjayB0byB0aGUgVVJMIHlvdSBwcm92aWRlZCB3aXRoIHRoZSBzZWNyZXQga2V5IGFuZCB1c2VySWQgdmFsdWVzIGF0dGFjaGVkIHRvIHRoZSBVUkwgcXVlcnkgc3RyaW5nLiBVc2UgdGhlIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIHRvIHN1Ym1pdCBhIHJlcXVlc3QgdG8gdGhlIFtQT1NUIC92MS9hY2NvdW50L3Nlc3Npb25zL3Rva2VuXShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvcmVmZXJlbmNlcy9jbG91ZC9jbGllbnQtd2ViL2FjY291bnQjY3JlYXRlU2Vzc2lvbikgZW5kcG9pbnQgdG8gY29tcGxldGUgdGhlIGxvZ2luIHByb2Nlc3MuIFRoZSBsaW5rIHNlbnQgdG8gdGhlIHVzZXImIzAzOTtzIGVtYWlsIGFkZHJlc3MgaXMgdmFsaWQgZm9yIDEgaG91ci4gSWYgeW91IGFyZSBvbiBhIG1vYmlsZSBkZXZpY2UgeW91IGNhbiBsZWF2ZSB0aGUgVVJMIHBhcmFtZXRlciBlbXB0eSwgc28gdGhhdCB0aGUgbG9naW4gY29tcGxldGlvbiB3aWxsIGJlIGhhbmRsZWQgYnkgeW91ciBBcHBjb25kYSBpbnN0YW5jZSBieSBkZWZhdWx0LlxuXG5BIHVzZXIgaXMgbGltaXRlZCB0byAxMCBhY3RpdmUgc2Vzc2lvbnMgYXQgYSB0aW1lIGJ5IGRlZmF1bHQuIFtMZWFybiBtb3JlIGFib3V0IHNlc3Npb24gbGltaXRzXShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvYXV0aGVudGljYXRpb24tc2VjdXJpdHkjbGltaXRzKS5cblxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHBocmFzZVxuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVscy5Ub2tlbj59XG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlTWFnaWNVUkxUb2tlbih1c2VySWQ6IHN0cmluZywgZW1haWw6IHN0cmluZywgdXJsPzogc3RyaW5nLCBwaHJhc2U/OiBib29sZWFuKTogUHJvbWlzZTxUb2tlbj4ge1xuICAgICAgICBpZiAodHlwZW9mIHVzZXJJZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwidXNlcklkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGVtYWlsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJlbWFpbFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC90b2tlbnMvbWFnaWMtdXJsJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3VzZXJJZCddID0gdXNlcklkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZW1haWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydlbWFpbCddID0gZW1haWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB1cmwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd1cmwnXSA9IHVybDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBocmFzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3BocmFzZSddID0gcGhyYXNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3Bvc3QnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIE9BdXRoMiB0b2tlblxuICAgICAqXG4gICAgICogQWxsb3cgdGhlIHVzZXIgdG8gbG9naW4gdG8gdGhlaXIgYWNjb3VudCB1c2luZyB0aGUgT0F1dGgyIHByb3ZpZGVyIG9mIHRoZWlyIGNob2ljZS4gRWFjaCBPQXV0aDIgcHJvdmlkZXIgc2hvdWxkIGJlIGVuYWJsZWQgZnJvbSB0aGUgQXBwY29uZGEgY29uc29sZSBmaXJzdC4gVXNlIHRoZSBzdWNjZXNzIGFuZCBmYWlsdXJlIGFyZ3VtZW50cyB0byBwcm92aWRlIGEgcmVkaXJlY3QgVVJMJiMwMzk7cyBiYWNrIHRvIHlvdXIgYXBwIHdoZW4gbG9naW4gaXMgY29tcGxldGVkLiBcblxuSWYgYXV0aGVudGljYXRpb24gc3VjY2VlZHMsIGB1c2VySWRgIGFuZCBgc2VjcmV0YCBvZiBhIHRva2VuIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHN1Y2Nlc3MgVVJMIGFzIHF1ZXJ5IHBhcmFtZXRlcnMuIFRoZXNlIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIG5ldyBzZXNzaW9uIHVzaW5nIHRoZSBbQ3JlYXRlIHNlc3Npb25dKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9yZWZlcmVuY2VzL2Nsb3VkL2NsaWVudC13ZWIvYWNjb3VudCNjcmVhdGVTZXNzaW9uKSBlbmRwb2ludC5cblxuQSB1c2VyIGlzIGxpbWl0ZWQgdG8gMTAgYWN0aXZlIHNlc3Npb25zIGF0IGEgdGltZSBieSBkZWZhdWx0LiBbTGVhcm4gbW9yZSBhYm91dCBzZXNzaW9uIGxpbWl0c10oaHR0cHM6Ly9hcHBjb25kYS5pby9kb2NzL2F1dGhlbnRpY2F0aW9uLXNlY3VyaXR5I2xpbWl0cykuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge09BdXRoUHJvdmlkZXJ9IHByb3ZpZGVyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3NcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHNjb3Blc1xuICAgICAqIEB0aHJvd3Mge0FwcGNvbmRhRXhjZXB0aW9ufVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQgfCBzdHJpbmc+fVxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZU9BdXRoMlRva2VuKHByb3ZpZGVyOiBPQXV0aFByb3ZpZGVyLCBzdWNjZXNzPzogc3RyaW5nLCBmYWlsdXJlPzogc3RyaW5nLCBzY29wZXM/OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZCB8IHN0cmluZz4ge1xuICAgICAgICBpZiAodHlwZW9mIHByb3ZpZGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJwcm92aWRlclwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC90b2tlbnMvb2F1dGgyL3twcm92aWRlcn0nLnJlcGxhY2UoJ3twcm92aWRlcn0nLCBwcm92aWRlcik7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdWNjZXNzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnc3VjY2VzcyddID0gc3VjY2VzcztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGZhaWx1cmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWydmYWlsdXJlJ10gPSBmYWlsdXJlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygc2NvcGVzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnc2NvcGVzJ10gPSBzY29wZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG4gICAgICAgIHBheWxvYWRbJ3Byb2plY3QnXSA9IHRoaXMuY2xpZW50LmNvbmZpZy5wcm9qZWN0O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhTZXJ2aWNlLmZsYXR0ZW4ocGF5bG9hZCkpKSB7XG4gICAgICAgICAgICB1cmkuc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3c/LmxvY2F0aW9uKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVyaS50b1N0cmluZygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVyaS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBwaG9uZSB0b2tlblxuICAgICAqXG4gICAgICogU2VuZHMgdGhlIHVzZXIgYW4gU01TIHdpdGggYSBzZWNyZXQga2V5IGZvciBjcmVhdGluZyBhIHNlc3Npb24uIElmIHRoZSBwcm92aWRlZCB1c2VyIElEIGhhcyBub3QgYmUgcmVnaXN0ZXJlZCwgYSBuZXcgdXNlciB3aWxsIGJlIGNyZWF0ZWQuIFVzZSB0aGUgcmV0dXJuZWQgdXNlciBJRCBhbmQgc2VjcmV0IGFuZCBzdWJtaXQgYSByZXF1ZXN0IHRvIHRoZSBbUE9TVCAvdjEvYWNjb3VudC9zZXNzaW9ucy90b2tlbl0oaHR0cHM6Ly9hcHBjb25kYS5pby9kb2NzL3JlZmVyZW5jZXMvY2xvdWQvY2xpZW50LXdlYi9hY2NvdW50I2NyZWF0ZVNlc3Npb24pIGVuZHBvaW50IHRvIGNvbXBsZXRlIHRoZSBsb2dpbiBwcm9jZXNzLiBUaGUgc2VjcmV0IHNlbnQgdG8gdGhlIHVzZXImIzAzOTtzIHBob25lIGlzIHZhbGlkIGZvciAxNSBtaW51dGVzLlxuXG5BIHVzZXIgaXMgbGltaXRlZCB0byAxMCBhY3RpdmUgc2Vzc2lvbnMgYXQgYSB0aW1lIGJ5IGRlZmF1bHQuIFtMZWFybiBtb3JlIGFib3V0IHNlc3Npb24gbGltaXRzXShodHRwczovL2FwcGNvbmRhLmlvL2RvY3MvYXV0aGVudGljYXRpb24tc2VjdXJpdHkjbGltaXRzKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGhvbmVcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuVG9rZW4+fVxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVBob25lVG9rZW4odXNlcklkOiBzdHJpbmcsIHBob25lOiBzdHJpbmcpOiBQcm9taXNlPFRva2VuPiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJ1c2VySWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcGhvbmUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwY29uZGFFeGNlcHRpb24oJ01pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyOiBcInBob25lXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L3Rva2Vucy9waG9uZSc7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB1c2VySWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd1c2VySWQnXSA9IHVzZXJJZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBob25lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsncGhvbmUnXSA9IHBob25lO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3Bvc3QnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGVtYWlsIHZlcmlmaWNhdGlvblxuICAgICAqXG4gICAgICogVXNlIHRoaXMgZW5kcG9pbnQgdG8gc2VuZCBhIHZlcmlmaWNhdGlvbiBtZXNzYWdlIHRvIHlvdXIgdXNlciBlbWFpbCBhZGRyZXNzIHRvIGNvbmZpcm0gdGhleSBhcmUgdGhlIHZhbGlkIG93bmVycyBvZiB0aGF0IGFkZHJlc3MuIEJvdGggdGhlICoqdXNlcklkKiogYW5kICoqc2VjcmV0KiogYXJndW1lbnRzIHdpbGwgYmUgcGFzc2VkIGFzIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gdGhlIFVSTCB5b3UgaGF2ZSBwcm92aWRlZCB0byBiZSBhdHRhY2hlZCB0byB0aGUgdmVyaWZpY2F0aW9uIGVtYWlsLiBUaGUgcHJvdmlkZWQgVVJMIHNob3VsZCByZWRpcmVjdCB0aGUgdXNlciBiYWNrIHRvIHlvdXIgYXBwIGFuZCBhbGxvdyB5b3UgdG8gY29tcGxldGUgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzIGJ5IHZlcmlmeWluZyBib3RoIHRoZSAqKnVzZXJJZCoqIGFuZCAqKnNlY3JldCoqIHBhcmFtZXRlcnMuIExlYXJuIG1vcmUgYWJvdXQgaG93IHRvIFtjb21wbGV0ZSB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3NdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9yZWZlcmVuY2VzL2Nsb3VkL2NsaWVudC13ZWIvYWNjb3VudCN1cGRhdGVWZXJpZmljYXRpb24pLiBUaGUgdmVyaWZpY2F0aW9uIGxpbmsgc2VudCB0byB0aGUgdXNlciYjMDM5O3MgZW1haWwgYWRkcmVzcyBpcyB2YWxpZCBmb3IgNyBkYXlzLlxuXG5QbGVhc2Ugbm90ZSB0aGF0IGluIG9yZGVyIHRvIGF2b2lkIGEgW1JlZGlyZWN0IEF0dGFja10oaHR0cHM6Ly9naXRodWIuY29tL09XQVNQL0NoZWF0U2hlZXRTZXJpZXMvYmxvYi9tYXN0ZXIvY2hlYXRzaGVldHMvVW52YWxpZGF0ZWRfUmVkaXJlY3RzX2FuZF9Gb3J3YXJkc19DaGVhdF9TaGVldC5tZCksIHRoZSBvbmx5IHZhbGlkIHJlZGlyZWN0IFVSTHMgYXJlIHRoZSBvbmVzIGZyb20gZG9tYWlucyB5b3UgaGF2ZSBzZXQgd2hlbiBhZGRpbmcgeW91ciBwbGF0Zm9ybXMgaW4gdGhlIGNvbnNvbGUgaW50ZXJmYWNlLlxuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLlRva2VuPn1cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVWZXJpZmljYXRpb24odXJsOiBzdHJpbmcpOiBQcm9taXNlPFRva2VuPiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJ1cmxcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvdmVyaWZpY2F0aW9uJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3VybCddID0gdXJsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3Bvc3QnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGVtYWlsIHZlcmlmaWNhdGlvbiAoY29uZmlybWF0aW9uKVxuICAgICAqXG4gICAgICogVXNlIHRoaXMgZW5kcG9pbnQgdG8gY29tcGxldGUgdGhlIHVzZXIgZW1haWwgdmVyaWZpY2F0aW9uIHByb2Nlc3MuIFVzZSBib3RoIHRoZSAqKnVzZXJJZCoqIGFuZCAqKnNlY3JldCoqIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGF0dGFjaGVkIHRvIHlvdXIgYXBwIFVSTCB0byB2ZXJpZnkgdGhlIHVzZXIgZW1haWwgb3duZXJzaGlwLiBJZiBjb25maXJtZWQgdGhpcyByb3V0ZSB3aWxsIHJldHVybiBhIDIwMCBzdGF0dXMgY29kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjcmV0XG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLlRva2VuPn1cbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVWZXJpZmljYXRpb24odXNlcklkOiBzdHJpbmcsIHNlY3JldDogc3RyaW5nKTogUHJvbWlzZTxUb2tlbj4ge1xuICAgICAgICBpZiAodHlwZW9mIHVzZXJJZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwidXNlcklkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHNlY3JldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBjb25kYUV4Y2VwdGlvbignTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6IFwic2VjcmV0XCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcGlQYXRoID0gJy9hY2NvdW50L3ZlcmlmaWNhdGlvbic7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IFBheWxvYWQgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiB1c2VySWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBwYXlsb2FkWyd1c2VySWQnXSA9IHVzZXJJZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHNlY3JldCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3NlY3JldCddID0gc2VjcmV0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3B1dCcsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBhcGlIZWFkZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgcGhvbmUgdmVyaWZpY2F0aW9uXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBlbmRwb2ludCB0byBzZW5kIGEgdmVyaWZpY2F0aW9uIFNNUyB0byB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLiBUaGlzIGVuZHBvaW50IGlzIG1lYW50IGZvciB1c2UgYWZ0ZXIgdXBkYXRpbmcgYSB1c2VyJiMwMzk7cyBwaG9uZSBudW1iZXIgdXNpbmcgdGhlIFthY2NvdW50VXBkYXRlUGhvbmVdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9yZWZlcmVuY2VzL2Nsb3VkL2NsaWVudC13ZWIvYWNjb3VudCN1cGRhdGVQaG9uZSkgZW5kcG9pbnQuIExlYXJuIG1vcmUgYWJvdXQgaG93IHRvIFtjb21wbGV0ZSB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3NdKGh0dHBzOi8vYXBwY29uZGEuaW8vZG9jcy9yZWZlcmVuY2VzL2Nsb3VkL2NsaWVudC13ZWIvYWNjb3VudCN1cGRhdGVQaG9uZVZlcmlmaWNhdGlvbikuIFRoZSB2ZXJpZmljYXRpb24gY29kZSBzZW50IHRvIHRoZSB1c2VyJiMwMzk7cyBwaG9uZSBudW1iZXIgaXMgdmFsaWQgZm9yIDE1IG1pbnV0ZXMuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtBcHBjb25kYUV4Y2VwdGlvbn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbHMuVG9rZW4+fVxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVBob25lVmVyaWZpY2F0aW9uKCk6IFByb21pc2U8VG9rZW4+IHtcbiAgICAgICAgY29uc3QgYXBpUGF0aCA9ICcvYWNjb3VudC92ZXJpZmljYXRpb24vcGhvbmUnO1xuICAgICAgICBjb25zdCBwYXlsb2FkOiBQYXlsb2FkID0ge307XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50ICsgYXBpUGF0aCk7XG5cbiAgICAgICAgY29uc3QgYXBpSGVhZGVyczogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jYWxsKFxuICAgICAgICAgICAgJ3Bvc3QnLFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgYXBpSGVhZGVycyxcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXBkYXRlIHBob25lIHZlcmlmaWNhdGlvbiAoY29uZmlybWF0aW9uKVxuICAgICAqXG4gICAgICogVXNlIHRoaXMgZW5kcG9pbnQgdG8gY29tcGxldGUgdGhlIHVzZXIgcGhvbmUgdmVyaWZpY2F0aW9uIHByb2Nlc3MuIFVzZSB0aGUgKip1c2VySWQqKiBhbmQgKipzZWNyZXQqKiB0aGF0IHdlcmUgc2VudCB0byB5b3VyIHVzZXImIzAzOTtzIHBob25lIG51bWJlciB0byB2ZXJpZnkgdGhlIHVzZXIgZW1haWwgb3duZXJzaGlwLiBJZiBjb25maXJtZWQgdGhpcyByb3V0ZSB3aWxsIHJldHVybiBhIDIwMCBzdGF0dXMgY29kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjcmV0XG4gICAgICogQHRocm93cyB7QXBwY29uZGFFeGNlcHRpb259XG4gICAgICogQHJldHVybnMge1Byb21pc2U8TW9kZWxzLlRva2VuPn1cbiAgICAgKi9cbiAgICBhc3luYyB1cGRhdGVQaG9uZVZlcmlmaWNhdGlvbih1c2VySWQ6IHN0cmluZywgc2VjcmV0OiBzdHJpbmcpOiBQcm9taXNlPFRva2VuPiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJ1c2VySWRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygc2VjcmV0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGNvbmRhRXhjZXB0aW9uKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogXCJzZWNyZXRcIicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwaVBhdGggPSAnL2FjY291bnQvdmVyaWZpY2F0aW9uL3Bob25lJztcbiAgICAgICAgY29uc3QgcGF5bG9hZDogUGF5bG9hZCA9IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHBheWxvYWRbJ3VzZXJJZCddID0gdXNlcklkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygc2VjcmV0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcGF5bG9hZFsnc2VjcmV0J10gPSBzZWNyZXQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgKyBhcGlQYXRoKTtcblxuICAgICAgICBjb25zdCBhcGlIZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNhbGwoXG4gICAgICAgICAgICAncHV0JyxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIGFwaUhlYWRlcnMsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19