p6-cdk-namer 1.3.46 → 1.3.47

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 (7476) hide show
  1. package/.jsii +4 -4
  2. package/lib/p6cdknamer.js +1 -1
  3. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/core/package.json +121 -0
  4. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-env/package.json +63 -0
  5. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-http/package.json +70 -0
  6. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-ini/package.json +73 -0
  7. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-node/package.json +72 -0
  8. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-process/package.json +64 -0
  9. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-sso/package.json +66 -0
  10. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-web-identity/package.json +73 -0
  11. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-host-header/package.json +59 -0
  12. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-logger/package.json +59 -0
  13. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-recursion-detection/package.json +63 -0
  14. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-user-agent/package.json +62 -0
  15. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +820 -0
  16. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js +97 -0
  17. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts +43 -0
  18. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts +33 -0
  19. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/nested-clients/package.json +116 -0
  20. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js +42 -0
  21. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js +2 -0
  22. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js +2 -0
  23. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts +16 -0
  24. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts +2 -0
  25. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts +15 -0
  26. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts +2 -0
  27. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts +11 -0
  28. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver/package.json +57 -0
  29. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/types/package.json +57 -0
  30. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-endpoints/package.json +60 -0
  31. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-user-agent-browser/package.json +55 -0
  32. package/node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-user-agent-node/package.json +66 -0
  33. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/config-resolver/dist-cjs/index.js +181 -0
  34. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js +10 -0
  35. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js +24 -0
  36. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts +9 -0
  37. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts +9 -0
  38. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/config-resolver/package.json +66 -0
  39. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +211 -0
  40. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +828 -0
  41. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +617 -0
  42. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +206 -0
  43. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +122 -0
  44. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +65 -0
  45. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-es/submodules/schema/index.js +14 -0
  46. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +62 -0
  47. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js +18 -0
  48. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js +252 -0
  49. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js +7 -0
  50. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts +14 -0
  51. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts +37 -0
  52. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts +23 -0
  53. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts +24 -0
  54. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts +127 -0
  55. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts +23 -0
  56. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts +16 -0
  57. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts +28 -0
  58. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts +23 -0
  59. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts +7 -0
  60. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts +14 -0
  61. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts +37 -0
  62. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts +23 -0
  63. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts +24 -0
  64. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts +130 -0
  65. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts +23 -0
  66. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts +16 -0
  67. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts +28 -0
  68. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts +23 -0
  69. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts +7 -0
  70. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/core/package.json +135 -0
  71. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/credential-provider-imds/package.json +70 -0
  72. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/fetch-http-handler/package.json +69 -0
  73. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/hash-node/package.json +65 -0
  74. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/invalid-dependency/package.json +61 -0
  75. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-content-length/package.json +64 -0
  76. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-endpoint/package.json +75 -0
  77. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-retry/package.json +79 -0
  78. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-serde/package.json +65 -0
  79. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-stack/package.json +64 -0
  80. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/node-config-provider/package.json +66 -0
  81. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/node-http-handler/package.json +68 -0
  82. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/property-provider/package.json +61 -0
  83. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/protocol-http/package.json +62 -0
  84. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/smithy-client/package.json +68 -0
  85. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-es/index.js +42 -0
  86. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  87. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  88. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  89. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  90. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  91. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  92. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  93. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  94. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  95. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  96. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/types/package.json +61 -0
  97. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/url-parser/package.json +62 -0
  98. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-defaults-mode-browser/package.json +66 -0
  99. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-defaults-mode-node/package.json +67 -0
  100. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-middleware/package.json +67 -0
  101. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-retry/dist-es/types.js +1 -0
  102. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-retry/package.json +71 -0
  103. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-stream/dist-cjs/index.js +84 -0
  104. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js +23 -0
  105. package/node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-stream/package.json +99 -0
  106. package/node_modules/@aws-sdk/client-iam/package.json +34 -34
  107. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/README.md +39 -0
  108. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/account-id-endpoint.d.ts +7 -0
  109. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/account-id-endpoint.js +6 -0
  110. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/client.d.ts +7 -0
  111. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/client.js +5 -0
  112. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-cjs/index.js +1969 -0
  113. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js +55 -0
  114. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +51 -0
  115. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +299 -0
  116. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +1624 -0
  117. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/index.js +3 -0
  118. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js +15 -0
  119. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js +5 -0
  120. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js +24 -0
  121. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/index.js +3 -0
  122. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js +15 -0
  123. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +4 -0
  124. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js +7 -0
  125. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js +11 -0
  126. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js +7 -0
  127. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js +20 -0
  128. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js +72 -0
  129. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js +22 -0
  130. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js +5 -0
  131. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js +25 -0
  132. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js +131 -0
  133. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js +2 -0
  134. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js +1 -0
  135. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js +1 -0
  136. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js +2 -0
  137. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js +1 -0
  138. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js +8 -0
  139. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js +3 -0
  140. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js +2 -0
  141. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js +6 -0
  142. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js +89 -0
  143. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js +40 -0
  144. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/coercing-serializers.js +53 -0
  145. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js +3 -0
  146. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js +18 -0
  147. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js +19 -0
  148. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js +19 -0
  149. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +72 -0
  150. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +72 -0
  151. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js +20 -0
  152. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js +122 -0
  153. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +133 -0
  154. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js +10 -0
  155. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js +46 -0
  156. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js +18 -0
  157. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js +54 -0
  158. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js +17 -0
  159. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js +134 -0
  160. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QuerySerializerSettings.js +1 -0
  161. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js +156 -0
  162. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +73 -0
  163. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js +20 -0
  164. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js +143 -0
  165. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js +279 -0
  166. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js +46 -0
  167. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/simpleFormatXml.js +27 -0
  168. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts +5 -0
  169. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/index.d.ts +22 -0
  170. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts +27 -0
  171. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts +16 -0
  172. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts +14 -0
  173. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d.ts +3 -0
  174. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts +12 -0
  175. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts +4 -0
  176. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts +7 -0
  177. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts +12 -0
  178. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/client/setTokenFeature.d.ts +7 -0
  179. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts +10 -0
  180. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +43 -0
  181. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts +5 -0
  182. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts +5 -0
  183. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts +38 -0
  184. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +117 -0
  185. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts +2 -0
  186. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts +8 -0
  187. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts +6 -0
  188. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts +4 -0
  189. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts +8 -0
  190. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts +10 -0
  191. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts +3 -0
  192. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts +9 -0
  193. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts +8 -0
  194. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts +49 -0
  195. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +23 -0
  196. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts +18 -0
  197. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/common.d.ts +2 -0
  198. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts +18 -0
  199. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts +18 -0
  200. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts +18 -0
  201. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +23 -0
  202. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts +24 -0
  203. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonCodec.d.ts +19 -0
  204. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts +13 -0
  205. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts +19 -0
  206. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsExpectUnion.d.ts +7 -0
  207. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReplacer.d.ts +21 -0
  208. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReviver.d.ts +15 -0
  209. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts +13 -0
  210. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +20 -0
  211. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts +43 -0
  212. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts +6 -0
  213. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts +16 -0
  214. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +25 -0
  215. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlCodec.d.ts +14 -0
  216. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts +20 -0
  217. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts +21 -0
  218. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts +13 -0
  219. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts +6 -0
  220. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts +5 -0
  221. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts +3 -0
  222. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts +15 -0
  223. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts +6 -0
  224. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts +7 -0
  225. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts +3 -0
  226. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts +4 -0
  227. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts +4 -0
  228. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts +11 -0
  229. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts +6 -0
  230. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts +6 -0
  231. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts +12 -0
  232. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +39 -0
  233. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts +4 -0
  234. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts +9 -0
  235. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts +18 -0
  236. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +65 -0
  237. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts +2 -0
  238. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts +1 -0
  239. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts +1 -0
  240. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts +1 -0
  241. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts +1 -0
  242. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts +4 -0
  243. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts +3 -0
  244. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts +4 -0
  245. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts +5 -0
  246. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts +37 -0
  247. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +33 -0
  248. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts +3 -0
  249. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts +5 -0
  250. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts +18 -0
  251. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts +15 -0
  252. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts +15 -0
  253. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +44 -0
  254. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts +36 -0
  255. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts +16 -0
  256. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts +13 -0
  257. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +16 -0
  258. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts +3 -0
  259. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts +7 -0
  260. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts +7 -0
  261. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts +13 -0
  262. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +14 -0
  263. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts +57 -0
  264. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts +6 -0
  265. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts +16 -0
  266. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +41 -0
  267. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts +17 -0
  268. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts +15 -0
  269. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts +21 -0
  270. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts +13 -0
  271. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts +1 -0
  272. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts +7 -0
  273. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/httpAuthSchemes.js +5 -0
  274. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/package.json +121 -0
  275. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/protocols.d.ts +7 -0
  276. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core/protocols.js +5 -0
  277. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-host-header/LICENSE +201 -0
  278. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-host-header/README.md +4 -0
  279. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js +41 -0
  280. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-host-header/dist-es/index.js +33 -0
  281. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts +35 -0
  282. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-host-header/dist-types/ts3.4/index.d.ts +29 -0
  283. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-host-header/package.json +59 -0
  284. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/LICENSE +201 -0
  285. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/README.md +4 -0
  286. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js +48 -0
  287. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/dist-es/index.js +1 -0
  288. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js +42 -0
  289. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts +1 -0
  290. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/dist-types/loggerMiddleware.d.ts +4 -0
  291. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts +1 -0
  292. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/loggerMiddleware.d.ts +17 -0
  293. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-logger/package.json +59 -0
  294. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE +201 -0
  295. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/README.md +10 -0
  296. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js +25 -0
  297. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js +32 -0
  298. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js +5 -0
  299. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/configuration.js +7 -0
  300. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/getRecursionDetectionPlugin.js +7 -0
  301. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js +2 -0
  302. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.browser.js +1 -0
  303. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js +28 -0
  304. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.native.js +1 -0
  305. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/configuration.d.ts +5 -0
  306. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts +5 -0
  307. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts +2 -0
  308. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.browser.d.ts +6 -0
  309. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.d.ts +6 -0
  310. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.native.d.ts +6 -0
  311. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/configuration.d.ts +3 -0
  312. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts +4 -0
  313. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts +2 -0
  314. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts +5 -0
  315. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.d.ts +5 -0
  316. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts +5 -0
  317. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-recursion-detection/package.json +63 -0
  318. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/LICENSE +201 -0
  319. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/README.md +4 -0
  320. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js +194 -0
  321. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js +49 -0
  322. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js +28 -0
  323. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js +7 -0
  324. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js +18 -0
  325. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js +2 -0
  326. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js +82 -0
  327. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts +18 -0
  328. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts +44 -0
  329. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/constants.d.ts +7 -0
  330. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts +5 -0
  331. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts +2 -0
  332. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts +20 -0
  333. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts +21 -0
  334. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/constants.d.ts +7 -0
  335. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts +2 -0
  336. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts +2 -0
  337. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts +21 -0
  338. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts +18 -0
  339. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent/package.json +62 -0
  340. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/LICENSE +201 -0
  341. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/README.md +12 -0
  342. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js +42 -0
  343. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js +15 -0
  344. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js +2 -0
  345. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js +2 -0
  346. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts +16 -0
  347. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts +2 -0
  348. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts +15 -0
  349. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/extensions/index.d.ts +14 -0
  350. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts +2 -0
  351. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts +11 -0
  352. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/region-config-resolver/package.json +57 -0
  353. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/LICENSE +201 -0
  354. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/README.md +4 -0
  355. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-cjs/index.js +22 -0
  356. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/abort.js +1 -0
  357. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/auth.js +1 -0
  358. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/blob/blob-types.js +1 -0
  359. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/checksum.js +1 -0
  360. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/client.js +1 -0
  361. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/command.js +1 -0
  362. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/connection.js +1 -0
  363. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/credentials.js +1 -0
  364. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/crypto.js +1 -0
  365. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/dns.js +5 -0
  366. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/encode.js +1 -0
  367. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/endpoint.js +1 -0
  368. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/eventStream.js +1 -0
  369. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/extensions/index.js +1 -0
  370. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/feature-ids.js +1 -0
  371. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/function.js +1 -0
  372. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/http.js +1 -0
  373. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/identity/AnonymousIdentity.js +1 -0
  374. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/identity/AwsCredentialIdentity.js +1 -0
  375. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/identity/Identity.js +1 -0
  376. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/identity/LoginIdentity.js +1 -0
  377. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/identity/TokenIdentity.js +1 -0
  378. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/identity/index.js +5 -0
  379. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/index.js +34 -0
  380. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/logger.js +1 -0
  381. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/middleware.js +1 -0
  382. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/pagination.js +1 -0
  383. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/profile.js +1 -0
  384. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/request.js +1 -0
  385. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/response.js +1 -0
  386. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/retry.js +1 -0
  387. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/serde.js +1 -0
  388. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/shapes.js +1 -0
  389. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/signature.js +1 -0
  390. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/stream.js +1 -0
  391. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/token.js +1 -0
  392. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/transfer.js +1 -0
  393. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/uri.js +1 -0
  394. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/util.js +1 -0
  395. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-es/waiter.js +1 -0
  396. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/abort.d.ts +1 -0
  397. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/auth.d.ts +1 -0
  398. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts +2 -0
  399. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/checksum.d.ts +1 -0
  400. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/client.d.ts +1 -0
  401. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/command.d.ts +1 -0
  402. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/connection.d.ts +1 -0
  403. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/credentials.d.ts +50 -0
  404. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/crypto.d.ts +1 -0
  405. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/dns.d.ts +85 -0
  406. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/encode.d.ts +1 -0
  407. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts +1 -0
  408. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/eventStream.d.ts +1 -0
  409. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts +8 -0
  410. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts +65 -0
  411. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/function.d.ts +7 -0
  412. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/http.d.ts +33 -0
  413. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/identity/AnonymousIdentity.d.ts +6 -0
  414. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts +60 -0
  415. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/identity/Identity.d.ts +1 -0
  416. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/identity/LoginIdentity.d.ts +18 -0
  417. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/identity/TokenIdentity.d.ts +11 -0
  418. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts +5 -0
  419. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/index.d.ts +34 -0
  420. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/logger.d.ts +22 -0
  421. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/middleware.d.ts +13 -0
  422. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/pagination.d.ts +1 -0
  423. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/profile.d.ts +1 -0
  424. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/request.d.ts +7 -0
  425. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/response.d.ts +7 -0
  426. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/retry.d.ts +1 -0
  427. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/serde.d.ts +24 -0
  428. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/shapes.d.ts +1 -0
  429. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/signature.d.ts +1 -0
  430. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/stream.d.ts +1 -0
  431. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/token.d.ts +17 -0
  432. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/transfer.d.ts +1 -0
  433. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/abort.d.ts +1 -0
  434. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/auth.d.ts +5 -0
  435. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/blob/blob-types.d.ts +2 -0
  436. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/checksum.d.ts +1 -0
  437. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/client.d.ts +1 -0
  438. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/command.d.ts +1 -0
  439. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/connection.d.ts +6 -0
  440. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/credentials.d.ts +13 -0
  441. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/crypto.d.ts +7 -0
  442. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/dns.d.ts +19 -0
  443. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/encode.d.ts +6 -0
  444. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/endpoint.d.ts +9 -0
  445. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/eventStream.d.ts +24 -0
  446. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/extensions/index.d.ts +5 -0
  447. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts +58 -0
  448. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts +7 -0
  449. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/http.d.ts +17 -0
  450. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AnonymousIdentity.d.ts +2 -0
  451. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts +30 -0
  452. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/Identity.d.ts +1 -0
  453. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/LoginIdentity.d.ts +6 -0
  454. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/TokenIdentity.d.ts +6 -0
  455. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/index.d.ts +5 -0
  456. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts +34 -0
  457. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/logger.d.ts +15 -0
  458. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts +47 -0
  459. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/pagination.d.ts +1 -0
  460. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/profile.d.ts +6 -0
  461. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/request.d.ts +4 -0
  462. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/response.d.ts +4 -0
  463. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/retry.d.ts +12 -0
  464. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/serde.d.ts +16 -0
  465. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/shapes.d.ts +6 -0
  466. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/signature.d.ts +15 -0
  467. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/stream.d.ts +4 -0
  468. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/token.d.ts +4 -0
  469. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/transfer.d.ts +7 -0
  470. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/uri.d.ts +1 -0
  471. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/util.d.ts +14 -0
  472. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/ts3.4/waiter.d.ts +1 -0
  473. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/uri.d.ts +1 -0
  474. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/util.d.ts +1 -0
  475. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/dist-types/waiter.d.ts +1 -0
  476. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types/package.json +57 -0
  477. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/LICENSE +201 -0
  478. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/README.md +6 -0
  479. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js +412 -0
  480. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json +264 -0
  481. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/aws.js +10 -0
  482. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/index.js +6 -0
  483. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js +3 -0
  484. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js +25 -0
  485. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js +18 -0
  486. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js +41 -0
  487. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json +264 -0
  488. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/lib/isIpAddress.js +1 -0
  489. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js +21 -0
  490. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/resolveEndpoint.js +1 -0
  491. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointError.js +1 -0
  492. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointRuleObject.js +1 -0
  493. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/types/ErrorRuleObject.js +1 -0
  494. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/types/RuleSetObject.js +1 -0
  495. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/types/TreeRuleObject.js +1 -0
  496. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js +6 -0
  497. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-es/types/shared.js +1 -0
  498. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/aws.d.ts +2 -0
  499. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts +6 -0
  500. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts +3 -0
  501. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts +5 -0
  502. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/parseArn.d.ts +7 -0
  503. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/partition.d.ts +38 -0
  504. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/lib/isIpAddress.d.ts +1 -0
  505. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts +56 -0
  506. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/resolveEndpoint.d.ts +1 -0
  507. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/aws.d.ts +2 -0
  508. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts +6 -0
  509. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts +3 -0
  510. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts +4 -0
  511. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/parseArn.d.ts +2 -0
  512. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/partition.d.ts +28 -0
  513. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts +1 -0
  514. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts +35 -0
  515. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts +1 -0
  516. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts +1 -0
  517. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts +6 -0
  518. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts +1 -0
  519. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts +5 -0
  520. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts +1 -0
  521. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts +6 -0
  522. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/shared.d.ts +12 -0
  523. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointError.d.ts +1 -0
  524. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointRuleObject.d.ts +1 -0
  525. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/types/ErrorRuleObject.d.ts +1 -0
  526. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/types/RuleSetObject.d.ts +1 -0
  527. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/types/TreeRuleObject.d.ts +1 -0
  528. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts +6 -0
  529. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/dist-types/types/shared.d.ts +1 -0
  530. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints/package.json +60 -0
  531. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/LICENSE +201 -0
  532. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/README.md +29 -0
  533. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/configurations.js +2 -0
  534. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js +57 -0
  535. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js +58 -0
  536. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js +22 -0
  537. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-es/configurations.js +1 -0
  538. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-es/createUserAgentStringParsingProvider.js +20 -0
  539. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js +53 -0
  540. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js +18 -0
  541. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-types/configurations.d.ts +7 -0
  542. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-types/createUserAgentStringParsingProvider.d.ts +14 -0
  543. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts +27 -0
  544. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts +18 -0
  545. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/configurations.d.ts +4 -0
  546. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts +9 -0
  547. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts +22 -0
  548. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts +17 -0
  549. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-browser/package.json +55 -0
  550. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/LICENSE +201 -0
  551. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/README.md +10 -0
  552. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +58 -0
  553. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-es/crt-availability.js +3 -0
  554. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js +29 -0
  555. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js +2 -0
  556. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-es/is-crt-available.js +7 -0
  557. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js +9 -0
  558. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/crt-availability.d.ts +8 -0
  559. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts +28 -0
  560. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts +2 -0
  561. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/is-crt-available.d.ts +5 -0
  562. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts +13 -0
  563. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/crt-availability.d.ts +3 -0
  564. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts +21 -0
  565. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts +2 -0
  566. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/is-crt-available.d.ts +2 -0
  567. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts +6 -0
  568. package/node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node/package.json +66 -0
  569. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/LICENSE +201 -0
  570. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/README.md +10 -0
  571. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-cjs/index.js +181 -0
  572. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js +9 -0
  573. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js +9 -0
  574. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/index.js +4 -0
  575. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js +10 -0
  576. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js +14 -0
  577. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js +15 -0
  578. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/index.js +3 -0
  579. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js +10 -0
  580. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js +24 -0
  581. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariant.js +1 -0
  582. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariantTag.js +1 -0
  583. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/PartitionHash.js +1 -0
  584. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/RegionHash.js +1 -0
  585. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js +1 -0
  586. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/getRegionInfo.js +29 -0
  587. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedHostname.js +5 -0
  588. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedPartition.js +1 -0
  589. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js +12 -0
  590. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-es/regionInfo/index.js +3 -0
  591. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts +17 -0
  592. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts +17 -0
  593. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/index.d.ts +16 -0
  594. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts +37 -0
  595. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts +57 -0
  596. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts +11 -0
  597. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/index.d.ts +12 -0
  598. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts +9 -0
  599. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionConfig/config.d.ts +17 -0
  600. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts +34 -0
  601. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts +11 -0
  602. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts +10 -0
  603. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/PartitionHash.d.ts +15 -0
  604. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/RegionHash.d.ts +13 -0
  605. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts +14 -0
  606. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts +19 -0
  607. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts +13 -0
  608. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts +13 -0
  609. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts +14 -0
  610. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/regionInfo/index.d.ts +12 -0
  611. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts +17 -0
  612. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts +17 -0
  613. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts +16 -0
  614. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts +37 -0
  615. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts +57 -0
  616. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts +11 -0
  617. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/index.d.ts +12 -0
  618. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts +9 -0
  619. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts +17 -0
  620. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts +4 -0
  621. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts +8 -0
  622. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts +4 -0
  623. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts +34 -0
  624. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts +11 -0
  625. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts +10 -0
  626. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts +15 -0
  627. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts +13 -0
  628. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts +14 -0
  629. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts +19 -0
  630. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts +13 -0
  631. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts +13 -0
  632. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts +14 -0
  633. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts +12 -0
  634. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/config-resolver/package.json +66 -0
  635. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/LICENSE +201 -0
  636. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/README.md +45 -0
  637. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/cbor.d.ts +7 -0
  638. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/cbor.js +6 -0
  639. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-cjs/index.js +349 -0
  640. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +1048 -0
  641. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +211 -0
  642. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +828 -0
  643. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +617 -0
  644. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +706 -0
  645. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/getSmithyContext.js +2 -0
  646. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/index.js +8 -0
  647. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +17 -0
  648. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js +18 -0
  649. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js +42 -0
  650. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js +3 -0
  651. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js +20 -0
  652. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js +15 -0
  653. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js +23 -0
  654. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/middleware-http-signing/index.js +2 -0
  655. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/normalizeProvider.js +6 -0
  656. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/pagination/createPaginator.js +41 -0
  657. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js +1 -0
  658. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/setFeature.js +11 -0
  659. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js +165 -0
  660. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js +97 -0
  661. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/byte-printer.js +37 -0
  662. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js +426 -0
  663. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js +221 -0
  664. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js +25 -0
  665. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js +21 -0
  666. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/index.js +5 -0
  667. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js +86 -0
  668. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +206 -0
  669. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js +1 -0
  670. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +260 -0
  671. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +122 -0
  672. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js +94 -0
  673. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js +6 -0
  674. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js +11 -0
  675. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js +5 -0
  676. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/index.js +13 -0
  677. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js +69 -0
  678. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js +19 -0
  679. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js +66 -0
  680. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js +42 -0
  681. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js +33 -0
  682. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js +86 -0
  683. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js +19 -0
  684. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +65 -0
  685. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/deref.js +6 -0
  686. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/index.js +14 -0
  687. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js +23 -0
  688. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js +1 -0
  689. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +62 -0
  690. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js +18 -0
  691. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js +15 -0
  692. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js +14 -0
  693. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js +16 -0
  694. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js +252 -0
  695. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js +16 -0
  696. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js +20 -0
  697. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js +20 -0
  698. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js +16 -0
  699. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js +7 -0
  700. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js +16 -0
  701. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js +22 -0
  702. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js +1 -0
  703. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js +190 -0
  704. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/generateIdempotencyToken.js +2 -0
  705. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/index.js +10 -0
  706. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js +24 -0
  707. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js +230 -0
  708. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js +6 -0
  709. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js +110 -0
  710. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js +27 -0
  711. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js +37 -0
  712. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js +25 -0
  713. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js +13 -0
  714. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js +34 -0
  715. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js +11 -0
  716. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js +3 -0
  717. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js +5 -0
  718. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js +3 -0
  719. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js +55 -0
  720. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/getSmithyContext.d.ts +5 -0
  721. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/index.d.ts +8 -0
  722. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts +18 -0
  723. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts +18 -0
  724. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts +33 -0
  725. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/index.d.ts +3 -0
  726. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts +10 -0
  727. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts +9 -0
  728. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts +5 -0
  729. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/middleware-http-signing/index.d.ts +2 -0
  730. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/normalizeProvider.d.ts +7 -0
  731. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/pagination/createPaginator.d.ts +7 -0
  732. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts +5 -0
  733. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/setFeature.d.ts +12 -0
  734. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts +33 -0
  735. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts +22 -0
  736. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/byte-printer.d.ts +6 -0
  737. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts +17 -0
  738. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts +9 -0
  739. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts +62 -0
  740. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts +26 -0
  741. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts +5 -0
  742. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts +31 -0
  743. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts +60 -0
  744. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts +1 -0
  745. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts +23 -0
  746. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts +76 -0
  747. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts +11 -0
  748. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/SerdeContext.d.ts +8 -0
  749. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts +10 -0
  750. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts +7 -0
  751. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts +13 -0
  752. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts +51 -0
  753. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts +4 -0
  754. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts +13 -0
  755. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts +21 -0
  756. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts +23 -0
  757. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts +14 -0
  758. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts +9 -0
  759. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts +64 -0
  760. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts +6 -0
  761. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts +14 -0
  762. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts +14 -0
  763. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts +8 -0
  764. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts +9 -0
  765. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts +6 -0
  766. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts +37 -0
  767. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts +23 -0
  768. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts +24 -0
  769. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts +127 -0
  770. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts +23 -0
  771. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts +16 -0
  772. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts +28 -0
  773. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts +23 -0
  774. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts +7 -0
  775. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts +23 -0
  776. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translateTraits.d.ts +7 -0
  777. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts +6 -0
  778. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts +73 -0
  779. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts +2 -0
  780. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +10 -0
  781. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts +45 -0
  782. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts +270 -0
  783. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts +6 -0
  784. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts +47 -0
  785. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts +11 -0
  786. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts +5 -0
  787. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts +33 -0
  788. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/getSmithyContext.d.ts +5 -0
  789. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts +8 -0
  790. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts +18 -0
  791. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts +18 -0
  792. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts +33 -0
  793. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts +3 -0
  794. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts +10 -0
  795. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts +9 -0
  796. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts +5 -0
  797. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/index.d.ts +2 -0
  798. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/normalizeProvider.d.ts +7 -0
  799. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/pagination/createPaginator.d.ts +7 -0
  800. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts +5 -0
  801. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts +12 -0
  802. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts +33 -0
  803. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts +22 -0
  804. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts +6 -0
  805. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts +17 -0
  806. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts +9 -0
  807. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts +65 -0
  808. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts +26 -0
  809. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts +5 -0
  810. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts +31 -0
  811. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts +60 -0
  812. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/index.d.ts +1 -0
  813. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts +23 -0
  814. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts +76 -0
  815. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts +11 -0
  816. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts +8 -0
  817. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts +10 -0
  818. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts +7 -0
  819. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts +13 -0
  820. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts +51 -0
  821. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts +4 -0
  822. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts +13 -0
  823. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts +21 -0
  824. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts +23 -0
  825. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts +14 -0
  826. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts +9 -0
  827. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts +64 -0
  828. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts +6 -0
  829. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts +14 -0
  830. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts +14 -0
  831. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts +11 -0
  832. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts +9 -0
  833. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts +6 -0
  834. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts +37 -0
  835. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts +23 -0
  836. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts +24 -0
  837. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts +130 -0
  838. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts +23 -0
  839. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts +16 -0
  840. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts +28 -0
  841. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts +23 -0
  842. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts +7 -0
  843. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts +23 -0
  844. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts +7 -0
  845. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts +6 -0
  846. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts +73 -0
  847. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts +2 -0
  848. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts +10 -0
  849. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts +45 -0
  850. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts +270 -0
  851. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts +6 -0
  852. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts +47 -0
  853. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-every.d.ts +11 -0
  854. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-header.d.ts +5 -0
  855. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts +33 -0
  856. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts +15 -0
  857. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts +8 -0
  858. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts +8 -0
  859. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts +3 -0
  860. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts +8 -0
  861. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts +3 -0
  862. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts +30 -0
  863. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts +15 -0
  864. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts +8 -0
  865. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts +8 -0
  866. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts +3 -0
  867. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts +8 -0
  868. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/util-identity-and-auth/index.d.ts +3 -0
  869. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts +30 -0
  870. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/event-streams.d.ts +7 -0
  871. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/event-streams.js +6 -0
  872. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/package.json +135 -0
  873. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/protocols.d.ts +7 -0
  874. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/protocols.js +6 -0
  875. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/schema.d.ts +7 -0
  876. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/schema.js +6 -0
  877. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/serde.d.ts +7 -0
  878. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/core/serde.js +6 -0
  879. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/LICENSE +201 -0
  880. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/README.md +11 -0
  881. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js +372 -0
  882. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js +5 -0
  883. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js +7 -0
  884. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js +5 -0
  885. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js +8 -0
  886. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js +10 -0
  887. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js +77 -0
  888. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js +134 -0
  889. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/index.js +7 -0
  890. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js +13 -0
  891. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js +3 -0
  892. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js +36 -0
  893. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js +2 -0
  894. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js +7 -0
  895. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/types.js +1 -0
  896. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js +17 -0
  897. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js +19 -0
  898. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js +25 -0
  899. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/config/Endpoint.d.ts +7 -0
  900. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts +13 -0
  901. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointMode.d.ts +7 -0
  902. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts +13 -0
  903. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts +12 -0
  904. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/fromContainerMetadata.d.ts +21 -0
  905. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts +10 -0
  906. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/index.d.ts +28 -0
  907. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts +19 -0
  908. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts +40 -0
  909. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts +6 -0
  910. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts +8 -0
  911. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/retry.d.ts +10 -0
  912. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts +7 -0
  913. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts +13 -0
  914. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts +7 -0
  915. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts +13 -0
  916. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts +12 -0
  917. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts +21 -0
  918. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts +10 -0
  919. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/index.d.ts +28 -0
  920. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts +19 -0
  921. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts +40 -0
  922. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts +6 -0
  923. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts +8 -0
  924. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts +10 -0
  925. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/types.d.ts +7 -0
  926. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts +6 -0
  927. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts +21 -0
  928. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts +16 -0
  929. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/types.d.ts +7 -0
  930. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts +6 -0
  931. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts +21 -0
  932. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts +16 -0
  933. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/credential-provider-imds/package.json +70 -0
  934. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/LICENSE +201 -0
  935. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/README.md +11 -0
  936. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +216 -0
  937. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js +3 -0
  938. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js +141 -0
  939. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-es/index.js +2 -0
  940. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js +11 -0
  941. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +53 -0
  942. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts +6 -0
  943. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts +42 -0
  944. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts +2 -0
  945. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/request-timeout.d.ts +1 -0
  946. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts +2 -0
  947. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts +6 -0
  948. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts +42 -0
  949. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/index.d.ts +2 -0
  950. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts +1 -0
  951. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts +2 -0
  952. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/fetch-http-handler/package.json +69 -0
  953. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/hash-node/LICENSE +201 -0
  954. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/hash-node/README.md +10 -0
  955. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/hash-node/dist-cjs/index.js +42 -0
  956. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/hash-node/dist-es/index.js +37 -0
  957. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/hash-node/dist-types/index.d.ts +13 -0
  958. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/hash-node/dist-types/ts3.4/index.d.ts +13 -0
  959. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/hash-node/package.json +65 -0
  960. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/LICENSE +201 -0
  961. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/README.md +10 -0
  962. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-cjs/index.js +10 -0
  963. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-es/index.js +2 -0
  964. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-es/invalidFunction.js +3 -0
  965. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js +1 -0
  966. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-types/index.d.ts +8 -0
  967. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-types/invalidFunction.d.ts +4 -0
  968. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-types/invalidProvider.d.ts +5 -0
  969. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/index.d.ts +8 -0
  970. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts +4 -0
  971. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts +5 -0
  972. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/invalid-dependency/package.json +61 -0
  973. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-content-length/LICENSE +201 -0
  974. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-content-length/README.md +4 -0
  975. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-content-length/dist-cjs/index.js +46 -0
  976. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-content-length/dist-es/index.js +39 -0
  977. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-content-length/dist-types/index.d.ts +6 -0
  978. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-content-length/dist-types/ts3.4/index.d.ts +6 -0
  979. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-content-length/package.json +64 -0
  980. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/LICENSE +201 -0
  981. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/README.md +10 -0
  982. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js +5 -0
  983. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js +7 -0
  984. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js +35 -0
  985. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js +240 -0
  986. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js +42 -0
  987. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js +1 -0
  988. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js +3 -0
  989. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js +55 -0
  990. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js +31 -0
  991. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/index.js +2 -0
  992. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js +10 -0
  993. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js +36 -0
  994. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js +18 -0
  995. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/index.js +6 -0
  996. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js +24 -0
  997. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js +9 -0
  998. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/index.js +1 -0
  999. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js +37 -0
  1000. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-es/types.js +1 -0
  1001. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts +13 -0
  1002. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts +1 -0
  1003. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts +4 -0
  1004. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts +28 -0
  1005. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts +2 -0
  1006. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts +8 -0
  1007. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts +5 -0
  1008. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/endpointMiddleware.d.ts +10 -0
  1009. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/getEndpointPlugin.d.ts +11 -0
  1010. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts +18 -0
  1011. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts +109 -0
  1012. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts +32 -0
  1013. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/index.d.ts +4 -0
  1014. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/s3.d.ts +26 -0
  1015. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts +13 -0
  1016. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts +1 -0
  1017. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts +4 -0
  1018. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts +28 -0
  1019. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts +2 -0
  1020. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts +8 -0
  1021. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts +5 -0
  1022. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts +10 -0
  1023. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts +11 -0
  1024. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/index.d.ts +18 -0
  1025. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts +109 -0
  1026. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts +32 -0
  1027. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts +4 -0
  1028. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts +26 -0
  1029. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/types.d.ts +41 -0
  1030. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts +41 -0
  1031. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-endpoint/package.json +75 -0
  1032. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/LICENSE +201 -0
  1033. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/README.md +11 -0
  1034. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-cjs/index.js +358 -0
  1035. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js +5 -0
  1036. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js +7 -0
  1037. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/AdaptiveRetryStrategy.js +21 -0
  1038. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/StandardRetryStrategy.js +94 -0
  1039. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/configurations.js +51 -0
  1040. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/defaultRetryQuota.js +27 -0
  1041. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/delayDecider.js +2 -0
  1042. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/index.js +7 -0
  1043. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js +1 -0
  1044. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js +3 -0
  1045. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/omitRetryHeadersMiddleware.js +22 -0
  1046. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/retryDecider.js +7 -0
  1047. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js +112 -0
  1048. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/types.js +1 -0
  1049. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-es/util.js +9 -0
  1050. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts +23 -0
  1051. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/StandardRetryStrategy.d.ts +33 -0
  1052. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts +66 -0
  1053. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/defaultRetryQuota.d.ts +24 -0
  1054. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/delayDecider.d.ts +5 -0
  1055. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/index.d.ts +7 -0
  1056. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts +5 -0
  1057. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts +5 -0
  1058. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts +13 -0
  1059. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/retryDecider.d.ts +6 -0
  1060. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/retryMiddleware.d.ts +18 -0
  1061. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts +23 -0
  1062. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts +33 -0
  1063. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/configurations.d.ts +66 -0
  1064. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts +24 -0
  1065. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/delayDecider.d.ts +5 -0
  1066. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/index.d.ts +7 -0
  1067. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts +5 -0
  1068. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts +5 -0
  1069. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts +13 -0
  1070. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryDecider.d.ts +6 -0
  1071. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts +18 -0
  1072. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/types.d.ts +65 -0
  1073. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/ts3.4/util.d.ts +2 -0
  1074. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/types.d.ts +65 -0
  1075. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/dist-types/util.d.ts +2 -0
  1076. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-retry/package.json +79 -0
  1077. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/LICENSE +201 -0
  1078. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/README.md +4 -0
  1079. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-cjs/index.js +100 -0
  1080. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js +55 -0
  1081. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-es/index.js +3 -0
  1082. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js +22 -0
  1083. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js +14 -0
  1084. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts +6 -0
  1085. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-types/index.d.ts +3 -0
  1086. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts +24 -0
  1087. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts +6 -0
  1088. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts +6 -0
  1089. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-types/ts3.4/index.d.ts +3 -0
  1090. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts +24 -0
  1091. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts +6 -0
  1092. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-serde/package.json +65 -0
  1093. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/LICENSE +201 -0
  1094. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/README.md +78 -0
  1095. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-cjs/index.js +285 -0
  1096. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js +281 -0
  1097. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-es/index.js +1 -0
  1098. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-es/types.js +1 -0
  1099. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-types/MiddlewareStack.d.ts +5 -0
  1100. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-types/index.d.ts +1 -0
  1101. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts +5 -0
  1102. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-types/ts3.4/index.d.ts +1 -0
  1103. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-types/ts3.4/types.d.ts +22 -0
  1104. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/dist-types/types.d.ts +22 -0
  1105. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/middleware-stack/package.json +64 -0
  1106. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/LICENSE +201 -0
  1107. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/README.md +10 -0
  1108. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-cjs/index.js +62 -0
  1109. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-es/configLoader.js +9 -0
  1110. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js +14 -0
  1111. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js +23 -0
  1112. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js +3 -0
  1113. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js +12 -0
  1114. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-es/index.js +1 -0
  1115. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts +31 -0
  1116. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts +20 -0
  1117. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts +22 -0
  1118. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts +9 -0
  1119. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts +9 -0
  1120. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/index.d.ts +4 -0
  1121. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts +31 -0
  1122. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts +20 -0
  1123. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts +22 -0
  1124. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts +9 -0
  1125. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts +9 -0
  1126. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts +4 -0
  1127. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-config-provider/package.json +66 -0
  1128. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/LICENSE +201 -0
  1129. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/README.md +9 -0
  1130. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-cjs/index.js +724 -0
  1131. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/constants.js +1 -0
  1132. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +9 -0
  1133. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -0
  1134. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +216 -0
  1135. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +87 -0
  1136. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +32 -0
  1137. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +170 -0
  1138. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +21 -0
  1139. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +88 -0
  1140. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +36 -0
  1141. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +21 -0
  1142. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +22 -0
  1143. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +23 -0
  1144. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +8 -0
  1145. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +41 -0
  1146. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +21 -0
  1147. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/timing.js +4 -0
  1148. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +56 -0
  1149. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +5 -0
  1150. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +4 -0
  1151. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -0
  1152. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +46 -0
  1153. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +24 -0
  1154. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +12 -0
  1155. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +63 -0
  1156. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +13 -0
  1157. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +12 -0
  1158. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +2 -0
  1159. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +6 -0
  1160. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +6 -0
  1161. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +2 -0
  1162. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +5 -0
  1163. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +6 -0
  1164. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +13 -0
  1165. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +8 -0
  1166. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +5 -0
  1167. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +4 -0
  1168. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +3 -0
  1169. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +46 -0
  1170. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +24 -0
  1171. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +12 -0
  1172. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +63 -0
  1173. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +13 -0
  1174. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +12 -0
  1175. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +2 -0
  1176. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +6 -0
  1177. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +6 -0
  1178. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +2 -0
  1179. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +5 -0
  1180. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +6 -0
  1181. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +13 -0
  1182. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +8 -0
  1183. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +11 -0
  1184. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +11 -0
  1185. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler/package.json +68 -0
  1186. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/LICENSE +201 -0
  1187. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/README.md +10 -0
  1188. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-cjs/index.js +117 -0
  1189. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js +8 -0
  1190. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-es/ProviderError.js +23 -0
  1191. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js +8 -0
  1192. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-es/chain.js +21 -0
  1193. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-es/fromStatic.js +1 -0
  1194. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-es/index.js +6 -0
  1195. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-es/memoize.js +45 -0
  1196. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts +31 -0
  1197. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts +39 -0
  1198. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts +31 -0
  1199. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/chain.d.ts +13 -0
  1200. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts +5 -0
  1201. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/index.d.ts +24 -0
  1202. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/memoize.d.ts +40 -0
  1203. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts +31 -0
  1204. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts +39 -0
  1205. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts +31 -0
  1206. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts +13 -0
  1207. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts +5 -0
  1208. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts +24 -0
  1209. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts +40 -0
  1210. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/property-provider/package.json +61 -0
  1211. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/LICENSE +201 -0
  1212. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/README.md +4 -0
  1213. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-cjs/index.js +169 -0
  1214. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/Field.js +26 -0
  1215. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/Fields.js +20 -0
  1216. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js +21 -0
  1217. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/extensions/index.js +1 -0
  1218. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/httpHandler.js +1 -0
  1219. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/httpRequest.js +64 -0
  1220. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/httpResponse.js +18 -0
  1221. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/index.js +8 -0
  1222. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js +4 -0
  1223. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-es/types.js +1 -0
  1224. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/Field.d.ts +50 -0
  1225. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts +44 -0
  1226. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts +33 -0
  1227. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts +1 -0
  1228. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts +35 -0
  1229. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts +56 -0
  1230. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts +29 -0
  1231. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/index.d.ts +8 -0
  1232. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts +1 -0
  1233. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts +50 -0
  1234. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts +44 -0
  1235. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts +33 -0
  1236. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts +1 -0
  1237. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts +35 -0
  1238. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts +56 -0
  1239. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts +29 -0
  1240. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts +8 -0
  1241. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts +1 -0
  1242. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts +21 -0
  1243. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/dist-types/types.d.ts +21 -0
  1244. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/protocol-http/package.json +62 -0
  1245. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/LICENSE +201 -0
  1246. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/README.md +10 -0
  1247. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-cjs/index.js +589 -0
  1248. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js +7 -0
  1249. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/client.js +45 -0
  1250. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js +1 -0
  1251. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/command.js +124 -0
  1252. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/constants.js +1 -0
  1253. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js +21 -0
  1254. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/default-error-handler.js +22 -0
  1255. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/defaults-mode.js +26 -0
  1256. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js +6 -0
  1257. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/exceptions.js +50 -0
  1258. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js +1 -0
  1259. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js +30 -0
  1260. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js +9 -0
  1261. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/extensions/index.js +1 -0
  1262. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js +15 -0
  1263. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/get-array-if-single-item.js +1 -0
  1264. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js +12 -0
  1265. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/index.js +20 -0
  1266. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js +3 -0
  1267. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/object-mapping.js +92 -0
  1268. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/resolve-path.js +1 -0
  1269. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/schemaLogFilter.js +34 -0
  1270. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/ser-utils.js +14 -0
  1271. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-es/serde-json.js +19 -0
  1272. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/NoOpLogger.d.ts +11 -0
  1273. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/client.d.ts +61 -0
  1274. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts +5 -0
  1275. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/command.d.ts +119 -0
  1276. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/constants.d.ts +4 -0
  1277. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts +11 -0
  1278. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts +15 -0
  1279. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts +28 -0
  1280. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts +8 -0
  1281. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts +42 -0
  1282. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts +5 -0
  1283. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts +24 -0
  1284. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts +38 -0
  1285. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts +1 -0
  1286. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts +18 -0
  1287. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts +7 -0
  1288. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts +7 -0
  1289. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/index.d.ts +21 -0
  1290. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts +5 -0
  1291. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts +162 -0
  1292. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts +5 -0
  1293. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/schemaLogFilter.d.ts +9 -0
  1294. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts +15 -0
  1295. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts +12 -0
  1296. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts +11 -0
  1297. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts +61 -0
  1298. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts +5 -0
  1299. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts +119 -0
  1300. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/constants.d.ts +4 -0
  1301. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts +11 -0
  1302. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/default-error-handler.d.ts +15 -0
  1303. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/defaults-mode.d.ts +28 -0
  1304. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts +8 -0
  1305. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/exceptions.d.ts +42 -0
  1306. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts +5 -0
  1307. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts +24 -0
  1308. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +38 -0
  1309. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/index.d.ts +1 -0
  1310. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  1311. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts +7 -0
  1312. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts +7 -0
  1313. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts +21 -0
  1314. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts +5 -0
  1315. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/object-mapping.d.ts +178 -0
  1316. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts +5 -0
  1317. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts +9 -0
  1318. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/ser-utils.d.ts +15 -0
  1319. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/dist-types/ts3.4/serde-json.d.ts +12 -0
  1320. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client/package.json +68 -0
  1321. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/LICENSE +201 -0
  1322. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/README.md +115 -0
  1323. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  1324. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  1325. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/abort.js +1 -0
  1326. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  1327. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  1328. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  1329. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  1330. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  1331. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  1332. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  1333. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  1334. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  1335. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/client.js +1 -0
  1336. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/command.js +1 -0
  1337. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  1338. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  1339. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  1340. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  1341. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  1342. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  1343. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/encode.js +1 -0
  1344. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  1345. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  1346. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  1347. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  1348. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  1349. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  1350. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  1351. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  1352. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  1353. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  1354. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  1355. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  1356. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  1357. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  1358. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  1359. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  1360. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/http.js +5 -0
  1361. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  1362. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  1363. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  1364. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  1365. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  1366. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/index.js +42 -0
  1367. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/logger.js +1 -0
  1368. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  1369. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  1370. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/profile.js +6 -0
  1371. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/response.js +1 -0
  1372. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/retry.js +1 -0
  1373. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  1374. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  1375. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  1376. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  1377. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  1378. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/serde.js +1 -0
  1379. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  1380. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/signature.js +1 -0
  1381. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/stream.js +1 -0
  1382. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  1383. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  1384. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  1385. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  1386. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  1387. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  1388. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  1389. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  1390. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  1391. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  1392. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/uri.js +1 -0
  1393. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/util.js +1 -0
  1394. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  1395. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  1396. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  1397. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  1398. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  1399. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  1400. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  1401. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  1402. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  1403. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  1404. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  1405. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  1406. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  1407. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  1408. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  1409. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  1410. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  1411. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  1412. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  1413. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  1414. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  1415. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  1416. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  1417. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  1418. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  1419. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  1420. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  1421. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  1422. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  1423. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  1424. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  1425. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  1426. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  1427. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  1428. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  1429. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  1430. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  1431. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  1432. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  1433. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  1434. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  1435. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  1436. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  1437. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  1438. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  1439. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  1440. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  1441. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  1442. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  1443. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  1444. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  1445. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  1446. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  1447. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  1448. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  1449. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  1450. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  1451. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  1452. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  1453. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  1454. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  1455. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  1456. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  1457. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  1458. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  1459. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  1460. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  1461. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  1462. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  1463. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  1464. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  1465. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  1466. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  1467. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  1468. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  1469. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  1470. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  1471. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  1472. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  1473. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  1474. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  1475. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  1476. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  1477. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  1478. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  1479. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  1480. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  1481. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  1482. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  1483. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  1484. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  1485. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  1486. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  1487. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  1488. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  1489. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  1490. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  1491. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  1492. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  1493. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  1494. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  1495. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  1496. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  1497. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  1498. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  1499. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  1500. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  1501. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  1502. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  1503. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  1504. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  1505. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  1506. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  1507. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  1508. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  1509. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  1510. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  1511. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  1512. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  1513. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  1514. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  1515. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  1516. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  1517. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  1518. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  1519. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  1520. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  1521. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  1522. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  1523. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  1524. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  1525. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  1526. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  1527. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  1528. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  1529. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  1530. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  1531. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  1532. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  1533. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  1534. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  1535. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  1536. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  1537. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/types/package.json +61 -0
  1538. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/url-parser/LICENSE +201 -0
  1539. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/url-parser/README.md +10 -0
  1540. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/url-parser/dist-cjs/index.js +23 -0
  1541. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/url-parser/dist-es/index.js +18 -0
  1542. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/url-parser/dist-types/index.d.ts +5 -0
  1543. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/url-parser/dist-types/ts3.4/index.d.ts +5 -0
  1544. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/url-parser/package.json +62 -0
  1545. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/LICENSE +201 -0
  1546. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/README.md +10 -0
  1547. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/constants.js +4 -0
  1548. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/index.js +12 -0
  1549. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js +34 -0
  1550. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js +23 -0
  1551. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js +1 -0
  1552. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-es/index.js +1 -0
  1553. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js +30 -0
  1554. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js +19 -0
  1555. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-types/constants.d.ts +12 -0
  1556. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-types/index.d.ts +4 -0
  1557. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts +17 -0
  1558. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts +16 -0
  1559. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts +12 -0
  1560. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts +4 -0
  1561. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts +17 -0
  1562. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts +16 -0
  1563. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-browser/package.json +66 -0
  1564. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/LICENSE +201 -0
  1565. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/README.md +10 -0
  1566. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js +74 -0
  1567. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-es/constants.js +6 -0
  1568. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-es/defaultsModeConfig.js +11 -0
  1569. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-es/index.js +1 -0
  1570. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js +52 -0
  1571. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-types/constants.d.ts +24 -0
  1572. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts +6 -0
  1573. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-types/index.d.ts +4 -0
  1574. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts +17 -0
  1575. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts +24 -0
  1576. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts +6 -0
  1577. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/index.d.ts +4 -0
  1578. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts +17 -0
  1579. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-defaults-mode-node/package.json +67 -0
  1580. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/LICENSE +201 -0
  1581. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/README.md +12 -0
  1582. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-cjs/index.js +15 -0
  1583. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js +2 -0
  1584. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-es/index.js +2 -0
  1585. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js +6 -0
  1586. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts +5 -0
  1587. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-types/index.d.ts +8 -0
  1588. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts +7 -0
  1589. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts +5 -0
  1590. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts +8 -0
  1591. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts +7 -0
  1592. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-middleware/package.json +67 -0
  1593. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/LICENSE +201 -0
  1594. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/README.md +78 -0
  1595. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-cjs/index.js +278 -0
  1596. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js +27 -0
  1597. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js +19 -0
  1598. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js +109 -0
  1599. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js +67 -0
  1600. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/config.js +7 -0
  1601. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/constants.js +9 -0
  1602. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js +14 -0
  1603. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js +11 -0
  1604. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/index.js +7 -0
  1605. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-es/types.js +1 -0
  1606. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts +33 -0
  1607. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ConfiguredRetryStrategy.d.ts +32 -0
  1608. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts +49 -0
  1609. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts +26 -0
  1610. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/config.d.ts +20 -0
  1611. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/constants.d.ts +59 -0
  1612. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts +5 -0
  1613. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/defaultRetryToken.d.ts +9 -0
  1614. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/index.d.ts +7 -0
  1615. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts +33 -0
  1616. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts +32 -0
  1617. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts +49 -0
  1618. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts +26 -0
  1619. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/config.d.ts +20 -0
  1620. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/constants.d.ts +59 -0
  1621. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts +5 -0
  1622. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts +9 -0
  1623. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/index.d.ts +7 -0
  1624. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/ts3.4/types.d.ts +19 -0
  1625. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/dist-types/types.d.ts +19 -0
  1626. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-retry/package.json +71 -0
  1627. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/LICENSE +201 -0
  1628. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/README.md +6 -0
  1629. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/ByteArrayCollector.js +36 -0
  1630. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js +7 -0
  1631. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js +53 -0
  1632. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js +39 -0
  1633. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js +12 -0
  1634. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js +60 -0
  1635. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js +103 -0
  1636. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js +31 -0
  1637. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js +30 -0
  1638. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js +34 -0
  1639. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/headStream.js +42 -0
  1640. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/index.js +84 -0
  1641. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js +68 -0
  1642. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js +54 -0
  1643. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js +10 -0
  1644. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/splitStream.js +16 -0
  1645. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js +10 -0
  1646. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/ByteArrayCollector.js +32 -0
  1647. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js +23 -0
  1648. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js +3 -0
  1649. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js +49 -0
  1650. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js +35 -0
  1651. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js +9 -0
  1652. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js +57 -0
  1653. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js +95 -0
  1654. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js +27 -0
  1655. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.js +26 -0
  1656. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/headStream.browser.js +31 -0
  1657. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/headStream.js +38 -0
  1658. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/index.js +9 -0
  1659. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js +64 -0
  1660. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js +50 -0
  1661. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/splitStream.browser.js +7 -0
  1662. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/splitStream.js +13 -0
  1663. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-es/stream-type-check.js +5 -0
  1664. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ByteArrayCollector.d.ts +13 -0
  1665. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts +22 -0
  1666. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts +37 -0
  1667. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts +60 -0
  1668. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts +15 -0
  1669. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts +11 -0
  1670. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/createBufferedReadable.d.ts +12 -0
  1671. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts +50 -0
  1672. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts +5 -0
  1673. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts +6 -0
  1674. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/headStream.browser.d.ts +8 -0
  1675. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/headStream.d.ts +9 -0
  1676. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/index.d.ts +9 -0
  1677. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.browser.d.ts +7 -0
  1678. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts +8 -0
  1679. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/splitStream.browser.d.ts +5 -0
  1680. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/splitStream.d.ts +8 -0
  1681. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts +16 -0
  1682. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts +13 -0
  1683. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts +22 -0
  1684. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts +37 -0
  1685. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts +60 -0
  1686. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts +15 -0
  1687. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts +11 -0
  1688. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts +12 -0
  1689. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts +54 -0
  1690. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts +5 -0
  1691. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts +6 -0
  1692. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.browser.d.ts +8 -0
  1693. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.d.ts +9 -0
  1694. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts +9 -0
  1695. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts +7 -0
  1696. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts +8 -0
  1697. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.browser.d.ts +8 -0
  1698. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.d.ts +14 -0
  1699. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts +16 -0
  1700. package/node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-stream/package.json +99 -0
  1701. package/node_modules/@aws-sdk/client-sso/package.json +32 -32
  1702. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/README.md +39 -0
  1703. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/account-id-endpoint.d.ts +7 -0
  1704. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/account-id-endpoint.js +6 -0
  1705. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/client.d.ts +7 -0
  1706. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/client.js +5 -0
  1707. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-cjs/index.js +1969 -0
  1708. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js +55 -0
  1709. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +51 -0
  1710. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +299 -0
  1711. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +1624 -0
  1712. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/index.js +3 -0
  1713. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js +15 -0
  1714. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js +5 -0
  1715. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js +24 -0
  1716. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/index.js +3 -0
  1717. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js +15 -0
  1718. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +4 -0
  1719. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js +7 -0
  1720. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js +11 -0
  1721. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js +7 -0
  1722. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js +20 -0
  1723. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js +72 -0
  1724. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js +22 -0
  1725. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js +5 -0
  1726. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js +25 -0
  1727. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js +131 -0
  1728. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js +2 -0
  1729. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js +1 -0
  1730. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js +1 -0
  1731. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js +2 -0
  1732. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js +1 -0
  1733. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js +8 -0
  1734. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js +3 -0
  1735. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js +2 -0
  1736. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js +6 -0
  1737. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js +89 -0
  1738. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js +40 -0
  1739. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/coercing-serializers.js +53 -0
  1740. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js +3 -0
  1741. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js +18 -0
  1742. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js +19 -0
  1743. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js +19 -0
  1744. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +72 -0
  1745. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +72 -0
  1746. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js +20 -0
  1747. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js +122 -0
  1748. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +133 -0
  1749. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js +10 -0
  1750. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js +46 -0
  1751. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js +18 -0
  1752. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js +54 -0
  1753. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js +17 -0
  1754. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js +134 -0
  1755. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QuerySerializerSettings.js +1 -0
  1756. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js +156 -0
  1757. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +73 -0
  1758. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js +20 -0
  1759. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js +143 -0
  1760. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js +279 -0
  1761. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js +46 -0
  1762. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/simpleFormatXml.js +27 -0
  1763. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts +5 -0
  1764. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/index.d.ts +22 -0
  1765. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts +27 -0
  1766. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts +16 -0
  1767. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts +14 -0
  1768. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d.ts +3 -0
  1769. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts +12 -0
  1770. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts +4 -0
  1771. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts +7 -0
  1772. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts +12 -0
  1773. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/client/setTokenFeature.d.ts +7 -0
  1774. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts +10 -0
  1775. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +43 -0
  1776. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts +5 -0
  1777. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts +5 -0
  1778. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts +38 -0
  1779. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +117 -0
  1780. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts +2 -0
  1781. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts +8 -0
  1782. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts +6 -0
  1783. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts +4 -0
  1784. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts +8 -0
  1785. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts +10 -0
  1786. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts +3 -0
  1787. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts +9 -0
  1788. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts +8 -0
  1789. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts +49 -0
  1790. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +23 -0
  1791. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts +18 -0
  1792. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/common.d.ts +2 -0
  1793. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts +18 -0
  1794. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts +18 -0
  1795. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts +18 -0
  1796. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +23 -0
  1797. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts +24 -0
  1798. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonCodec.d.ts +19 -0
  1799. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts +13 -0
  1800. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts +19 -0
  1801. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsExpectUnion.d.ts +7 -0
  1802. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReplacer.d.ts +21 -0
  1803. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReviver.d.ts +15 -0
  1804. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts +13 -0
  1805. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +20 -0
  1806. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts +43 -0
  1807. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts +6 -0
  1808. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts +16 -0
  1809. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +25 -0
  1810. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlCodec.d.ts +14 -0
  1811. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts +20 -0
  1812. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts +21 -0
  1813. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts +13 -0
  1814. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts +6 -0
  1815. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts +5 -0
  1816. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts +3 -0
  1817. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts +15 -0
  1818. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts +6 -0
  1819. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts +7 -0
  1820. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts +3 -0
  1821. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts +4 -0
  1822. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts +4 -0
  1823. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts +11 -0
  1824. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts +6 -0
  1825. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts +6 -0
  1826. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts +12 -0
  1827. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +39 -0
  1828. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts +4 -0
  1829. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts +9 -0
  1830. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts +18 -0
  1831. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +65 -0
  1832. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts +2 -0
  1833. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts +1 -0
  1834. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts +1 -0
  1835. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts +1 -0
  1836. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts +1 -0
  1837. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts +4 -0
  1838. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts +3 -0
  1839. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts +4 -0
  1840. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts +5 -0
  1841. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts +37 -0
  1842. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +33 -0
  1843. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts +3 -0
  1844. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts +5 -0
  1845. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts +18 -0
  1846. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts +15 -0
  1847. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts +15 -0
  1848. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +44 -0
  1849. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts +36 -0
  1850. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts +16 -0
  1851. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts +13 -0
  1852. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +16 -0
  1853. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts +3 -0
  1854. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts +7 -0
  1855. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts +7 -0
  1856. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts +13 -0
  1857. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +14 -0
  1858. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts +57 -0
  1859. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts +6 -0
  1860. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts +16 -0
  1861. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +41 -0
  1862. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts +17 -0
  1863. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts +15 -0
  1864. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts +21 -0
  1865. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts +13 -0
  1866. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts +1 -0
  1867. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts +7 -0
  1868. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/httpAuthSchemes.js +5 -0
  1869. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/package.json +121 -0
  1870. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/protocols.d.ts +7 -0
  1871. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core/protocols.js +5 -0
  1872. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header/LICENSE +201 -0
  1873. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header/README.md +4 -0
  1874. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js +41 -0
  1875. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header/dist-es/index.js +33 -0
  1876. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts +35 -0
  1877. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header/dist-types/ts3.4/index.d.ts +29 -0
  1878. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header/package.json +59 -0
  1879. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/LICENSE +201 -0
  1880. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/README.md +4 -0
  1881. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js +48 -0
  1882. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/dist-es/index.js +1 -0
  1883. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js +42 -0
  1884. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts +1 -0
  1885. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/dist-types/loggerMiddleware.d.ts +4 -0
  1886. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts +1 -0
  1887. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/loggerMiddleware.d.ts +17 -0
  1888. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger/package.json +59 -0
  1889. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE +201 -0
  1890. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/README.md +10 -0
  1891. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js +25 -0
  1892. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js +32 -0
  1893. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js +5 -0
  1894. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/configuration.js +7 -0
  1895. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/getRecursionDetectionPlugin.js +7 -0
  1896. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js +2 -0
  1897. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.browser.js +1 -0
  1898. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js +28 -0
  1899. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.native.js +1 -0
  1900. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/configuration.d.ts +5 -0
  1901. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts +5 -0
  1902. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts +2 -0
  1903. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.browser.d.ts +6 -0
  1904. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.d.ts +6 -0
  1905. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.native.d.ts +6 -0
  1906. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/configuration.d.ts +3 -0
  1907. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts +4 -0
  1908. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts +2 -0
  1909. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts +5 -0
  1910. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.d.ts +5 -0
  1911. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts +5 -0
  1912. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection/package.json +63 -0
  1913. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/LICENSE +201 -0
  1914. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/README.md +4 -0
  1915. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js +194 -0
  1916. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js +49 -0
  1917. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js +28 -0
  1918. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js +7 -0
  1919. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js +18 -0
  1920. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js +2 -0
  1921. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js +82 -0
  1922. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts +18 -0
  1923. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts +44 -0
  1924. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/constants.d.ts +7 -0
  1925. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts +5 -0
  1926. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts +2 -0
  1927. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts +20 -0
  1928. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts +21 -0
  1929. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/constants.d.ts +7 -0
  1930. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts +2 -0
  1931. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts +2 -0
  1932. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts +21 -0
  1933. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts +18 -0
  1934. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent/package.json +62 -0
  1935. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/README.md +13 -0
  1936. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js +2 -0
  1937. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +56 -0
  1938. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js +18 -0
  1939. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js +7 -0
  1940. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +624 -0
  1941. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js +38 -0
  1942. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.js +54 -0
  1943. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.native.js +15 -0
  1944. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js +40 -0
  1945. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js +52 -0
  1946. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js +43 -0
  1947. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js +62 -0
  1948. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js +19 -0
  1949. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js +18 -0
  1950. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js +7 -0
  1951. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +820 -0
  1952. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.browser.js +39 -0
  1953. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js +68 -0
  1954. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.native.js +15 -0
  1955. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js +40 -0
  1956. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js +13 -0
  1957. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/index.js +1 -0
  1958. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js +9 -0
  1959. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js +48 -0
  1960. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js +38 -0
  1961. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +50 -0
  1962. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js +23 -0
  1963. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js +1 -0
  1964. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js +13 -0
  1965. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js +14 -0
  1966. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js +4 -0
  1967. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/extensionConfiguration.js +1 -0
  1968. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js +5 -0
  1969. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js +8 -0
  1970. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/index.js +1 -0
  1971. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js +203 -0
  1972. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/protocols/Aws_restJson1.js +257 -0
  1973. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js +33 -0
  1974. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js +49 -0
  1975. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js +11 -0
  1976. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js +36 -0
  1977. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js +9 -0
  1978. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js +11 -0
  1979. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js +48 -0
  1980. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js +38 -0
  1981. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js +55 -0
  1982. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js +23 -0
  1983. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js +23 -0
  1984. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js +2 -0
  1985. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js +22 -0
  1986. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js +97 -0
  1987. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js +15 -0
  1988. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js +14 -0
  1989. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js +4 -0
  1990. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/extensionConfiguration.js +1 -0
  1991. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js +6 -0
  1992. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js +8 -0
  1993. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/index.js +1 -0
  1994. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js +102 -0
  1995. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/protocols/Aws_query.js +528 -0
  1996. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js +34 -0
  1997. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js +63 -0
  1998. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js +11 -0
  1999. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js +36 -0
  2000. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js +9 -0
  2001. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/index.d.ts +7 -0
  2002. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDC.d.ts +55 -0
  2003. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts +220 -0
  2004. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts +29 -0
  2005. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts +75 -0
  2006. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +176 -0
  2007. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/index.d.ts +1 -0
  2008. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts +38 -0
  2009. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/endpointResolver.d.ts +5 -0
  2010. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts +2 -0
  2011. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts +9 -0
  2012. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts +51 -0
  2013. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts +14 -0
  2014. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/index.d.ts +1 -0
  2015. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts +420 -0
  2016. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/protocols/Aws_restJson1.d.ts +11 -0
  2017. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts +57 -0
  2018. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts +57 -0
  2019. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts +56 -0
  2020. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts +32 -0
  2021. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts +17 -0
  2022. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STS.d.ts +27 -0
  2023. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts +192 -0
  2024. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts +29 -0
  2025. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts +85 -0
  2026. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts +271 -0
  2027. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +290 -0
  2028. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/index.d.ts +2 -0
  2029. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultRoleAssumers.d.ts +23 -0
  2030. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts +43 -0
  2031. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts +44 -0
  2032. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/endpointResolver.d.ts +5 -0
  2033. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/ruleset.d.ts +2 -0
  2034. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/extensionConfiguration.d.ts +9 -0
  2035. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts +17 -0
  2036. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/STSServiceException.d.ts +14 -0
  2037. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/index.d.ts +1 -0
  2038. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/models_0.d.ts +712 -0
  2039. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/protocols/Aws_query.d.ts +20 -0
  2040. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts +59 -0
  2041. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts +57 -0
  2042. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts +58 -0
  2043. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts +32 -0
  2044. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeExtensions.d.ts +17 -0
  2045. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts +1 -0
  2046. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts +22 -0
  2047. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts +121 -0
  2048. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts +32 -0
  2049. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts +47 -0
  2050. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +43 -0
  2051. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts +1 -0
  2052. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts +51 -0
  2053. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/endpointResolver.d.ts +8 -0
  2054. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts +2 -0
  2055. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts +9 -0
  2056. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts +8 -0
  2057. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts +9 -0
  2058. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/index.d.ts +1 -0
  2059. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts +138 -0
  2060. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/protocols/Aws_restJson1.d.ts +17 -0
  2061. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +112 -0
  2062. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts +107 -0
  2063. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +116 -0
  2064. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts +49 -0
  2065. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts +11 -0
  2066. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STS.d.ts +39 -0
  2067. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts +128 -0
  2068. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts +32 -0
  2069. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts +57 -0
  2070. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts +47 -0
  2071. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +51 -0
  2072. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/index.d.ts +2 -0
  2073. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts +19 -0
  2074. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts +33 -0
  2075. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts +57 -0
  2076. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts +8 -0
  2077. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts +2 -0
  2078. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts +9 -0
  2079. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts +9 -0
  2080. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts +9 -0
  2081. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/index.d.ts +1 -0
  2082. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts +123 -0
  2083. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/protocols/Aws_query.d.ts +29 -0
  2084. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +121 -0
  2085. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +103 -0
  2086. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +125 -0
  2087. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts +49 -0
  2088. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts +11 -0
  2089. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/package.json +116 -0
  2090. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts +7 -0
  2091. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/sso-oidc.js +5 -0
  2092. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/sts.d.ts +7 -0
  2093. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients/sts.js +5 -0
  2094. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/LICENSE +201 -0
  2095. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/README.md +12 -0
  2096. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js +42 -0
  2097. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js +15 -0
  2098. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js +2 -0
  2099. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js +2 -0
  2100. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts +16 -0
  2101. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts +2 -0
  2102. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts +15 -0
  2103. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/extensions/index.d.ts +14 -0
  2104. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts +2 -0
  2105. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts +11 -0
  2106. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver/package.json +57 -0
  2107. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/LICENSE +201 -0
  2108. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/README.md +4 -0
  2109. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-cjs/index.js +22 -0
  2110. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/abort.js +1 -0
  2111. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/auth.js +1 -0
  2112. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/blob/blob-types.js +1 -0
  2113. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/checksum.js +1 -0
  2114. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/client.js +1 -0
  2115. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/command.js +1 -0
  2116. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/connection.js +1 -0
  2117. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/credentials.js +1 -0
  2118. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/crypto.js +1 -0
  2119. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/dns.js +5 -0
  2120. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/encode.js +1 -0
  2121. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/endpoint.js +1 -0
  2122. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/eventStream.js +1 -0
  2123. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/extensions/index.js +1 -0
  2124. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/feature-ids.js +1 -0
  2125. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/function.js +1 -0
  2126. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/http.js +1 -0
  2127. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/identity/AnonymousIdentity.js +1 -0
  2128. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/identity/AwsCredentialIdentity.js +1 -0
  2129. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/identity/Identity.js +1 -0
  2130. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/identity/LoginIdentity.js +1 -0
  2131. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/identity/TokenIdentity.js +1 -0
  2132. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/identity/index.js +5 -0
  2133. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/index.js +34 -0
  2134. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/logger.js +1 -0
  2135. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/middleware.js +1 -0
  2136. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/pagination.js +1 -0
  2137. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/profile.js +1 -0
  2138. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/request.js +1 -0
  2139. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/response.js +1 -0
  2140. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/retry.js +1 -0
  2141. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/serde.js +1 -0
  2142. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/shapes.js +1 -0
  2143. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/signature.js +1 -0
  2144. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/stream.js +1 -0
  2145. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/token.js +1 -0
  2146. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/transfer.js +1 -0
  2147. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/uri.js +1 -0
  2148. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/util.js +1 -0
  2149. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-es/waiter.js +1 -0
  2150. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/abort.d.ts +1 -0
  2151. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/auth.d.ts +1 -0
  2152. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts +2 -0
  2153. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/checksum.d.ts +1 -0
  2154. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/client.d.ts +1 -0
  2155. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/command.d.ts +1 -0
  2156. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/connection.d.ts +1 -0
  2157. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/credentials.d.ts +50 -0
  2158. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/crypto.d.ts +1 -0
  2159. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/dns.d.ts +85 -0
  2160. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/encode.d.ts +1 -0
  2161. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts +1 -0
  2162. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/eventStream.d.ts +1 -0
  2163. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts +8 -0
  2164. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts +65 -0
  2165. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/function.d.ts +7 -0
  2166. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/http.d.ts +33 -0
  2167. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/identity/AnonymousIdentity.d.ts +6 -0
  2168. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts +60 -0
  2169. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/identity/Identity.d.ts +1 -0
  2170. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/identity/LoginIdentity.d.ts +18 -0
  2171. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/identity/TokenIdentity.d.ts +11 -0
  2172. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts +5 -0
  2173. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/index.d.ts +34 -0
  2174. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/logger.d.ts +22 -0
  2175. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/middleware.d.ts +13 -0
  2176. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/pagination.d.ts +1 -0
  2177. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/profile.d.ts +1 -0
  2178. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/request.d.ts +7 -0
  2179. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/response.d.ts +7 -0
  2180. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/retry.d.ts +1 -0
  2181. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/serde.d.ts +24 -0
  2182. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/shapes.d.ts +1 -0
  2183. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/signature.d.ts +1 -0
  2184. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/stream.d.ts +1 -0
  2185. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/token.d.ts +17 -0
  2186. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/transfer.d.ts +1 -0
  2187. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/abort.d.ts +1 -0
  2188. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/auth.d.ts +5 -0
  2189. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/blob/blob-types.d.ts +2 -0
  2190. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/checksum.d.ts +1 -0
  2191. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/client.d.ts +1 -0
  2192. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/command.d.ts +1 -0
  2193. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/connection.d.ts +6 -0
  2194. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/credentials.d.ts +13 -0
  2195. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/crypto.d.ts +7 -0
  2196. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/dns.d.ts +19 -0
  2197. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/encode.d.ts +6 -0
  2198. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/endpoint.d.ts +9 -0
  2199. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/eventStream.d.ts +24 -0
  2200. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/extensions/index.d.ts +5 -0
  2201. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts +58 -0
  2202. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts +7 -0
  2203. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/http.d.ts +17 -0
  2204. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AnonymousIdentity.d.ts +2 -0
  2205. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts +30 -0
  2206. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/Identity.d.ts +1 -0
  2207. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/LoginIdentity.d.ts +6 -0
  2208. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/TokenIdentity.d.ts +6 -0
  2209. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/index.d.ts +5 -0
  2210. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts +34 -0
  2211. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/logger.d.ts +15 -0
  2212. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts +47 -0
  2213. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/pagination.d.ts +1 -0
  2214. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/profile.d.ts +6 -0
  2215. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/request.d.ts +4 -0
  2216. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/response.d.ts +4 -0
  2217. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/retry.d.ts +12 -0
  2218. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/serde.d.ts +16 -0
  2219. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/shapes.d.ts +6 -0
  2220. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/signature.d.ts +15 -0
  2221. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/stream.d.ts +4 -0
  2222. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/token.d.ts +4 -0
  2223. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/transfer.d.ts +7 -0
  2224. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/uri.d.ts +1 -0
  2225. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/util.d.ts +14 -0
  2226. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/ts3.4/waiter.d.ts +1 -0
  2227. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/uri.d.ts +1 -0
  2228. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/util.d.ts +1 -0
  2229. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/dist-types/waiter.d.ts +1 -0
  2230. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types/package.json +57 -0
  2231. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/LICENSE +201 -0
  2232. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/README.md +6 -0
  2233. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js +412 -0
  2234. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json +264 -0
  2235. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/aws.js +10 -0
  2236. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/index.js +6 -0
  2237. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js +3 -0
  2238. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js +25 -0
  2239. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js +18 -0
  2240. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js +41 -0
  2241. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json +264 -0
  2242. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/lib/isIpAddress.js +1 -0
  2243. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js +21 -0
  2244. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/resolveEndpoint.js +1 -0
  2245. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointError.js +1 -0
  2246. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointRuleObject.js +1 -0
  2247. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/types/ErrorRuleObject.js +1 -0
  2248. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/types/RuleSetObject.js +1 -0
  2249. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/types/TreeRuleObject.js +1 -0
  2250. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js +6 -0
  2251. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-es/types/shared.js +1 -0
  2252. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/aws.d.ts +2 -0
  2253. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts +6 -0
  2254. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts +3 -0
  2255. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts +5 -0
  2256. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/parseArn.d.ts +7 -0
  2257. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/partition.d.ts +38 -0
  2258. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/lib/isIpAddress.d.ts +1 -0
  2259. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts +56 -0
  2260. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/resolveEndpoint.d.ts +1 -0
  2261. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/aws.d.ts +2 -0
  2262. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts +6 -0
  2263. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts +3 -0
  2264. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts +4 -0
  2265. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/parseArn.d.ts +2 -0
  2266. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/partition.d.ts +28 -0
  2267. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts +1 -0
  2268. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts +35 -0
  2269. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts +1 -0
  2270. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts +1 -0
  2271. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts +6 -0
  2272. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts +1 -0
  2273. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts +5 -0
  2274. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts +1 -0
  2275. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts +6 -0
  2276. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/shared.d.ts +12 -0
  2277. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointError.d.ts +1 -0
  2278. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointRuleObject.d.ts +1 -0
  2279. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/types/ErrorRuleObject.d.ts +1 -0
  2280. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/types/RuleSetObject.d.ts +1 -0
  2281. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/types/TreeRuleObject.d.ts +1 -0
  2282. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts +6 -0
  2283. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/dist-types/types/shared.d.ts +1 -0
  2284. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints/package.json +60 -0
  2285. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/LICENSE +201 -0
  2286. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/README.md +29 -0
  2287. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/configurations.js +2 -0
  2288. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js +57 -0
  2289. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js +58 -0
  2290. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js +22 -0
  2291. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-es/configurations.js +1 -0
  2292. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-es/createUserAgentStringParsingProvider.js +20 -0
  2293. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js +53 -0
  2294. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js +18 -0
  2295. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-types/configurations.d.ts +7 -0
  2296. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-types/createUserAgentStringParsingProvider.d.ts +14 -0
  2297. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts +27 -0
  2298. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts +18 -0
  2299. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/configurations.d.ts +4 -0
  2300. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts +9 -0
  2301. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts +22 -0
  2302. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts +17 -0
  2303. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser/package.json +55 -0
  2304. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/LICENSE +201 -0
  2305. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/README.md +10 -0
  2306. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +58 -0
  2307. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-es/crt-availability.js +3 -0
  2308. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js +29 -0
  2309. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js +2 -0
  2310. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-es/is-crt-available.js +7 -0
  2311. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js +9 -0
  2312. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/crt-availability.d.ts +8 -0
  2313. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts +28 -0
  2314. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts +2 -0
  2315. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/is-crt-available.d.ts +5 -0
  2316. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts +13 -0
  2317. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/crt-availability.d.ts +3 -0
  2318. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts +21 -0
  2319. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts +2 -0
  2320. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/is-crt-available.d.ts +2 -0
  2321. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts +6 -0
  2322. package/node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node/package.json +66 -0
  2323. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/LICENSE +201 -0
  2324. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/README.md +10 -0
  2325. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-cjs/index.js +181 -0
  2326. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js +9 -0
  2327. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js +9 -0
  2328. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/index.js +4 -0
  2329. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js +10 -0
  2330. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js +14 -0
  2331. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js +15 -0
  2332. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/index.js +3 -0
  2333. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js +10 -0
  2334. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionConfig/config.js +12 -0
  2335. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js +6 -0
  2336. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js +1 -0
  2337. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js +24 -0
  2338. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariant.js +1 -0
  2339. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariantTag.js +1 -0
  2340. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/PartitionHash.js +1 -0
  2341. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/RegionHash.js +1 -0
  2342. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js +1 -0
  2343. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/getRegionInfo.js +29 -0
  2344. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedHostname.js +5 -0
  2345. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedPartition.js +1 -0
  2346. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js +12 -0
  2347. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-es/regionInfo/index.js +3 -0
  2348. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts +17 -0
  2349. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts +17 -0
  2350. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/index.d.ts +16 -0
  2351. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts +37 -0
  2352. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts +57 -0
  2353. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts +11 -0
  2354. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/index.d.ts +12 -0
  2355. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts +9 -0
  2356. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionConfig/config.d.ts +17 -0
  2357. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionConfig/getRealRegion.d.ts +4 -0
  2358. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionConfig/index.d.ts +8 -0
  2359. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionConfig/isFipsRegion.d.ts +4 -0
  2360. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts +34 -0
  2361. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts +11 -0
  2362. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts +10 -0
  2363. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/PartitionHash.d.ts +15 -0
  2364. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/RegionHash.d.ts +13 -0
  2365. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts +14 -0
  2366. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts +19 -0
  2367. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts +13 -0
  2368. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts +13 -0
  2369. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts +14 -0
  2370. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/regionInfo/index.d.ts +12 -0
  2371. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts +17 -0
  2372. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts +17 -0
  2373. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts +16 -0
  2374. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts +37 -0
  2375. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts +57 -0
  2376. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts +11 -0
  2377. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/index.d.ts +12 -0
  2378. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts +9 -0
  2379. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts +17 -0
  2380. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts +4 -0
  2381. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts +8 -0
  2382. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts +4 -0
  2383. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts +34 -0
  2384. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts +11 -0
  2385. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts +10 -0
  2386. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts +15 -0
  2387. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts +13 -0
  2388. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts +14 -0
  2389. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts +19 -0
  2390. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts +13 -0
  2391. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts +13 -0
  2392. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts +14 -0
  2393. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts +12 -0
  2394. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/config-resolver/package.json +66 -0
  2395. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/LICENSE +201 -0
  2396. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/README.md +45 -0
  2397. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/cbor.d.ts +7 -0
  2398. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/cbor.js +6 -0
  2399. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-cjs/index.js +349 -0
  2400. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +1048 -0
  2401. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +211 -0
  2402. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +828 -0
  2403. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +617 -0
  2404. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +706 -0
  2405. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/getSmithyContext.js +2 -0
  2406. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/index.js +8 -0
  2407. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +17 -0
  2408. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js +18 -0
  2409. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js +42 -0
  2410. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js +3 -0
  2411. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js +20 -0
  2412. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js +15 -0
  2413. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js +23 -0
  2414. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/middleware-http-signing/index.js +2 -0
  2415. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/normalizeProvider.js +6 -0
  2416. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/pagination/createPaginator.js +41 -0
  2417. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js +1 -0
  2418. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/setFeature.js +11 -0
  2419. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js +165 -0
  2420. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js +97 -0
  2421. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/byte-printer.js +37 -0
  2422. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js +426 -0
  2423. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js +221 -0
  2424. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js +25 -0
  2425. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js +21 -0
  2426. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/index.js +5 -0
  2427. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js +86 -0
  2428. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +206 -0
  2429. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js +1 -0
  2430. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +260 -0
  2431. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +122 -0
  2432. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js +94 -0
  2433. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js +6 -0
  2434. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js +11 -0
  2435. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js +5 -0
  2436. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/index.js +13 -0
  2437. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js +69 -0
  2438. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js +19 -0
  2439. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js +66 -0
  2440. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js +42 -0
  2441. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js +33 -0
  2442. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js +86 -0
  2443. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js +19 -0
  2444. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +65 -0
  2445. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/deref.js +6 -0
  2446. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/index.js +14 -0
  2447. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js +23 -0
  2448. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js +1 -0
  2449. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +62 -0
  2450. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js +18 -0
  2451. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js +15 -0
  2452. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js +14 -0
  2453. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js +16 -0
  2454. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js +252 -0
  2455. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js +16 -0
  2456. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js +20 -0
  2457. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js +20 -0
  2458. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js +16 -0
  2459. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js +7 -0
  2460. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js +16 -0
  2461. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js +22 -0
  2462. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js +1 -0
  2463. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js +190 -0
  2464. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/generateIdempotencyToken.js +2 -0
  2465. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/index.js +10 -0
  2466. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js +24 -0
  2467. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js +230 -0
  2468. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js +6 -0
  2469. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js +110 -0
  2470. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js +27 -0
  2471. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js +37 -0
  2472. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js +25 -0
  2473. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js +13 -0
  2474. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js +34 -0
  2475. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js +11 -0
  2476. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js +3 -0
  2477. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js +5 -0
  2478. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js +3 -0
  2479. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js +55 -0
  2480. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/getSmithyContext.d.ts +5 -0
  2481. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/index.d.ts +8 -0
  2482. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts +18 -0
  2483. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts +18 -0
  2484. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts +33 -0
  2485. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/index.d.ts +3 -0
  2486. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts +10 -0
  2487. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts +9 -0
  2488. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts +5 -0
  2489. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/middleware-http-signing/index.d.ts +2 -0
  2490. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/normalizeProvider.d.ts +7 -0
  2491. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/pagination/createPaginator.d.ts +7 -0
  2492. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts +5 -0
  2493. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/setFeature.d.ts +12 -0
  2494. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts +33 -0
  2495. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts +22 -0
  2496. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/byte-printer.d.ts +6 -0
  2497. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts +17 -0
  2498. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts +9 -0
  2499. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts +62 -0
  2500. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts +26 -0
  2501. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts +5 -0
  2502. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts +31 -0
  2503. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts +60 -0
  2504. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts +1 -0
  2505. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts +23 -0
  2506. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts +76 -0
  2507. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts +11 -0
  2508. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/SerdeContext.d.ts +8 -0
  2509. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts +10 -0
  2510. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts +7 -0
  2511. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts +13 -0
  2512. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts +51 -0
  2513. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts +4 -0
  2514. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts +13 -0
  2515. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts +21 -0
  2516. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts +23 -0
  2517. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts +14 -0
  2518. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts +9 -0
  2519. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts +64 -0
  2520. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts +6 -0
  2521. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts +14 -0
  2522. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts +14 -0
  2523. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts +8 -0
  2524. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts +9 -0
  2525. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts +6 -0
  2526. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts +37 -0
  2527. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts +23 -0
  2528. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts +24 -0
  2529. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts +127 -0
  2530. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts +23 -0
  2531. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts +16 -0
  2532. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts +28 -0
  2533. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts +23 -0
  2534. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts +7 -0
  2535. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts +23 -0
  2536. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translateTraits.d.ts +7 -0
  2537. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts +6 -0
  2538. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts +73 -0
  2539. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts +2 -0
  2540. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +10 -0
  2541. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts +45 -0
  2542. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts +270 -0
  2543. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts +6 -0
  2544. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts +47 -0
  2545. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts +11 -0
  2546. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts +5 -0
  2547. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts +33 -0
  2548. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/getSmithyContext.d.ts +5 -0
  2549. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts +8 -0
  2550. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts +18 -0
  2551. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts +18 -0
  2552. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts +33 -0
  2553. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts +3 -0
  2554. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts +10 -0
  2555. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts +9 -0
  2556. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts +5 -0
  2557. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/index.d.ts +2 -0
  2558. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/normalizeProvider.d.ts +7 -0
  2559. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/pagination/createPaginator.d.ts +7 -0
  2560. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts +5 -0
  2561. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts +12 -0
  2562. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts +33 -0
  2563. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts +22 -0
  2564. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts +6 -0
  2565. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts +17 -0
  2566. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts +9 -0
  2567. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts +65 -0
  2568. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts +26 -0
  2569. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts +5 -0
  2570. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts +31 -0
  2571. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts +60 -0
  2572. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/index.d.ts +1 -0
  2573. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts +23 -0
  2574. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts +76 -0
  2575. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts +11 -0
  2576. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts +8 -0
  2577. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts +10 -0
  2578. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts +7 -0
  2579. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts +13 -0
  2580. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts +51 -0
  2581. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts +4 -0
  2582. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts +13 -0
  2583. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts +21 -0
  2584. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts +23 -0
  2585. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts +14 -0
  2586. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts +9 -0
  2587. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts +64 -0
  2588. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts +6 -0
  2589. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts +14 -0
  2590. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts +14 -0
  2591. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts +11 -0
  2592. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts +9 -0
  2593. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts +6 -0
  2594. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts +37 -0
  2595. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts +23 -0
  2596. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts +24 -0
  2597. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts +130 -0
  2598. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts +23 -0
  2599. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts +16 -0
  2600. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts +28 -0
  2601. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts +23 -0
  2602. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts +7 -0
  2603. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts +23 -0
  2604. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts +7 -0
  2605. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts +6 -0
  2606. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts +73 -0
  2607. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts +2 -0
  2608. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts +10 -0
  2609. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts +45 -0
  2610. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts +270 -0
  2611. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts +6 -0
  2612. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts +47 -0
  2613. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-every.d.ts +11 -0
  2614. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-header.d.ts +5 -0
  2615. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts +33 -0
  2616. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts +15 -0
  2617. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts +8 -0
  2618. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts +8 -0
  2619. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts +3 -0
  2620. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts +8 -0
  2621. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts +3 -0
  2622. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts +30 -0
  2623. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts +15 -0
  2624. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts +8 -0
  2625. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts +8 -0
  2626. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts +3 -0
  2627. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts +8 -0
  2628. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/util-identity-and-auth/index.d.ts +3 -0
  2629. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts +30 -0
  2630. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/event-streams.d.ts +7 -0
  2631. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/event-streams.js +6 -0
  2632. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/package.json +135 -0
  2633. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/protocols.d.ts +7 -0
  2634. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/protocols.js +6 -0
  2635. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/schema.d.ts +7 -0
  2636. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/schema.js +6 -0
  2637. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/serde.d.ts +7 -0
  2638. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/core/serde.js +6 -0
  2639. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/LICENSE +201 -0
  2640. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/README.md +11 -0
  2641. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js +372 -0
  2642. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js +5 -0
  2643. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js +7 -0
  2644. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js +5 -0
  2645. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js +8 -0
  2646. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js +10 -0
  2647. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js +77 -0
  2648. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js +134 -0
  2649. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/index.js +7 -0
  2650. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js +13 -0
  2651. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js +3 -0
  2652. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js +36 -0
  2653. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js +2 -0
  2654. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js +7 -0
  2655. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/types.js +1 -0
  2656. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js +17 -0
  2657. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js +19 -0
  2658. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js +25 -0
  2659. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/config/Endpoint.d.ts +7 -0
  2660. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts +13 -0
  2661. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointMode.d.ts +7 -0
  2662. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts +13 -0
  2663. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts +12 -0
  2664. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/fromContainerMetadata.d.ts +21 -0
  2665. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts +10 -0
  2666. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/index.d.ts +28 -0
  2667. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts +19 -0
  2668. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts +40 -0
  2669. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts +6 -0
  2670. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts +8 -0
  2671. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/retry.d.ts +10 -0
  2672. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts +7 -0
  2673. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts +13 -0
  2674. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts +7 -0
  2675. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts +13 -0
  2676. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts +12 -0
  2677. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts +21 -0
  2678. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts +10 -0
  2679. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/index.d.ts +28 -0
  2680. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts +19 -0
  2681. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts +40 -0
  2682. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts +6 -0
  2683. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts +8 -0
  2684. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts +10 -0
  2685. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/types.d.ts +7 -0
  2686. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts +6 -0
  2687. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts +21 -0
  2688. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts +16 -0
  2689. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/types.d.ts +7 -0
  2690. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts +6 -0
  2691. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts +21 -0
  2692. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts +16 -0
  2693. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/credential-provider-imds/package.json +70 -0
  2694. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/LICENSE +201 -0
  2695. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/README.md +11 -0
  2696. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +216 -0
  2697. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js +3 -0
  2698. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js +141 -0
  2699. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-es/index.js +2 -0
  2700. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js +11 -0
  2701. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +53 -0
  2702. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts +6 -0
  2703. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts +42 -0
  2704. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts +2 -0
  2705. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/request-timeout.d.ts +1 -0
  2706. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts +2 -0
  2707. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts +6 -0
  2708. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts +42 -0
  2709. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/index.d.ts +2 -0
  2710. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts +1 -0
  2711. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts +2 -0
  2712. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/fetch-http-handler/package.json +69 -0
  2713. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/hash-node/LICENSE +201 -0
  2714. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/hash-node/README.md +10 -0
  2715. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/hash-node/dist-cjs/index.js +42 -0
  2716. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/hash-node/dist-es/index.js +37 -0
  2717. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/hash-node/dist-types/index.d.ts +13 -0
  2718. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/hash-node/dist-types/ts3.4/index.d.ts +13 -0
  2719. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/hash-node/package.json +65 -0
  2720. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/LICENSE +201 -0
  2721. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/README.md +10 -0
  2722. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-cjs/index.js +10 -0
  2723. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-es/index.js +2 -0
  2724. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-es/invalidFunction.js +3 -0
  2725. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js +1 -0
  2726. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-types/index.d.ts +8 -0
  2727. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-types/invalidFunction.d.ts +4 -0
  2728. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-types/invalidProvider.d.ts +5 -0
  2729. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/index.d.ts +8 -0
  2730. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts +4 -0
  2731. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts +5 -0
  2732. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/invalid-dependency/package.json +61 -0
  2733. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-content-length/LICENSE +201 -0
  2734. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-content-length/README.md +4 -0
  2735. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-content-length/dist-cjs/index.js +46 -0
  2736. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-content-length/dist-es/index.js +39 -0
  2737. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-content-length/dist-types/index.d.ts +6 -0
  2738. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-content-length/dist-types/ts3.4/index.d.ts +6 -0
  2739. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-content-length/package.json +64 -0
  2740. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/LICENSE +201 -0
  2741. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/README.md +10 -0
  2742. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js +5 -0
  2743. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js +7 -0
  2744. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js +35 -0
  2745. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js +240 -0
  2746. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js +42 -0
  2747. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js +1 -0
  2748. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js +3 -0
  2749. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js +55 -0
  2750. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js +31 -0
  2751. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/index.js +2 -0
  2752. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js +10 -0
  2753. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js +36 -0
  2754. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js +18 -0
  2755. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/index.js +6 -0
  2756. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js +24 -0
  2757. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js +9 -0
  2758. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/index.js +1 -0
  2759. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js +37 -0
  2760. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-es/types.js +1 -0
  2761. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts +13 -0
  2762. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts +1 -0
  2763. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts +4 -0
  2764. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts +28 -0
  2765. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts +2 -0
  2766. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts +8 -0
  2767. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts +5 -0
  2768. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/endpointMiddleware.d.ts +10 -0
  2769. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/getEndpointPlugin.d.ts +11 -0
  2770. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts +18 -0
  2771. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts +109 -0
  2772. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts +32 -0
  2773. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/index.d.ts +4 -0
  2774. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/s3.d.ts +26 -0
  2775. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts +13 -0
  2776. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts +1 -0
  2777. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts +4 -0
  2778. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts +28 -0
  2779. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts +2 -0
  2780. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts +8 -0
  2781. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts +5 -0
  2782. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts +10 -0
  2783. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts +11 -0
  2784. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/index.d.ts +18 -0
  2785. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts +109 -0
  2786. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts +32 -0
  2787. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts +4 -0
  2788. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts +26 -0
  2789. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/types.d.ts +41 -0
  2790. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts +41 -0
  2791. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-endpoint/package.json +75 -0
  2792. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/LICENSE +201 -0
  2793. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/README.md +11 -0
  2794. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-cjs/index.js +358 -0
  2795. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js +5 -0
  2796. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js +7 -0
  2797. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/AdaptiveRetryStrategy.js +21 -0
  2798. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/StandardRetryStrategy.js +94 -0
  2799. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/configurations.js +51 -0
  2800. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/defaultRetryQuota.js +27 -0
  2801. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/delayDecider.js +2 -0
  2802. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/index.js +7 -0
  2803. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js +1 -0
  2804. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js +3 -0
  2805. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/omitRetryHeadersMiddleware.js +22 -0
  2806. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/retryDecider.js +7 -0
  2807. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js +112 -0
  2808. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/types.js +1 -0
  2809. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-es/util.js +9 -0
  2810. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts +23 -0
  2811. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/StandardRetryStrategy.d.ts +33 -0
  2812. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts +66 -0
  2813. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/defaultRetryQuota.d.ts +24 -0
  2814. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/delayDecider.d.ts +5 -0
  2815. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/index.d.ts +7 -0
  2816. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts +5 -0
  2817. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts +5 -0
  2818. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts +13 -0
  2819. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/retryDecider.d.ts +6 -0
  2820. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/retryMiddleware.d.ts +18 -0
  2821. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts +23 -0
  2822. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts +33 -0
  2823. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/configurations.d.ts +66 -0
  2824. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts +24 -0
  2825. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/delayDecider.d.ts +5 -0
  2826. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/index.d.ts +7 -0
  2827. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts +5 -0
  2828. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts +5 -0
  2829. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts +13 -0
  2830. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryDecider.d.ts +6 -0
  2831. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts +18 -0
  2832. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/types.d.ts +65 -0
  2833. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/ts3.4/util.d.ts +2 -0
  2834. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/types.d.ts +65 -0
  2835. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/dist-types/util.d.ts +2 -0
  2836. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-retry/package.json +79 -0
  2837. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/LICENSE +201 -0
  2838. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/README.md +4 -0
  2839. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-cjs/index.js +100 -0
  2840. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js +55 -0
  2841. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-es/index.js +3 -0
  2842. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js +22 -0
  2843. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js +14 -0
  2844. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts +6 -0
  2845. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-types/index.d.ts +3 -0
  2846. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts +24 -0
  2847. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts +6 -0
  2848. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts +6 -0
  2849. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-types/ts3.4/index.d.ts +3 -0
  2850. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts +24 -0
  2851. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts +6 -0
  2852. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-serde/package.json +65 -0
  2853. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/LICENSE +201 -0
  2854. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/README.md +78 -0
  2855. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-cjs/index.js +285 -0
  2856. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js +281 -0
  2857. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-es/index.js +1 -0
  2858. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-es/types.js +1 -0
  2859. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-types/MiddlewareStack.d.ts +5 -0
  2860. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-types/index.d.ts +1 -0
  2861. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts +5 -0
  2862. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-types/ts3.4/index.d.ts +1 -0
  2863. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-types/ts3.4/types.d.ts +22 -0
  2864. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/dist-types/types.d.ts +22 -0
  2865. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/middleware-stack/package.json +64 -0
  2866. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/LICENSE +201 -0
  2867. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/README.md +10 -0
  2868. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-cjs/index.js +62 -0
  2869. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-es/configLoader.js +9 -0
  2870. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js +14 -0
  2871. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js +23 -0
  2872. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js +3 -0
  2873. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js +12 -0
  2874. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-es/index.js +1 -0
  2875. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts +31 -0
  2876. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts +20 -0
  2877. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts +22 -0
  2878. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts +9 -0
  2879. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts +9 -0
  2880. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/index.d.ts +4 -0
  2881. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts +31 -0
  2882. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts +20 -0
  2883. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts +22 -0
  2884. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts +9 -0
  2885. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts +9 -0
  2886. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts +4 -0
  2887. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-config-provider/package.json +66 -0
  2888. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/LICENSE +201 -0
  2889. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/README.md +9 -0
  2890. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-cjs/index.js +724 -0
  2891. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/constants.js +1 -0
  2892. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +9 -0
  2893. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -0
  2894. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +216 -0
  2895. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +87 -0
  2896. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +32 -0
  2897. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +170 -0
  2898. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +21 -0
  2899. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +88 -0
  2900. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +36 -0
  2901. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +21 -0
  2902. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +22 -0
  2903. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +23 -0
  2904. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +8 -0
  2905. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +41 -0
  2906. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +21 -0
  2907. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/timing.js +4 -0
  2908. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +56 -0
  2909. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +5 -0
  2910. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +4 -0
  2911. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -0
  2912. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +46 -0
  2913. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +24 -0
  2914. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +12 -0
  2915. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +63 -0
  2916. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +13 -0
  2917. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +12 -0
  2918. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +2 -0
  2919. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +6 -0
  2920. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +6 -0
  2921. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +2 -0
  2922. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +5 -0
  2923. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +6 -0
  2924. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +13 -0
  2925. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +8 -0
  2926. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +5 -0
  2927. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +4 -0
  2928. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +3 -0
  2929. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +46 -0
  2930. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +24 -0
  2931. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +12 -0
  2932. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +63 -0
  2933. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +13 -0
  2934. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +12 -0
  2935. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +2 -0
  2936. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +6 -0
  2937. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +6 -0
  2938. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +2 -0
  2939. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +5 -0
  2940. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +6 -0
  2941. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +13 -0
  2942. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +8 -0
  2943. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +11 -0
  2944. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +11 -0
  2945. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler/package.json +68 -0
  2946. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/LICENSE +201 -0
  2947. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/README.md +10 -0
  2948. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-cjs/index.js +117 -0
  2949. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js +8 -0
  2950. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-es/ProviderError.js +23 -0
  2951. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js +8 -0
  2952. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-es/chain.js +21 -0
  2953. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-es/fromStatic.js +1 -0
  2954. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-es/index.js +6 -0
  2955. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-es/memoize.js +45 -0
  2956. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts +31 -0
  2957. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts +39 -0
  2958. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts +31 -0
  2959. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/chain.d.ts +13 -0
  2960. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts +5 -0
  2961. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/index.d.ts +24 -0
  2962. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/memoize.d.ts +40 -0
  2963. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts +31 -0
  2964. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts +39 -0
  2965. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts +31 -0
  2966. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts +13 -0
  2967. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts +5 -0
  2968. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts +24 -0
  2969. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts +40 -0
  2970. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/property-provider/package.json +61 -0
  2971. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/LICENSE +201 -0
  2972. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/README.md +4 -0
  2973. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-cjs/index.js +169 -0
  2974. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/Field.js +26 -0
  2975. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/Fields.js +20 -0
  2976. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js +21 -0
  2977. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/extensions/index.js +1 -0
  2978. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/httpHandler.js +1 -0
  2979. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/httpRequest.js +64 -0
  2980. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/httpResponse.js +18 -0
  2981. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/index.js +8 -0
  2982. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js +4 -0
  2983. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-es/types.js +1 -0
  2984. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/Field.d.ts +50 -0
  2985. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts +44 -0
  2986. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts +33 -0
  2987. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts +1 -0
  2988. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts +35 -0
  2989. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts +56 -0
  2990. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts +29 -0
  2991. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/index.d.ts +8 -0
  2992. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts +1 -0
  2993. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts +50 -0
  2994. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts +44 -0
  2995. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts +33 -0
  2996. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts +1 -0
  2997. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts +35 -0
  2998. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts +56 -0
  2999. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts +29 -0
  3000. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts +8 -0
  3001. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts +1 -0
  3002. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts +21 -0
  3003. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/dist-types/types.d.ts +21 -0
  3004. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/protocol-http/package.json +62 -0
  3005. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/LICENSE +201 -0
  3006. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/README.md +10 -0
  3007. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-cjs/index.js +589 -0
  3008. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js +7 -0
  3009. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/client.js +45 -0
  3010. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js +1 -0
  3011. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/command.js +124 -0
  3012. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/constants.js +1 -0
  3013. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js +21 -0
  3014. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/default-error-handler.js +22 -0
  3015. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/defaults-mode.js +26 -0
  3016. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js +6 -0
  3017. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/exceptions.js +50 -0
  3018. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js +1 -0
  3019. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js +30 -0
  3020. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js +9 -0
  3021. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/extensions/index.js +1 -0
  3022. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js +15 -0
  3023. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/get-array-if-single-item.js +1 -0
  3024. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js +12 -0
  3025. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/index.js +20 -0
  3026. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js +3 -0
  3027. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/object-mapping.js +92 -0
  3028. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/resolve-path.js +1 -0
  3029. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/schemaLogFilter.js +34 -0
  3030. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/ser-utils.js +14 -0
  3031. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-es/serde-json.js +19 -0
  3032. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/NoOpLogger.d.ts +11 -0
  3033. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/client.d.ts +61 -0
  3034. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts +5 -0
  3035. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/command.d.ts +119 -0
  3036. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/constants.d.ts +4 -0
  3037. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts +11 -0
  3038. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts +15 -0
  3039. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts +28 -0
  3040. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts +8 -0
  3041. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts +42 -0
  3042. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts +5 -0
  3043. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts +24 -0
  3044. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts +38 -0
  3045. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts +1 -0
  3046. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts +18 -0
  3047. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts +7 -0
  3048. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts +7 -0
  3049. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/index.d.ts +21 -0
  3050. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts +5 -0
  3051. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts +162 -0
  3052. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts +5 -0
  3053. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/schemaLogFilter.d.ts +9 -0
  3054. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts +15 -0
  3055. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts +12 -0
  3056. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts +11 -0
  3057. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts +61 -0
  3058. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts +5 -0
  3059. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts +119 -0
  3060. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/constants.d.ts +4 -0
  3061. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts +11 -0
  3062. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/default-error-handler.d.ts +15 -0
  3063. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/defaults-mode.d.ts +28 -0
  3064. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts +8 -0
  3065. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/exceptions.d.ts +42 -0
  3066. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts +5 -0
  3067. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts +24 -0
  3068. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +38 -0
  3069. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/index.d.ts +1 -0
  3070. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  3071. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts +7 -0
  3072. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts +7 -0
  3073. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts +21 -0
  3074. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts +5 -0
  3075. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/object-mapping.d.ts +178 -0
  3076. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts +5 -0
  3077. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts +9 -0
  3078. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/ser-utils.d.ts +15 -0
  3079. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/dist-types/ts3.4/serde-json.d.ts +12 -0
  3080. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/smithy-client/package.json +68 -0
  3081. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/LICENSE +201 -0
  3082. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/README.md +115 -0
  3083. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  3084. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  3085. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/abort.js +1 -0
  3086. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  3087. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  3088. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  3089. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  3090. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  3091. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  3092. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  3093. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  3094. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  3095. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/client.js +1 -0
  3096. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/command.js +1 -0
  3097. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  3098. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  3099. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  3100. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  3101. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  3102. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  3103. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/encode.js +1 -0
  3104. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  3105. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  3106. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  3107. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  3108. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  3109. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  3110. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  3111. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  3112. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  3113. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  3114. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  3115. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  3116. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  3117. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  3118. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  3119. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  3120. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/http.js +5 -0
  3121. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  3122. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  3123. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  3124. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  3125. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  3126. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/index.js +42 -0
  3127. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/logger.js +1 -0
  3128. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  3129. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  3130. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/profile.js +6 -0
  3131. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/response.js +1 -0
  3132. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/retry.js +1 -0
  3133. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  3134. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  3135. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  3136. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  3137. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  3138. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/serde.js +1 -0
  3139. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  3140. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/signature.js +1 -0
  3141. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/stream.js +1 -0
  3142. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  3143. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  3144. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  3145. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  3146. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  3147. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  3148. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  3149. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  3150. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  3151. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  3152. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/uri.js +1 -0
  3153. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/util.js +1 -0
  3154. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  3155. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  3156. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  3157. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  3158. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  3159. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  3160. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  3161. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  3162. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  3163. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  3164. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  3165. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  3166. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  3167. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  3168. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  3169. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  3170. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  3171. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  3172. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  3173. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  3174. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  3175. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  3176. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  3177. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  3178. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  3179. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  3180. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  3181. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  3182. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  3183. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  3184. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  3185. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  3186. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  3187. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  3188. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  3189. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  3190. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  3191. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  3192. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  3193. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  3194. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  3195. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  3196. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  3197. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  3198. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  3199. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  3200. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  3201. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  3202. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  3203. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  3204. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  3205. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  3206. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  3207. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  3208. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  3209. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  3210. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  3211. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  3212. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  3213. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  3214. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  3215. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  3216. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  3217. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  3218. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  3219. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  3220. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  3221. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  3222. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  3223. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  3224. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  3225. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  3226. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  3227. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  3228. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  3229. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  3230. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  3231. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  3232. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  3233. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  3234. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  3235. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  3236. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  3237. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  3238. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  3239. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  3240. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  3241. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  3242. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  3243. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  3244. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  3245. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  3246. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  3247. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  3248. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  3249. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  3250. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  3251. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  3252. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  3253. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  3254. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  3255. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  3256. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  3257. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  3258. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  3259. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  3260. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  3261. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  3262. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  3263. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  3264. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  3265. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  3266. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  3267. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  3268. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  3269. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  3270. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  3271. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  3272. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  3273. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  3274. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  3275. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  3276. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  3277. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  3278. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  3279. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  3280. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  3281. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  3282. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  3283. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  3284. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  3285. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  3286. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  3287. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  3288. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  3289. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  3290. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  3291. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  3292. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  3293. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  3294. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  3295. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  3296. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  3297. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types/package.json +61 -0
  3298. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/url-parser/LICENSE +201 -0
  3299. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/url-parser/README.md +10 -0
  3300. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/url-parser/dist-cjs/index.js +23 -0
  3301. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/url-parser/dist-es/index.js +18 -0
  3302. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/url-parser/dist-types/index.d.ts +5 -0
  3303. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/url-parser/dist-types/ts3.4/index.d.ts +5 -0
  3304. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/url-parser/package.json +62 -0
  3305. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/LICENSE +201 -0
  3306. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/README.md +10 -0
  3307. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/constants.js +4 -0
  3308. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/index.js +12 -0
  3309. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js +34 -0
  3310. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js +23 -0
  3311. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js +1 -0
  3312. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-es/index.js +1 -0
  3313. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js +30 -0
  3314. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js +19 -0
  3315. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-types/constants.d.ts +12 -0
  3316. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-types/index.d.ts +4 -0
  3317. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts +17 -0
  3318. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts +16 -0
  3319. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts +12 -0
  3320. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts +4 -0
  3321. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts +17 -0
  3322. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts +16 -0
  3323. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-browser/package.json +66 -0
  3324. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/LICENSE +201 -0
  3325. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/README.md +10 -0
  3326. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js +74 -0
  3327. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-es/constants.js +6 -0
  3328. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-es/defaultsModeConfig.js +11 -0
  3329. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-es/index.js +1 -0
  3330. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js +52 -0
  3331. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-types/constants.d.ts +24 -0
  3332. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts +6 -0
  3333. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-types/index.d.ts +4 -0
  3334. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts +17 -0
  3335. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts +24 -0
  3336. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts +6 -0
  3337. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/index.d.ts +4 -0
  3338. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts +17 -0
  3339. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-defaults-mode-node/package.json +67 -0
  3340. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/LICENSE +201 -0
  3341. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/README.md +12 -0
  3342. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-cjs/index.js +15 -0
  3343. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js +2 -0
  3344. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-es/index.js +2 -0
  3345. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js +6 -0
  3346. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts +5 -0
  3347. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-types/index.d.ts +8 -0
  3348. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts +7 -0
  3349. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts +5 -0
  3350. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts +8 -0
  3351. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts +7 -0
  3352. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-middleware/package.json +67 -0
  3353. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/LICENSE +201 -0
  3354. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/README.md +78 -0
  3355. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-cjs/index.js +278 -0
  3356. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js +27 -0
  3357. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js +19 -0
  3358. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js +109 -0
  3359. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js +67 -0
  3360. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/config.js +7 -0
  3361. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/constants.js +9 -0
  3362. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js +14 -0
  3363. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js +11 -0
  3364. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/index.js +7 -0
  3365. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-es/types.js +1 -0
  3366. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts +33 -0
  3367. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ConfiguredRetryStrategy.d.ts +32 -0
  3368. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts +49 -0
  3369. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts +26 -0
  3370. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/config.d.ts +20 -0
  3371. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/constants.d.ts +59 -0
  3372. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts +5 -0
  3373. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/defaultRetryToken.d.ts +9 -0
  3374. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/index.d.ts +7 -0
  3375. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts +33 -0
  3376. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts +32 -0
  3377. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts +49 -0
  3378. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts +26 -0
  3379. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/config.d.ts +20 -0
  3380. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/constants.d.ts +59 -0
  3381. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts +5 -0
  3382. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts +9 -0
  3383. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/index.d.ts +7 -0
  3384. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/ts3.4/types.d.ts +19 -0
  3385. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/dist-types/types.d.ts +19 -0
  3386. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-retry/package.json +71 -0
  3387. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/LICENSE +201 -0
  3388. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/README.md +6 -0
  3389. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/ByteArrayCollector.js +36 -0
  3390. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js +7 -0
  3391. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js +53 -0
  3392. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js +39 -0
  3393. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js +12 -0
  3394. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js +60 -0
  3395. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js +103 -0
  3396. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js +31 -0
  3397. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js +30 -0
  3398. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js +34 -0
  3399. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/headStream.js +42 -0
  3400. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/index.js +84 -0
  3401. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js +68 -0
  3402. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js +54 -0
  3403. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js +10 -0
  3404. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/splitStream.js +16 -0
  3405. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js +10 -0
  3406. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/ByteArrayCollector.js +32 -0
  3407. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js +23 -0
  3408. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js +3 -0
  3409. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js +49 -0
  3410. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js +35 -0
  3411. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js +9 -0
  3412. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js +57 -0
  3413. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js +95 -0
  3414. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js +27 -0
  3415. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.js +26 -0
  3416. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/headStream.browser.js +31 -0
  3417. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/headStream.js +38 -0
  3418. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/index.js +9 -0
  3419. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js +64 -0
  3420. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js +50 -0
  3421. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/splitStream.browser.js +7 -0
  3422. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/splitStream.js +13 -0
  3423. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-es/stream-type-check.js +5 -0
  3424. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ByteArrayCollector.d.ts +13 -0
  3425. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts +22 -0
  3426. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts +37 -0
  3427. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts +60 -0
  3428. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts +15 -0
  3429. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts +11 -0
  3430. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/createBufferedReadable.d.ts +12 -0
  3431. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts +50 -0
  3432. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts +5 -0
  3433. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts +6 -0
  3434. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/headStream.browser.d.ts +8 -0
  3435. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/headStream.d.ts +9 -0
  3436. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/index.d.ts +9 -0
  3437. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.browser.d.ts +7 -0
  3438. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts +8 -0
  3439. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/splitStream.browser.d.ts +5 -0
  3440. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/splitStream.d.ts +8 -0
  3441. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts +16 -0
  3442. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts +13 -0
  3443. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts +22 -0
  3444. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts +37 -0
  3445. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts +60 -0
  3446. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts +15 -0
  3447. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts +11 -0
  3448. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts +12 -0
  3449. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts +54 -0
  3450. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts +5 -0
  3451. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts +6 -0
  3452. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.browser.d.ts +8 -0
  3453. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.d.ts +9 -0
  3454. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts +9 -0
  3455. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts +7 -0
  3456. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts +8 -0
  3457. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.browser.d.ts +8 -0
  3458. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.d.ts +14 -0
  3459. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts +16 -0
  3460. package/node_modules/@aws-sdk/token-providers/node_modules/@smithy/util-stream/package.json +99 -0
  3461. package/node_modules/@aws-sdk/token-providers/package.json +7 -7
  3462. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/LICENSE +201 -0
  3463. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/README.md +115 -0
  3464. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  3465. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  3466. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/abort.js +1 -0
  3467. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  3468. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  3469. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  3470. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  3471. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  3472. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  3473. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  3474. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  3475. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  3476. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/client.js +1 -0
  3477. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/command.js +1 -0
  3478. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  3479. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  3480. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  3481. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  3482. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  3483. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  3484. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/encode.js +1 -0
  3485. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  3486. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  3487. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  3488. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  3489. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  3490. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  3491. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  3492. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  3493. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  3494. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  3495. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  3496. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  3497. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  3498. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  3499. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  3500. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  3501. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/http.js +5 -0
  3502. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  3503. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  3504. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  3505. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  3506. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  3507. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/index.js +42 -0
  3508. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/logger.js +1 -0
  3509. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  3510. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  3511. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/profile.js +6 -0
  3512. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/response.js +1 -0
  3513. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/retry.js +1 -0
  3514. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  3515. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  3516. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  3517. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  3518. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  3519. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/serde.js +1 -0
  3520. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  3521. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/signature.js +1 -0
  3522. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/stream.js +1 -0
  3523. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  3524. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  3525. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  3526. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  3527. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  3528. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  3529. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  3530. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  3531. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  3532. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  3533. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/uri.js +1 -0
  3534. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/util.js +1 -0
  3535. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  3536. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  3537. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  3538. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  3539. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  3540. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  3541. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  3542. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  3543. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  3544. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  3545. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  3546. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  3547. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  3548. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  3549. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  3550. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  3551. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  3552. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  3553. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  3554. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  3555. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  3556. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  3557. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  3558. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  3559. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  3560. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  3561. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  3562. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  3563. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  3564. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  3565. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  3566. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  3567. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  3568. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  3569. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  3570. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  3571. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  3572. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  3573. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  3574. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  3575. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  3576. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  3577. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  3578. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  3579. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  3580. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  3581. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  3582. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  3583. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  3584. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  3585. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  3586. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  3587. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  3588. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  3589. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  3590. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  3591. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  3592. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  3593. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  3594. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  3595. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  3596. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  3597. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  3598. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  3599. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  3600. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  3601. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  3602. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  3603. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  3604. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  3605. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  3606. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  3607. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  3608. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  3609. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  3610. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  3611. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  3612. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  3613. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  3614. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  3615. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  3616. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  3617. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  3618. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  3619. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  3620. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  3621. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  3622. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  3623. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  3624. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  3625. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  3626. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  3627. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  3628. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  3629. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  3630. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  3631. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  3632. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  3633. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  3634. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  3635. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  3636. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  3637. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  3638. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  3639. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  3640. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  3641. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  3642. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  3643. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  3644. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  3645. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  3646. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  3647. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  3648. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  3649. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  3650. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  3651. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  3652. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  3653. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  3654. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  3655. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  3656. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  3657. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  3658. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  3659. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  3660. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  3661. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  3662. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  3663. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  3664. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  3665. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  3666. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  3667. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  3668. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  3669. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  3670. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  3671. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  3672. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  3673. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  3674. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  3675. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  3676. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  3677. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  3678. package/node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types/package.json +61 -0
  3679. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  3680. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/LICENSE +201 -0
  3681. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/README.md +115 -0
  3682. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  3683. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  3684. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/abort.js +1 -0
  3685. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  3686. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  3687. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  3688. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  3689. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  3690. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  3691. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  3692. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  3693. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  3694. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/client.js +1 -0
  3695. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/command.js +1 -0
  3696. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  3697. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  3698. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  3699. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  3700. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  3701. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  3702. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/encode.js +1 -0
  3703. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  3704. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  3705. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  3706. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  3707. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  3708. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  3709. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  3710. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  3711. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  3712. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  3713. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  3714. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  3715. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  3716. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  3717. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  3718. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  3719. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/http.js +5 -0
  3720. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  3721. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  3722. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  3723. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  3724. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  3725. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/index.js +42 -0
  3726. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/logger.js +1 -0
  3727. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  3728. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  3729. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/profile.js +6 -0
  3730. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/response.js +1 -0
  3731. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/retry.js +1 -0
  3732. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  3733. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  3734. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  3735. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  3736. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  3737. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/serde.js +1 -0
  3738. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  3739. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/signature.js +1 -0
  3740. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/stream.js +1 -0
  3741. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  3742. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  3743. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  3744. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  3745. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  3746. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  3747. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  3748. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  3749. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  3750. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  3751. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/uri.js +1 -0
  3752. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/util.js +1 -0
  3753. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  3754. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  3755. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  3756. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  3757. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  3758. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  3759. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  3760. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  3761. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  3762. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  3763. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  3764. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  3765. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  3766. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  3767. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  3768. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  3769. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  3770. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  3771. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  3772. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  3773. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  3774. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  3775. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  3776. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  3777. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  3778. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  3779. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  3780. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  3781. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  3782. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  3783. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  3784. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  3785. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  3786. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  3787. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  3788. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  3789. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  3790. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  3791. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  3792. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  3793. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  3794. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  3795. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  3796. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  3797. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  3798. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  3799. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  3800. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  3801. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  3802. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  3803. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  3804. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  3805. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  3806. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  3807. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  3808. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  3809. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  3810. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  3811. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  3812. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  3813. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  3814. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  3815. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  3816. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  3817. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  3818. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  3819. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  3820. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  3821. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  3822. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  3823. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  3824. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  3825. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  3826. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  3827. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  3828. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  3829. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  3830. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  3831. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  3832. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  3833. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  3834. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  3835. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  3836. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  3837. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  3838. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  3839. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  3840. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  3841. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  3842. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  3843. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  3844. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  3845. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  3846. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  3847. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  3848. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  3849. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  3850. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  3851. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  3852. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  3853. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  3854. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  3855. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  3856. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  3857. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  3858. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  3859. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  3860. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  3861. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  3862. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  3863. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  3864. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  3865. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  3866. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  3867. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  3868. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  3869. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  3870. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  3871. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  3872. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  3873. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  3874. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  3875. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  3876. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  3877. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  3878. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  3879. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  3880. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  3881. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  3882. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  3883. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  3884. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  3885. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  3886. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  3887. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  3888. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  3889. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  3890. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  3891. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  3892. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  3893. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  3894. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  3895. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  3896. package/node_modules/@smithy/abort-controller/node_modules/@smithy/types/package.json +61 -0
  3897. package/node_modules/@smithy/abort-controller/package.json +2 -2
  3898. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/LICENSE +201 -0
  3899. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/README.md +115 -0
  3900. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  3901. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  3902. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/abort.js +1 -0
  3903. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  3904. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  3905. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  3906. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  3907. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  3908. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  3909. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  3910. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  3911. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  3912. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/client.js +1 -0
  3913. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/command.js +1 -0
  3914. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  3915. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  3916. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  3917. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  3918. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  3919. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  3920. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/encode.js +1 -0
  3921. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  3922. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  3923. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  3924. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  3925. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  3926. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  3927. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  3928. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  3929. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  3930. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  3931. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  3932. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  3933. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  3934. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  3935. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  3936. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  3937. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/http.js +5 -0
  3938. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  3939. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  3940. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  3941. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  3942. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  3943. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/index.js +42 -0
  3944. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/logger.js +1 -0
  3945. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  3946. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  3947. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/profile.js +6 -0
  3948. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/response.js +1 -0
  3949. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/retry.js +1 -0
  3950. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  3951. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  3952. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  3953. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  3954. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  3955. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/serde.js +1 -0
  3956. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  3957. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/signature.js +1 -0
  3958. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/stream.js +1 -0
  3959. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  3960. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  3961. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  3962. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  3963. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  3964. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  3965. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  3966. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  3967. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  3968. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  3969. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/uri.js +1 -0
  3970. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/util.js +1 -0
  3971. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  3972. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  3973. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  3974. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  3975. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  3976. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  3977. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  3978. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  3979. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  3980. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  3981. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  3982. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  3983. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  3984. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  3985. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  3986. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  3987. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  3988. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  3989. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  3990. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  3991. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  3992. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  3993. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  3994. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  3995. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  3996. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  3997. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  3998. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  3999. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  4000. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  4001. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  4002. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4003. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  4004. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  4005. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  4006. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  4007. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  4008. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  4009. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  4010. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  4011. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  4012. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  4013. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  4014. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  4015. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  4016. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  4017. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  4018. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  4019. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  4020. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  4021. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  4022. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  4023. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  4024. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  4025. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  4026. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  4027. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  4028. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  4029. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  4030. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4031. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4032. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4033. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  4034. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  4035. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  4036. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  4037. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  4038. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  4039. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  4040. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  4041. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  4042. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  4043. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  4044. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4045. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  4046. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  4047. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  4048. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  4049. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  4050. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  4051. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  4052. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  4053. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  4054. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  4055. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  4056. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  4057. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  4058. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  4059. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  4060. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  4061. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  4062. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  4063. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  4064. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  4065. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  4066. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  4067. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  4068. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  4069. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  4070. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4071. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  4072. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  4073. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  4074. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  4075. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  4076. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  4077. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  4078. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  4079. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  4080. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  4081. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  4082. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  4083. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  4084. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  4085. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  4086. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  4087. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  4088. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  4089. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  4090. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  4091. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  4092. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  4093. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  4094. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  4095. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  4096. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  4097. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  4098. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4099. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4100. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4101. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  4102. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  4103. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  4104. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  4105. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  4106. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  4107. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  4108. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  4109. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  4110. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  4111. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  4112. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  4113. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  4114. package/node_modules/@smithy/querystring-builder/node_modules/@smithy/types/package.json +61 -0
  4115. package/node_modules/@smithy/querystring-builder/package.json +2 -2
  4116. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/LICENSE +201 -0
  4117. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/README.md +115 -0
  4118. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  4119. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  4120. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/abort.js +1 -0
  4121. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  4122. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  4123. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  4124. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  4125. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  4126. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  4127. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  4128. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  4129. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  4130. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/client.js +1 -0
  4131. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/command.js +1 -0
  4132. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  4133. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  4134. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  4135. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  4136. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  4137. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  4138. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/encode.js +1 -0
  4139. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  4140. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  4141. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  4142. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  4143. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  4144. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  4145. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  4146. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  4147. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  4148. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  4149. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  4150. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  4151. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  4152. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  4153. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  4154. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  4155. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/http.js +5 -0
  4156. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  4157. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  4158. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  4159. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  4160. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  4161. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/index.js +42 -0
  4162. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/logger.js +1 -0
  4163. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  4164. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  4165. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/profile.js +6 -0
  4166. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/response.js +1 -0
  4167. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/retry.js +1 -0
  4168. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  4169. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  4170. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  4171. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  4172. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  4173. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/serde.js +1 -0
  4174. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  4175. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/signature.js +1 -0
  4176. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/stream.js +1 -0
  4177. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  4178. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  4179. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  4180. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  4181. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  4182. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  4183. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  4184. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  4185. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  4186. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  4187. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/uri.js +1 -0
  4188. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/util.js +1 -0
  4189. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  4190. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  4191. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  4192. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  4193. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  4194. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4195. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  4196. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  4197. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  4198. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  4199. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  4200. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  4201. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  4202. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  4203. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  4204. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  4205. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  4206. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  4207. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  4208. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  4209. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  4210. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  4211. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  4212. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  4213. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  4214. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  4215. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  4216. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  4217. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  4218. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  4219. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  4220. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4221. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  4222. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  4223. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  4224. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  4225. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  4226. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  4227. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  4228. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  4229. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  4230. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  4231. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  4232. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  4233. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  4234. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  4235. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  4236. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  4237. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  4238. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  4239. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  4240. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  4241. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  4242. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  4243. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  4244. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  4245. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  4246. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  4247. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  4248. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4249. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4250. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4251. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  4252. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  4253. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  4254. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  4255. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  4256. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  4257. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  4258. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  4259. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  4260. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  4261. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  4262. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4263. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  4264. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  4265. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  4266. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  4267. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  4268. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  4269. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  4270. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  4271. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  4272. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  4273. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  4274. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  4275. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  4276. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  4277. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  4278. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  4279. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  4280. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  4281. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  4282. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  4283. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  4284. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  4285. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  4286. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  4287. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  4288. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4289. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  4290. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  4291. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  4292. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  4293. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  4294. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  4295. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  4296. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  4297. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  4298. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  4299. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  4300. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  4301. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  4302. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  4303. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  4304. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  4305. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  4306. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  4307. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  4308. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  4309. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  4310. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  4311. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  4312. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  4313. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  4314. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  4315. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  4316. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4317. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4318. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4319. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  4320. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  4321. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  4322. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  4323. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  4324. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  4325. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  4326. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  4327. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  4328. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  4329. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  4330. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  4331. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  4332. package/node_modules/@smithy/querystring-parser/node_modules/@smithy/types/package.json +61 -0
  4333. package/node_modules/@smithy/querystring-parser/package.json +2 -2
  4334. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/LICENSE +201 -0
  4335. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/README.md +115 -0
  4336. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  4337. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  4338. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/abort.js +1 -0
  4339. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  4340. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  4341. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  4342. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  4343. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  4344. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  4345. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  4346. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  4347. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  4348. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/client.js +1 -0
  4349. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/command.js +1 -0
  4350. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  4351. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  4352. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  4353. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  4354. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  4355. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  4356. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/encode.js +1 -0
  4357. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  4358. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  4359. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  4360. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  4361. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  4362. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  4363. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  4364. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  4365. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  4366. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  4367. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  4368. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  4369. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  4370. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  4371. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  4372. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  4373. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/http.js +5 -0
  4374. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  4375. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  4376. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  4377. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  4378. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  4379. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/index.js +42 -0
  4380. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/logger.js +1 -0
  4381. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  4382. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  4383. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/profile.js +6 -0
  4384. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/response.js +1 -0
  4385. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/retry.js +1 -0
  4386. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  4387. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  4388. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  4389. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  4390. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  4391. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/serde.js +1 -0
  4392. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  4393. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/signature.js +1 -0
  4394. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/stream.js +1 -0
  4395. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  4396. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  4397. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  4398. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  4399. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  4400. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  4401. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  4402. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  4403. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  4404. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  4405. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/uri.js +1 -0
  4406. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/util.js +1 -0
  4407. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  4408. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  4409. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  4410. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  4411. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  4412. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4413. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  4414. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  4415. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  4416. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  4417. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  4418. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  4419. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  4420. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  4421. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  4422. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  4423. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  4424. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  4425. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  4426. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  4427. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  4428. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  4429. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  4430. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  4431. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  4432. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  4433. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  4434. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  4435. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  4436. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  4437. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  4438. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4439. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  4440. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  4441. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  4442. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  4443. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  4444. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  4445. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  4446. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  4447. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  4448. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  4449. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  4450. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  4451. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  4452. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  4453. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  4454. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  4455. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  4456. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  4457. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  4458. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  4459. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  4460. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  4461. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  4462. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  4463. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  4464. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  4465. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  4466. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4467. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4468. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4469. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  4470. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  4471. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  4472. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  4473. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  4474. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  4475. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  4476. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  4477. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  4478. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  4479. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  4480. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4481. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  4482. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  4483. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  4484. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  4485. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  4486. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  4487. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  4488. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  4489. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  4490. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  4491. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  4492. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  4493. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  4494. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  4495. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  4496. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  4497. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  4498. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  4499. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  4500. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  4501. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  4502. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  4503. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  4504. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  4505. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  4506. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4507. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  4508. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  4509. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  4510. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  4511. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  4512. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  4513. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  4514. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  4515. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  4516. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  4517. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  4518. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  4519. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  4520. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  4521. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  4522. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  4523. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  4524. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  4525. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  4526. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  4527. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  4528. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  4529. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  4530. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  4531. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  4532. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  4533. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  4534. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4535. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4536. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4537. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  4538. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  4539. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  4540. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  4541. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  4542. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  4543. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  4544. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  4545. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  4546. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  4547. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  4548. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  4549. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  4550. package/node_modules/@smithy/service-error-classification/node_modules/@smithy/types/package.json +61 -0
  4551. package/node_modules/@smithy/service-error-classification/package.json +2 -2
  4552. package/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js +2 -1
  4553. package/node_modules/@smithy/shared-ini-file-loader/dist-es/constants.js +1 -0
  4554. package/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigData.js +1 -1
  4555. package/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSharedConfigFiles.js +1 -1
  4556. package/node_modules/@smithy/shared-ini-file-loader/dist-es/parseIni.js +1 -1
  4557. package/node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts +4 -0
  4558. package/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSharedConfigFiles.d.ts +1 -4
  4559. package/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/constants.d.ts +4 -0
  4560. package/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSharedConfigFiles.d.ts +1 -4
  4561. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/LICENSE +201 -0
  4562. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/README.md +115 -0
  4563. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  4564. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  4565. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/abort.js +1 -0
  4566. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  4567. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  4568. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  4569. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  4570. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  4571. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  4572. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  4573. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  4574. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  4575. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/client.js +1 -0
  4576. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/command.js +1 -0
  4577. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  4578. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  4579. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  4580. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  4581. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  4582. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  4583. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/encode.js +1 -0
  4584. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  4585. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  4586. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  4587. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  4588. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  4589. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  4590. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  4591. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  4592. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  4593. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  4594. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  4595. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  4596. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  4597. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  4598. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  4599. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  4600. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/http.js +5 -0
  4601. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  4602. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  4603. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  4604. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  4605. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  4606. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/index.js +42 -0
  4607. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/logger.js +1 -0
  4608. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  4609. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  4610. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/profile.js +6 -0
  4611. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/response.js +1 -0
  4612. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/retry.js +1 -0
  4613. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  4614. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  4615. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  4616. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  4617. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  4618. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/serde.js +1 -0
  4619. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  4620. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/signature.js +1 -0
  4621. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/stream.js +1 -0
  4622. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  4623. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  4624. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  4625. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  4626. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  4627. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  4628. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  4629. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  4630. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  4631. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  4632. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/uri.js +1 -0
  4633. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/util.js +1 -0
  4634. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  4635. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  4636. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  4637. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  4638. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  4639. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4640. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  4641. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  4642. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  4643. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  4644. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  4645. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  4646. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  4647. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  4648. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  4649. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  4650. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  4651. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  4652. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  4653. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  4654. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  4655. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  4656. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  4657. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  4658. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  4659. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  4660. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  4661. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  4662. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  4663. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  4664. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  4665. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4666. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  4667. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  4668. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  4669. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  4670. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  4671. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  4672. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  4673. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  4674. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  4675. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  4676. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  4677. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  4678. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  4679. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  4680. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  4681. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  4682. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  4683. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  4684. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  4685. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  4686. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  4687. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  4688. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  4689. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  4690. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  4691. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  4692. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  4693. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4694. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4695. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4696. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  4697. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  4698. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  4699. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  4700. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  4701. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  4702. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  4703. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  4704. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  4705. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  4706. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  4707. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4708. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  4709. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  4710. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  4711. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  4712. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  4713. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  4714. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  4715. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  4716. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  4717. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  4718. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  4719. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  4720. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  4721. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  4722. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  4723. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  4724. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  4725. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  4726. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  4727. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  4728. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  4729. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  4730. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  4731. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  4732. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  4733. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4734. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  4735. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  4736. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  4737. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  4738. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  4739. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  4740. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  4741. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  4742. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  4743. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  4744. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  4745. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  4746. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  4747. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  4748. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  4749. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  4750. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  4751. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  4752. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  4753. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  4754. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  4755. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  4756. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  4757. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  4758. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  4759. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  4760. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  4761. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4762. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4763. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4764. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  4765. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  4766. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  4767. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  4768. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  4769. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  4770. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  4771. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  4772. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  4773. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  4774. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  4775. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  4776. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  4777. package/node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types/package.json +61 -0
  4778. package/node_modules/@smithy/shared-ini-file-loader/package.json +2 -2
  4779. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/LICENSE +201 -0
  4780. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/README.md +4 -0
  4781. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-cjs/index.js +169 -0
  4782. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/Field.js +26 -0
  4783. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/Fields.js +20 -0
  4784. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js +21 -0
  4785. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/extensions/index.js +1 -0
  4786. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/httpHandler.js +1 -0
  4787. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/httpRequest.js +64 -0
  4788. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/httpResponse.js +18 -0
  4789. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/index.js +8 -0
  4790. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js +4 -0
  4791. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-es/types.js +1 -0
  4792. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/Field.d.ts +50 -0
  4793. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts +44 -0
  4794. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts +33 -0
  4795. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts +1 -0
  4796. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts +35 -0
  4797. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts +56 -0
  4798. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts +29 -0
  4799. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/index.d.ts +8 -0
  4800. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts +1 -0
  4801. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts +50 -0
  4802. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts +44 -0
  4803. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts +33 -0
  4804. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts +1 -0
  4805. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts +35 -0
  4806. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts +56 -0
  4807. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts +29 -0
  4808. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts +8 -0
  4809. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts +1 -0
  4810. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts +21 -0
  4811. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/dist-types/types.d.ts +21 -0
  4812. package/node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http/package.json +62 -0
  4813. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/LICENSE +201 -0
  4814. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/README.md +115 -0
  4815. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  4816. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  4817. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/abort.js +1 -0
  4818. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  4819. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  4820. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  4821. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  4822. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  4823. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  4824. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  4825. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  4826. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  4827. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/client.js +1 -0
  4828. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/command.js +1 -0
  4829. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  4830. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  4831. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  4832. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  4833. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  4834. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  4835. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/encode.js +1 -0
  4836. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  4837. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  4838. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  4839. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  4840. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  4841. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  4842. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  4843. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  4844. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  4845. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  4846. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  4847. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  4848. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  4849. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  4850. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  4851. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  4852. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/http.js +5 -0
  4853. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  4854. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  4855. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  4856. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  4857. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  4858. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/index.js +42 -0
  4859. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/logger.js +1 -0
  4860. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  4861. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  4862. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/profile.js +6 -0
  4863. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/response.js +1 -0
  4864. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/retry.js +1 -0
  4865. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  4866. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  4867. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  4868. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  4869. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  4870. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/serde.js +1 -0
  4871. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  4872. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/signature.js +1 -0
  4873. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/stream.js +1 -0
  4874. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  4875. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  4876. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  4877. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  4878. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  4879. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  4880. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  4881. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  4882. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  4883. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  4884. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/uri.js +1 -0
  4885. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/util.js +1 -0
  4886. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  4887. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  4888. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  4889. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  4890. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  4891. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4892. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  4893. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  4894. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  4895. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  4896. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  4897. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  4898. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  4899. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  4900. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  4901. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  4902. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  4903. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  4904. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  4905. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  4906. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  4907. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  4908. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  4909. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  4910. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  4911. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  4912. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  4913. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  4914. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  4915. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  4916. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  4917. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4918. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  4919. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  4920. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  4921. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  4922. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  4923. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  4924. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  4925. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  4926. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  4927. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  4928. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  4929. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  4930. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  4931. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  4932. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  4933. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  4934. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  4935. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  4936. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  4937. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  4938. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  4939. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  4940. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  4941. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  4942. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  4943. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  4944. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  4945. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  4946. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  4947. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  4948. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  4949. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  4950. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  4951. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  4952. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  4953. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  4954. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  4955. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  4956. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  4957. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  4958. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  4959. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  4960. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  4961. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  4962. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  4963. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  4964. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  4965. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  4966. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  4967. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  4968. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  4969. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  4970. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  4971. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  4972. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  4973. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  4974. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  4975. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  4976. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  4977. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  4978. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  4979. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  4980. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  4981. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  4982. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  4983. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  4984. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  4985. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  4986. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  4987. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  4988. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  4989. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  4990. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  4991. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  4992. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  4993. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  4994. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  4995. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  4996. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  4997. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  4998. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  4999. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  5000. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  5001. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  5002. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  5003. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  5004. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  5005. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  5006. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  5007. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  5008. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  5009. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  5010. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  5011. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  5012. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  5013. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  5014. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  5015. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  5016. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  5017. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  5018. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  5019. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  5020. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  5021. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  5022. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  5023. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  5024. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  5025. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  5026. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  5027. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  5028. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  5029. package/node_modules/@smithy/signature-v4/node_modules/@smithy/types/package.json +61 -0
  5030. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/LICENSE +201 -0
  5031. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/README.md +12 -0
  5032. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-cjs/index.js +15 -0
  5033. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js +2 -0
  5034. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-es/index.js +2 -0
  5035. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js +6 -0
  5036. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts +5 -0
  5037. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-types/index.d.ts +8 -0
  5038. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts +7 -0
  5039. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts +5 -0
  5040. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts +8 -0
  5041. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts +7 -0
  5042. package/node_modules/@smithy/signature-v4/node_modules/@smithy/util-middleware/package.json +67 -0
  5043. package/node_modules/@smithy/signature-v4/package.json +4 -4
  5044. package/node_modules/@smithy/util-endpoints/dist-cjs/index.js +31 -22
  5045. package/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js +1 -11
  5046. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js +15 -2
  5047. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js +17 -2
  5048. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js +1 -13
  5049. package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js +25 -2
  5050. package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js +1 -21
  5051. package/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/callFunction.d.ts +1 -2
  5052. package/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateExpression.d.ts +7 -2
  5053. package/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateRules.d.ts +6 -1
  5054. package/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTreeRule.d.ts +1 -3
  5055. package/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperties.d.ts +6 -0
  5056. package/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperty.d.ts +1 -3
  5057. package/node_modules/@smithy/util-endpoints/dist-types/utils/callFunction.d.ts +1 -2
  5058. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateExpression.d.ts +7 -2
  5059. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateRules.d.ts +6 -1
  5060. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTreeRule.d.ts +1 -3
  5061. package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts +6 -0
  5062. package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperty.d.ts +1 -3
  5063. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/LICENSE +201 -0
  5064. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/README.md +10 -0
  5065. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-cjs/index.js +62 -0
  5066. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-es/configLoader.js +9 -0
  5067. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js +14 -0
  5068. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js +23 -0
  5069. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js +3 -0
  5070. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js +12 -0
  5071. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-es/index.js +1 -0
  5072. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts +31 -0
  5073. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts +20 -0
  5074. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts +22 -0
  5075. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts +9 -0
  5076. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts +9 -0
  5077. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/index.d.ts +4 -0
  5078. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts +31 -0
  5079. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts +20 -0
  5080. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts +22 -0
  5081. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts +9 -0
  5082. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts +9 -0
  5083. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts +4 -0
  5084. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/node-config-provider/package.json +66 -0
  5085. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/LICENSE +201 -0
  5086. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/README.md +10 -0
  5087. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-cjs/index.js +117 -0
  5088. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js +8 -0
  5089. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-es/ProviderError.js +23 -0
  5090. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js +8 -0
  5091. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-es/chain.js +21 -0
  5092. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-es/fromStatic.js +1 -0
  5093. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-es/index.js +6 -0
  5094. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-es/memoize.js +45 -0
  5095. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts +31 -0
  5096. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts +39 -0
  5097. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts +31 -0
  5098. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/chain.d.ts +13 -0
  5099. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts +5 -0
  5100. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/index.d.ts +24 -0
  5101. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/memoize.d.ts +40 -0
  5102. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts +31 -0
  5103. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts +39 -0
  5104. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts +31 -0
  5105. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts +13 -0
  5106. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts +5 -0
  5107. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts +24 -0
  5108. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts +40 -0
  5109. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/property-provider/package.json +61 -0
  5110. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/LICENSE +201 -0
  5111. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/README.md +115 -0
  5112. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  5113. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  5114. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/abort.js +1 -0
  5115. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  5116. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  5117. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  5118. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  5119. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  5120. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  5121. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  5122. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  5123. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  5124. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/client.js +1 -0
  5125. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/command.js +1 -0
  5126. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  5127. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  5128. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  5129. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  5130. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  5131. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  5132. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/encode.js +1 -0
  5133. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  5134. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  5135. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  5136. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  5137. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  5138. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  5139. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  5140. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  5141. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  5142. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  5143. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  5144. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  5145. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  5146. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  5147. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  5148. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  5149. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/http.js +5 -0
  5150. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  5151. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  5152. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  5153. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  5154. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  5155. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/index.js +42 -0
  5156. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/logger.js +1 -0
  5157. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  5158. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  5159. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/profile.js +6 -0
  5160. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/response.js +1 -0
  5161. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/retry.js +1 -0
  5162. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  5163. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  5164. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  5165. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  5166. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  5167. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/serde.js +1 -0
  5168. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  5169. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/signature.js +1 -0
  5170. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/stream.js +1 -0
  5171. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  5172. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  5173. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  5174. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  5175. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  5176. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  5177. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  5178. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  5179. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  5180. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  5181. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/uri.js +1 -0
  5182. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/util.js +1 -0
  5183. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  5184. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  5185. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  5186. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  5187. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  5188. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  5189. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  5190. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  5191. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  5192. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  5193. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  5194. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  5195. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  5196. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  5197. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  5198. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  5199. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  5200. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  5201. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  5202. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  5203. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  5204. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  5205. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  5206. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  5207. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  5208. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  5209. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  5210. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  5211. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  5212. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  5213. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  5214. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  5215. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  5216. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  5217. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  5218. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  5219. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  5220. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  5221. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  5222. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  5223. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  5224. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  5225. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  5226. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  5227. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  5228. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  5229. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  5230. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  5231. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  5232. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  5233. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  5234. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  5235. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  5236. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  5237. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  5238. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  5239. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  5240. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  5241. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  5242. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  5243. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  5244. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  5245. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  5246. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  5247. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  5248. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  5249. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  5250. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  5251. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  5252. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  5253. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  5254. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  5255. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  5256. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  5257. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  5258. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  5259. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  5260. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  5261. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  5262. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  5263. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  5264. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  5265. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  5266. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  5267. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  5268. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  5269. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  5270. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  5271. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  5272. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  5273. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  5274. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  5275. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  5276. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  5277. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  5278. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  5279. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  5280. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  5281. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  5282. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  5283. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  5284. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  5285. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  5286. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  5287. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  5288. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  5289. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  5290. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  5291. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  5292. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  5293. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  5294. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  5295. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  5296. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  5297. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  5298. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  5299. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  5300. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  5301. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  5302. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  5303. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  5304. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  5305. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  5306. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  5307. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  5308. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  5309. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  5310. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  5311. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  5312. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  5313. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  5314. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  5315. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  5316. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  5317. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  5318. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  5319. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  5320. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  5321. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  5322. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  5323. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  5324. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  5325. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  5326. package/node_modules/@smithy/util-endpoints/node_modules/@smithy/types/package.json +61 -0
  5327. package/node_modules/@smithy/util-endpoints/package.json +3 -3
  5328. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/LICENSE +201 -0
  5329. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/README.md +115 -0
  5330. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-cjs/index.js +91 -0
  5331. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  5332. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/abort.js +1 -0
  5333. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  5334. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  5335. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  5336. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  5337. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  5338. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  5339. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/auth/index.js +6 -0
  5340. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  5341. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  5342. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/client.js +1 -0
  5343. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/command.js +1 -0
  5344. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  5345. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/connection/index.js +3 -0
  5346. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  5347. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  5348. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  5349. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  5350. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/encode.js +1 -0
  5351. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  5352. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  5353. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  5354. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  5355. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  5356. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/endpoints/index.js +5 -0
  5357. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  5358. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  5359. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  5360. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  5361. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  5362. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/extensions/index.js +3 -0
  5363. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  5364. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  5365. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  5366. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  5367. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/http.js +5 -0
  5368. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  5369. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  5370. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  5371. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/identity/index.js +4 -0
  5372. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  5373. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/index.js +42 -0
  5374. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/logger.js +1 -0
  5375. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  5376. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  5377. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/profile.js +6 -0
  5378. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/response.js +1 -0
  5379. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/retry.js +1 -0
  5380. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  5381. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  5382. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  5383. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  5384. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  5385. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/serde.js +1 -0
  5386. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  5387. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/signature.js +1 -0
  5388. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/stream.js +1 -0
  5389. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  5390. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  5391. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  5392. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  5393. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  5394. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  5395. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  5396. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  5397. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  5398. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  5399. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/uri.js +1 -0
  5400. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/util.js +1 -0
  5401. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  5402. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  5403. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/abort.d.ts +50 -0
  5404. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  5405. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  5406. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  5407. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  5408. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  5409. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/auth/auth.d.ts +57 -0
  5410. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/auth/index.d.ts +6 -0
  5411. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +40 -0
  5412. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/checksum.d.ts +63 -0
  5413. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  5414. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  5415. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/connection/config.d.ts +10 -0
  5416. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  5417. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  5418. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  5419. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/crypto.d.ts +60 -0
  5420. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +25 -0
  5421. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  5422. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  5423. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  5424. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  5425. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  5426. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  5427. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  5428. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  5429. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  5430. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  5431. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +33 -0
  5432. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  5433. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/extensions/index.d.ts +4 -0
  5434. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  5435. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  5436. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  5437. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +128 -0
  5438. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/http.d.ts +112 -0
  5439. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  5440. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  5441. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  5442. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  5443. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  5444. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/index.d.ts +42 -0
  5445. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  5446. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/middleware.d.ts +534 -0
  5447. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  5448. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  5449. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  5450. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/retry.d.ts +133 -0
  5451. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +136 -0
  5452. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/schema/schema.d.ts +230 -0
  5453. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  5454. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +82 -0
  5455. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  5456. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  5457. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/shapes.d.ts +82 -0
  5458. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/signature.d.ts +155 -0
  5459. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  5460. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  5461. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  5462. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  5463. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/transfer.d.ts +41 -0
  5464. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  5465. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +77 -0
  5466. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  5467. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  5468. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  5469. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +34 -0
  5470. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  5471. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +50 -0
  5472. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  5473. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  5474. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  5475. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  5476. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  5477. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +57 -0
  5478. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +6 -0
  5479. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +40 -0
  5480. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +63 -0
  5481. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  5482. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  5483. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +10 -0
  5484. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  5485. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  5486. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  5487. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +60 -0
  5488. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +41 -0
  5489. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  5490. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  5491. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  5492. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  5493. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  5494. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  5495. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  5496. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  5497. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  5498. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  5499. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +33 -0
  5500. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  5501. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +4 -0
  5502. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  5503. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  5504. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  5505. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +128 -0
  5506. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +112 -0
  5507. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  5508. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  5509. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  5510. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  5511. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  5512. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +42 -0
  5513. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  5514. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +534 -0
  5515. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  5516. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  5517. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  5518. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +133 -0
  5519. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +142 -0
  5520. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +245 -0
  5521. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  5522. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +101 -0
  5523. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  5524. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  5525. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +82 -0
  5526. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +155 -0
  5527. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  5528. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +32 -0
  5529. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +60 -0
  5530. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +51 -0
  5531. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +41 -0
  5532. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  5533. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +81 -0
  5534. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  5535. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  5536. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  5537. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +41 -0
  5538. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  5539. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  5540. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  5541. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  5542. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  5543. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  5544. package/node_modules/@smithy/util-waiter/node_modules/@smithy/types/package.json +61 -0
  5545. package/node_modules/@smithy/util-waiter/package.json +3 -3
  5546. package/node_modules/cdk-iam-floyd/README.md +2 -2
  5547. package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/cdk-iam-floyd.d.ts +2 -0
  5548. package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/cdk-iam-floyd.js +5 -1
  5549. package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/iam-floyd.d.ts +2 -0
  5550. package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/iam-floyd.js +3 -1
  5551. package/node_modules/cdk-iam-floyd/lib/generated/index.d.ts +1 -0
  5552. package/node_modules/cdk-iam-floyd/lib/generated/index.js +9 -7
  5553. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/actionrecommendations.d.ts +25 -0
  5554. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/actionrecommendations.js +36 -0
  5555. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/healthlake.d.ts +64 -0
  5556. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/healthlake.js +89 -1
  5557. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/performanceinsights.d.ts +4 -0
  5558. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/performanceinsights.js +5 -1
  5559. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/service-oracledatabase-aws.d.ts +8 -0
  5560. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/service-oracledatabase-aws.js +13 -2
  5561. package/node_modules/cdk-iam-floyd/package.json +5 -5
  5562. package/package.json +4 -4
  5563. package/node_modules/@aws-sdk/core/package.json +0 -121
  5564. package/node_modules/@aws-sdk/credential-provider-env/package.json +0 -63
  5565. package/node_modules/@aws-sdk/credential-provider-http/package.json +0 -70
  5566. package/node_modules/@aws-sdk/credential-provider-ini/package.json +0 -73
  5567. package/node_modules/@aws-sdk/credential-provider-node/package.json +0 -72
  5568. package/node_modules/@aws-sdk/credential-provider-process/package.json +0 -64
  5569. package/node_modules/@aws-sdk/credential-provider-sso/package.json +0 -66
  5570. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +0 -73
  5571. package/node_modules/@aws-sdk/middleware-host-header/package.json +0 -59
  5572. package/node_modules/@aws-sdk/middleware-logger/package.json +0 -59
  5573. package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +0 -63
  5574. package/node_modules/@aws-sdk/middleware-user-agent/package.json +0 -62
  5575. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +0 -818
  5576. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js +0 -95
  5577. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts +0 -43
  5578. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts +0 -33
  5579. package/node_modules/@aws-sdk/nested-clients/package.json +0 -116
  5580. package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js +0 -69
  5581. package/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js +0 -2
  5582. package/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/resolveRegionConfig.js +0 -24
  5583. package/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts +0 -16
  5584. package/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts +0 -2
  5585. package/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/config.d.ts +0 -17
  5586. package/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts +0 -37
  5587. package/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts +0 -2
  5588. package/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/config.d.ts +0 -8
  5589. package/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts +0 -1
  5590. package/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts +0 -1
  5591. package/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts +0 -14
  5592. package/node_modules/@aws-sdk/region-config-resolver/package.json +0 -60
  5593. package/node_modules/@aws-sdk/types/package.json +0 -57
  5594. package/node_modules/@aws-sdk/util-endpoints/package.json +0 -60
  5595. package/node_modules/@aws-sdk/util-user-agent-browser/package.json +0 -55
  5596. package/node_modules/@aws-sdk/util-user-agent-node/package.json +0 -66
  5597. package/node_modules/@smithy/config-resolver/dist-cjs/index.js +0 -171
  5598. package/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js +0 -24
  5599. package/node_modules/@smithy/config-resolver/package.json +0 -65
  5600. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +0 -212
  5601. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +0 -828
  5602. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +0 -615
  5603. package/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +0 -207
  5604. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +0 -122
  5605. package/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +0 -65
  5606. package/node_modules/@smithy/core/dist-es/submodules/schema/index.js +0 -13
  5607. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +0 -64
  5608. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js +0 -20
  5609. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js +0 -261
  5610. package/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts +0 -13
  5611. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts +0 -35
  5612. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts +0 -21
  5613. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts +0 -22
  5614. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts +0 -144
  5615. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts +0 -21
  5616. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts +0 -15
  5617. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts +0 -26
  5618. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts +0 -21
  5619. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts +0 -13
  5620. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts +0 -35
  5621. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts +0 -21
  5622. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts +0 -22
  5623. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts +0 -147
  5624. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts +0 -21
  5625. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts +0 -15
  5626. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts +0 -26
  5627. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts +0 -21
  5628. package/node_modules/@smithy/core/package.json +0 -135
  5629. package/node_modules/@smithy/credential-provider-imds/package.json +0 -70
  5630. package/node_modules/@smithy/fetch-http-handler/package.json +0 -69
  5631. package/node_modules/@smithy/hash-node/package.json +0 -65
  5632. package/node_modules/@smithy/invalid-dependency/package.json +0 -61
  5633. package/node_modules/@smithy/middleware-content-length/package.json +0 -64
  5634. package/node_modules/@smithy/middleware-endpoint/package.json +0 -75
  5635. package/node_modules/@smithy/middleware-retry/package.json +0 -79
  5636. package/node_modules/@smithy/middleware-serde/package.json +0 -65
  5637. package/node_modules/@smithy/middleware-stack/package.json +0 -64
  5638. package/node_modules/@smithy/node-config-provider/package.json +0 -66
  5639. package/node_modules/@smithy/node-http-handler/package.json +0 -68
  5640. package/node_modules/@smithy/property-provider/package.json +0 -61
  5641. package/node_modules/@smithy/protocol-http/package.json +0 -62
  5642. package/node_modules/@smithy/smithy-client/package.json +0 -68
  5643. package/node_modules/@smithy/types/dist-es/index.js +0 -41
  5644. package/node_modules/@smithy/types/dist-types/index.d.ts +0 -41
  5645. package/node_modules/@smithy/types/dist-types/schema/schema.d.ts +0 -272
  5646. package/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +0 -82
  5647. package/node_modules/@smithy/types/dist-types/serde.d.ts +0 -114
  5648. package/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +0 -41
  5649. package/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +0 -290
  5650. package/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +0 -101
  5651. package/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +0 -114
  5652. package/node_modules/@smithy/types/package.json +0 -61
  5653. package/node_modules/@smithy/url-parser/package.json +0 -62
  5654. package/node_modules/@smithy/util-defaults-mode-browser/package.json +0 -66
  5655. package/node_modules/@smithy/util-defaults-mode-node/package.json +0 -67
  5656. package/node_modules/@smithy/util-middleware/package.json +0 -67
  5657. package/node_modules/@smithy/util-retry/package.json +0 -71
  5658. package/node_modules/@smithy/util-stream/dist-cjs/index.js +0 -91
  5659. package/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js +0 -16
  5660. package/node_modules/@smithy/util-stream/dist-es/blob/transforms.js +0 -15
  5661. package/node_modules/@smithy/util-stream/dist-types/blob/transforms.d.ts +0 -9
  5662. package/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/transforms.d.ts +0 -9
  5663. package/node_modules/@smithy/util-stream/package.json +0 -99
  5664. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/README.md +0 -0
  5665. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/account-id-endpoint.d.ts +0 -0
  5666. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/account-id-endpoint.js +0 -0
  5667. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/client.d.ts +0 -0
  5668. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/client.js +0 -0
  5669. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-cjs/index.js +0 -0
  5670. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-cjs/submodules/account-id-endpoint/index.js +0 -0
  5671. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-cjs/submodules/client/index.js +0 -0
  5672. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-cjs/submodules/httpAuthSchemes/index.js +0 -0
  5673. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-cjs/submodules/protocols/index.js +0 -0
  5674. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/index.js +0 -0
  5675. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js +0 -0
  5676. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js +0 -0
  5677. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js +0 -0
  5678. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/account-id-endpoint/index.js +0 -0
  5679. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js +0 -0
  5680. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/client/index.js +0 -0
  5681. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/client/setCredentialFeature.js +0 -0
  5682. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/client/setFeature.js +0 -0
  5683. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/client/setTokenFeature.js +0 -0
  5684. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js +0 -0
  5685. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js +0 -0
  5686. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js +0 -0
  5687. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js +0 -0
  5688. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js +0 -0
  5689. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js +0 -0
  5690. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/index.js +0 -0
  5691. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js +0 -0
  5692. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js +0 -0
  5693. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js +0 -0
  5694. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js +0 -0
  5695. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js +0 -0
  5696. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/utils/index.js +0 -0
  5697. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js +0 -0
  5698. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/ConfigurableSerdeContext.js +0 -0
  5699. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/ProtocolLib.js +0 -0
  5700. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js +0 -0
  5701. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/coercing-serializers.js +0 -0
  5702. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/common.js +0 -0
  5703. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/index.js +0 -0
  5704. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js +0 -0
  5705. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js +0 -0
  5706. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +0 -0
  5707. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +0 -0
  5708. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/JsonCodec.js +0 -0
  5709. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/JsonShapeDeserializer.js +0 -0
  5710. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/JsonShapeSerializer.js +0 -0
  5711. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/awsExpectUnion.js +0 -0
  5712. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/jsonReplacer.js +0 -0
  5713. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/jsonReviver.js +0 -0
  5714. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/json/parseJsonBody.js +0 -0
  5715. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js +0 -0
  5716. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/query/AwsQueryProtocol.js +0 -0
  5717. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/query/QuerySerializerSettings.js +0 -0
  5718. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/query/QueryShapeSerializer.js +0 -0
  5719. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +0 -0
  5720. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/xml/XmlCodec.js +0 -0
  5721. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js +0 -0
  5722. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/xml/XmlShapeSerializer.js +0 -0
  5723. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/xml/parseXmlBody.js +0 -0
  5724. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-es/submodules/protocols/xml/simpleFormatXml.js +0 -0
  5725. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/api-extractor-type-index.d.ts +0 -0
  5726. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/index.d.ts +0 -0
  5727. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts +0 -0
  5728. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts +0 -0
  5729. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts +0 -0
  5730. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/account-id-endpoint/index.d.ts +0 -0
  5731. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts +0 -0
  5732. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/client/index.d.ts +0 -0
  5733. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/client/setCredentialFeature.d.ts +0 -0
  5734. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/client/setFeature.d.ts +0 -0
  5735. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/client/setTokenFeature.d.ts +0 -0
  5736. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts +0 -0
  5737. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +0 -0
  5738. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts +0 -0
  5739. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts +0 -0
  5740. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts +0 -0
  5741. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +0 -0
  5742. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/index.d.ts +0 -0
  5743. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts +0 -0
  5744. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts +0 -0
  5745. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts +0 -0
  5746. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts +0 -0
  5747. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts +0 -0
  5748. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/utils/index.d.ts +0 -0
  5749. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts +0 -0
  5750. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts +0 -0
  5751. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/ProtocolLib.d.ts +0 -0
  5752. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +0 -0
  5753. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/coercing-serializers.d.ts +0 -0
  5754. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/common.d.ts +0 -0
  5755. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/index.d.ts +0 -0
  5756. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts +0 -0
  5757. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts +0 -0
  5758. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +0 -0
  5759. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts +0 -0
  5760. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/JsonCodec.d.ts +0 -0
  5761. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts +0 -0
  5762. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts +0 -0
  5763. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/awsExpectUnion.d.ts +0 -0
  5764. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/jsonReplacer.d.ts +0 -0
  5765. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/jsonReviver.d.ts +0 -0
  5766. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/json/parseJsonBody.d.ts +0 -0
  5767. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +0 -0
  5768. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts +0 -0
  5769. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts +0 -0
  5770. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts +0 -0
  5771. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +0 -0
  5772. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/xml/XmlCodec.d.ts +0 -0
  5773. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts +0 -0
  5774. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts +0 -0
  5775. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/xml/parseXmlBody.d.ts +0 -0
  5776. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts +0 -0
  5777. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/api-extractor-type-index.d.ts +0 -0
  5778. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/index.d.ts +0 -0
  5779. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts +0 -0
  5780. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts +0 -0
  5781. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts +0 -0
  5782. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts +0 -0
  5783. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts +0 -0
  5784. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/client/index.d.ts +0 -0
  5785. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts +0 -0
  5786. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/client/setFeature.d.ts +0 -0
  5787. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts +0 -0
  5788. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts +0 -0
  5789. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +0 -0
  5790. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts +0 -0
  5791. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts +0 -0
  5792. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts +0 -0
  5793. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +0 -0
  5794. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts +0 -0
  5795. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts +0 -0
  5796. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts +0 -0
  5797. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts +0 -0
  5798. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts +0 -0
  5799. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts +0 -0
  5800. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts +0 -0
  5801. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts +0 -0
  5802. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts +0 -0
  5803. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts +0 -0
  5804. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +0 -0
  5805. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts +0 -0
  5806. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/common.d.ts +0 -0
  5807. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/index.d.ts +0 -0
  5808. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts +0 -0
  5809. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts +0 -0
  5810. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +0 -0
  5811. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts +0 -0
  5812. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts +0 -0
  5813. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts +0 -0
  5814. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +0 -0
  5815. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts +0 -0
  5816. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts +0 -0
  5817. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts +0 -0
  5818. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts +0 -0
  5819. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +0 -0
  5820. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts +0 -0
  5821. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts +0 -0
  5822. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts +0 -0
  5823. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +0 -0
  5824. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts +0 -0
  5825. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts +0 -0
  5826. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts +0 -0
  5827. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts +0 -0
  5828. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts +0 -0
  5829. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/httpAuthSchemes.d.ts +0 -0
  5830. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/httpAuthSchemes.js +0 -0
  5831. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/protocols.d.ts +0 -0
  5832. /package/node_modules/@aws-sdk/{core → client-iam/node_modules/@aws-sdk/core}/protocols.js +0 -0
  5833. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/LICENSE +0 -0
  5834. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/README.md +0 -0
  5835. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/dist-cjs/index.js +0 -0
  5836. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/dist-es/fromEnv.js +0 -0
  5837. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/dist-es/index.js +0 -0
  5838. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/dist-types/fromEnv.d.ts +0 -0
  5839. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/dist-types/index.d.ts +0 -0
  5840. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/dist-types/ts3.4/fromEnv.d.ts +0 -0
  5841. /package/node_modules/@aws-sdk/{credential-provider-env → client-iam/node_modules/@aws-sdk/credential-provider-env}/dist-types/ts3.4/index.d.ts +0 -0
  5842. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/README.md +0 -0
  5843. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-cjs/fromHttp/checkUrl.js +0 -0
  5844. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-cjs/fromHttp/fromHttp.browser.js +0 -0
  5845. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-cjs/fromHttp/fromHttp.js +0 -0
  5846. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-cjs/fromHttp/fromHttpTypes.js +0 -0
  5847. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-cjs/fromHttp/requestHelpers.js +0 -0
  5848. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-cjs/fromHttp/retry-wrapper.js +0 -0
  5849. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-cjs/index.browser.js +0 -0
  5850. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-cjs/index.js +0 -0
  5851. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-es/fromHttp/checkUrl.js +0 -0
  5852. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-es/fromHttp/fromHttp.browser.js +0 -0
  5853. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-es/fromHttp/fromHttp.js +0 -0
  5854. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-es/fromHttp/fromHttpTypes.js +0 -0
  5855. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-es/fromHttp/requestHelpers.js +0 -0
  5856. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-es/fromHttp/retry-wrapper.js +0 -0
  5857. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-es/index.browser.js +0 -0
  5858. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-es/index.js +0 -0
  5859. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/fromHttp/checkUrl.d.ts +0 -0
  5860. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/fromHttp/fromHttp.browser.d.ts +0 -0
  5861. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/fromHttp/fromHttp.d.ts +0 -0
  5862. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/fromHttp/fromHttpTypes.d.ts +0 -0
  5863. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/fromHttp/requestHelpers.d.ts +0 -0
  5864. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/fromHttp/retry-wrapper.d.ts +0 -0
  5865. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/index.browser.d.ts +0 -0
  5866. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/index.d.ts +0 -0
  5867. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/ts3.4/fromHttp/checkUrl.d.ts +0 -0
  5868. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/ts3.4/fromHttp/fromHttp.browser.d.ts +0 -0
  5869. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/ts3.4/fromHttp/fromHttp.d.ts +0 -0
  5870. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/ts3.4/fromHttp/fromHttpTypes.d.ts +0 -0
  5871. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/ts3.4/fromHttp/requestHelpers.d.ts +0 -0
  5872. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/ts3.4/fromHttp/retry-wrapper.d.ts +0 -0
  5873. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/ts3.4/index.browser.d.ts +0 -0
  5874. /package/node_modules/@aws-sdk/{credential-provider-http → client-iam/node_modules/@aws-sdk/credential-provider-http}/dist-types/ts3.4/index.d.ts +0 -0
  5875. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/LICENSE +0 -0
  5876. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/README.md +0 -0
  5877. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-cjs/index.js +0 -0
  5878. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/fromIni.js +0 -0
  5879. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/index.js +0 -0
  5880. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/resolveAssumeRoleCredentials.js +0 -0
  5881. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/resolveCredentialSource.js +0 -0
  5882. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/resolveProcessCredentials.js +0 -0
  5883. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/resolveProfileData.js +0 -0
  5884. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/resolveSsoCredentials.js +0 -0
  5885. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/resolveStaticCredentials.js +0 -0
  5886. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-es/resolveWebIdentityCredentials.js +0 -0
  5887. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/fromIni.d.ts +0 -0
  5888. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/index.d.ts +0 -0
  5889. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/resolveAssumeRoleCredentials.d.ts +0 -0
  5890. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/resolveCredentialSource.d.ts +0 -0
  5891. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/resolveProcessCredentials.d.ts +0 -0
  5892. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/resolveProfileData.d.ts +0 -0
  5893. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/resolveSsoCredentials.d.ts +0 -0
  5894. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/resolveStaticCredentials.d.ts +0 -0
  5895. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/resolveWebIdentityCredentials.d.ts +0 -0
  5896. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/fromIni.d.ts +0 -0
  5897. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/index.d.ts +0 -0
  5898. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts +0 -0
  5899. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/resolveCredentialSource.d.ts +0 -0
  5900. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/resolveProcessCredentials.d.ts +0 -0
  5901. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/resolveProfileData.d.ts +0 -0
  5902. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/resolveSsoCredentials.d.ts +0 -0
  5903. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/resolveStaticCredentials.d.ts +0 -0
  5904. /package/node_modules/@aws-sdk/{credential-provider-ini → client-iam/node_modules/@aws-sdk/credential-provider-ini}/dist-types/ts3.4/resolveWebIdentityCredentials.d.ts +0 -0
  5905. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/LICENSE +0 -0
  5906. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/README.md +0 -0
  5907. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-cjs/index.js +0 -0
  5908. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-es/defaultProvider.js +0 -0
  5909. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-es/index.js +0 -0
  5910. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-es/remoteProvider.js +0 -0
  5911. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-types/defaultProvider.d.ts +0 -0
  5912. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-types/index.d.ts +0 -0
  5913. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-types/remoteProvider.d.ts +0 -0
  5914. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-types/ts3.4/defaultProvider.d.ts +0 -0
  5915. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-types/ts3.4/index.d.ts +0 -0
  5916. /package/node_modules/@aws-sdk/{credential-provider-node → client-iam/node_modules/@aws-sdk/credential-provider-node}/dist-types/ts3.4/remoteProvider.d.ts +0 -0
  5917. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/LICENSE +0 -0
  5918. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/README.md +0 -0
  5919. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-cjs/index.js +0 -0
  5920. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-es/ProcessCredentials.js +0 -0
  5921. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-es/fromProcess.js +0 -0
  5922. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-es/getValidatedProcessCredentials.js +0 -0
  5923. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-es/index.js +0 -0
  5924. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-es/resolveProcessCredentials.js +0 -0
  5925. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/ProcessCredentials.d.ts +0 -0
  5926. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/fromProcess.d.ts +0 -0
  5927. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/getValidatedProcessCredentials.d.ts +0 -0
  5928. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/index.d.ts +0 -0
  5929. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/resolveProcessCredentials.d.ts +0 -0
  5930. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/ts3.4/ProcessCredentials.d.ts +0 -0
  5931. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/ts3.4/fromProcess.d.ts +0 -0
  5932. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/ts3.4/getValidatedProcessCredentials.d.ts +0 -0
  5933. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/ts3.4/index.d.ts +0 -0
  5934. /package/node_modules/@aws-sdk/{credential-provider-process → client-iam/node_modules/@aws-sdk/credential-provider-process}/dist-types/ts3.4/resolveProcessCredentials.d.ts +0 -0
  5935. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/LICENSE +0 -0
  5936. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/README.md +0 -0
  5937. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-cjs/index.js +0 -0
  5938. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-cjs/loadSso-CVy8iqsZ.js +0 -0
  5939. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-es/fromSSO.js +0 -0
  5940. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-es/index.js +0 -0
  5941. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-es/isSsoProfile.js +0 -0
  5942. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-es/loadSso.js +0 -0
  5943. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-es/resolveSSOCredentials.js +0 -0
  5944. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-es/types.js +0 -0
  5945. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-es/validateSsoProfile.js +0 -0
  5946. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/fromSSO.d.ts +0 -0
  5947. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/index.d.ts +0 -0
  5948. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/isSsoProfile.d.ts +0 -0
  5949. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/loadSso.d.ts +0 -0
  5950. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/resolveSSOCredentials.d.ts +0 -0
  5951. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/ts3.4/fromSSO.d.ts +0 -0
  5952. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/ts3.4/index.d.ts +0 -0
  5953. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/ts3.4/isSsoProfile.d.ts +0 -0
  5954. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/ts3.4/loadSso.d.ts +0 -0
  5955. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/ts3.4/resolveSSOCredentials.d.ts +0 -0
  5956. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/ts3.4/types.d.ts +0 -0
  5957. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/ts3.4/validateSsoProfile.d.ts +0 -0
  5958. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/types.d.ts +0 -0
  5959. /package/node_modules/@aws-sdk/{credential-provider-sso → client-iam/node_modules/@aws-sdk/credential-provider-sso}/dist-types/validateSsoProfile.d.ts +0 -0
  5960. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/LICENSE +0 -0
  5961. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/README.md +0 -0
  5962. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-cjs/fromTokenFile.js +0 -0
  5963. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-cjs/fromWebToken.js +0 -0
  5964. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-cjs/index.js +0 -0
  5965. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-es/fromTokenFile.js +0 -0
  5966. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-es/fromWebToken.js +0 -0
  5967. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-es/index.js +0 -0
  5968. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-types/fromTokenFile.d.ts +0 -0
  5969. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-types/fromWebToken.d.ts +0 -0
  5970. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-types/index.d.ts +0 -0
  5971. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-types/ts3.4/fromTokenFile.d.ts +0 -0
  5972. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-types/ts3.4/fromWebToken.d.ts +0 -0
  5973. /package/node_modules/@aws-sdk/{credential-provider-web-identity → client-iam/node_modules/@aws-sdk/credential-provider-web-identity}/dist-types/ts3.4/index.d.ts +0 -0
  5974. /package/node_modules/@aws-sdk/{middleware-host-header → client-iam/node_modules/@aws-sdk/middleware-host-header}/LICENSE +0 -0
  5975. /package/node_modules/@aws-sdk/{middleware-host-header → client-iam/node_modules/@aws-sdk/middleware-host-header}/README.md +0 -0
  5976. /package/node_modules/@aws-sdk/{middleware-host-header → client-iam/node_modules/@aws-sdk/middleware-host-header}/dist-cjs/index.js +0 -0
  5977. /package/node_modules/@aws-sdk/{middleware-host-header → client-iam/node_modules/@aws-sdk/middleware-host-header}/dist-es/index.js +0 -0
  5978. /package/node_modules/@aws-sdk/{middleware-host-header → client-iam/node_modules/@aws-sdk/middleware-host-header}/dist-types/index.d.ts +0 -0
  5979. /package/node_modules/@aws-sdk/{middleware-host-header → client-iam/node_modules/@aws-sdk/middleware-host-header}/dist-types/ts3.4/index.d.ts +0 -0
  5980. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/LICENSE +0 -0
  5981. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/README.md +0 -0
  5982. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/dist-cjs/index.js +0 -0
  5983. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/dist-es/index.js +0 -0
  5984. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/dist-es/loggerMiddleware.js +0 -0
  5985. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/dist-types/index.d.ts +0 -0
  5986. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/dist-types/loggerMiddleware.d.ts +0 -0
  5987. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/dist-types/ts3.4/index.d.ts +0 -0
  5988. /package/node_modules/@aws-sdk/{middleware-logger → client-iam/node_modules/@aws-sdk/middleware-logger}/dist-types/ts3.4/loggerMiddleware.d.ts +0 -0
  5989. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/LICENSE +0 -0
  5990. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/README.md +0 -0
  5991. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-cjs/index.js +0 -0
  5992. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-cjs/recursionDetectionMiddleware.js +0 -0
  5993. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-cjs/recursionDetectionMiddleware.native.js +0 -0
  5994. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-es/configuration.js +0 -0
  5995. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-es/getRecursionDetectionPlugin.js +0 -0
  5996. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-es/index.js +0 -0
  5997. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-es/recursionDetectionMiddleware.browser.js +0 -0
  5998. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-es/recursionDetectionMiddleware.js +0 -0
  5999. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-es/recursionDetectionMiddleware.native.js +0 -0
  6000. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/configuration.d.ts +0 -0
  6001. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/getRecursionDetectionPlugin.d.ts +0 -0
  6002. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/index.d.ts +0 -0
  6003. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/recursionDetectionMiddleware.browser.d.ts +0 -0
  6004. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/recursionDetectionMiddleware.d.ts +0 -0
  6005. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/recursionDetectionMiddleware.native.d.ts +0 -0
  6006. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/ts3.4/configuration.d.ts +0 -0
  6007. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts +0 -0
  6008. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/ts3.4/index.d.ts +0 -0
  6009. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts +0 -0
  6010. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/ts3.4/recursionDetectionMiddleware.d.ts +0 -0
  6011. /package/node_modules/@aws-sdk/{middleware-recursion-detection → client-iam/node_modules/@aws-sdk/middleware-recursion-detection}/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts +0 -0
  6012. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/LICENSE +0 -0
  6013. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/README.md +0 -0
  6014. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-cjs/index.js +0 -0
  6015. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-es/check-features.js +0 -0
  6016. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-es/configurations.js +0 -0
  6017. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-es/constants.js +0 -0
  6018. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-es/encode-features.js +0 -0
  6019. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-es/index.js +0 -0
  6020. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-es/user-agent-middleware.js +0 -0
  6021. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/check-features.d.ts +0 -0
  6022. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/configurations.d.ts +0 -0
  6023. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/constants.d.ts +0 -0
  6024. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/encode-features.d.ts +0 -0
  6025. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/index.d.ts +0 -0
  6026. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/ts3.4/check-features.d.ts +0 -0
  6027. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/ts3.4/configurations.d.ts +0 -0
  6028. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/ts3.4/constants.d.ts +0 -0
  6029. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/ts3.4/encode-features.d.ts +0 -0
  6030. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/ts3.4/index.d.ts +0 -0
  6031. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/ts3.4/user-agent-middleware.d.ts +0 -0
  6032. /package/node_modules/@aws-sdk/{middleware-user-agent → client-iam/node_modules/@aws-sdk/middleware-user-agent}/dist-types/user-agent-middleware.d.ts +0 -0
  6033. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/README.md +0 -0
  6034. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/index.js +0 -0
  6035. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +0 -0
  6036. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js +0 -0
  6037. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js +0 -0
  6038. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sso-oidc/index.js +0 -0
  6039. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js +0 -0
  6040. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sso-oidc/runtimeConfig.js +0 -0
  6041. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sso-oidc/runtimeConfig.native.js +0 -0
  6042. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js +0 -0
  6043. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/STSClient.js +0 -0
  6044. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js +0 -0
  6045. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js +0 -0
  6046. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/endpoint/EndpointParameters.js +0 -0
  6047. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/endpoint/endpointResolver.js +0 -0
  6048. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/endpoint/ruleset.js +0 -0
  6049. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/runtimeConfig.browser.js +0 -0
  6050. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/runtimeConfig.js +0 -0
  6051. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/runtimeConfig.native.js +0 -0
  6052. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/runtimeConfig.shared.js +0 -0
  6053. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-cjs/submodules/sts/runtimeExtensions.js +0 -0
  6054. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/index.js +0 -0
  6055. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/SSOOIDC.js +0 -0
  6056. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/SSOOIDCClient.js +0 -0
  6057. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js +0 -0
  6058. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +0 -0
  6059. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js +0 -0
  6060. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/commands/index.js +0 -0
  6061. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js +0 -0
  6062. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js +0 -0
  6063. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/endpoint/ruleset.js +0 -0
  6064. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/extensionConfiguration.js +0 -0
  6065. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/index.js +0 -0
  6066. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js +0 -0
  6067. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/models/index.js +0 -0
  6068. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/models/models_0.js +0 -0
  6069. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/protocols/Aws_restJson1.js +0 -0
  6070. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/runtimeConfig.browser.js +0 -0
  6071. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/runtimeConfig.js +0 -0
  6072. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/runtimeConfig.native.js +0 -0
  6073. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/runtimeConfig.shared.js +0 -0
  6074. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sso-oidc/runtimeExtensions.js +0 -0
  6075. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/STS.js +0 -0
  6076. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/STSClient.js +0 -0
  6077. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js +0 -0
  6078. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js +0 -0
  6079. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/commands/AssumeRoleCommand.js +0 -0
  6080. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js +0 -0
  6081. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/commands/index.js +0 -0
  6082. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/defaultRoleAssumers.js +0 -0
  6083. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/endpoint/EndpointParameters.js +0 -0
  6084. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/endpoint/endpointResolver.js +0 -0
  6085. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/endpoint/ruleset.js +0 -0
  6086. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/extensionConfiguration.js +0 -0
  6087. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/index.js +0 -0
  6088. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/models/STSServiceException.js +0 -0
  6089. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/models/index.js +0 -0
  6090. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/models/models_0.js +0 -0
  6091. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/protocols/Aws_query.js +0 -0
  6092. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/runtimeConfig.browser.js +0 -0
  6093. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/runtimeConfig.js +0 -0
  6094. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/runtimeConfig.native.js +0 -0
  6095. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/runtimeConfig.shared.js +0 -0
  6096. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-es/submodules/sts/runtimeExtensions.js +0 -0
  6097. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/index.d.ts +0 -0
  6098. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/SSOOIDC.d.ts +0 -0
  6099. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts +0 -0
  6100. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts +0 -0
  6101. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts +0 -0
  6102. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +0 -0
  6103. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/commands/index.d.ts +0 -0
  6104. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts +0 -0
  6105. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/endpoint/endpointResolver.d.ts +0 -0
  6106. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts +0 -0
  6107. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts +0 -0
  6108. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/index.d.ts +0 -0
  6109. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts +0 -0
  6110. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/models/index.d.ts +0 -0
  6111. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/models/models_0.d.ts +0 -0
  6112. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/protocols/Aws_restJson1.d.ts +0 -0
  6113. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts +0 -0
  6114. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/runtimeConfig.d.ts +0 -0
  6115. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts +0 -0
  6116. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts +0 -0
  6117. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts +0 -0
  6118. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/STS.d.ts +0 -0
  6119. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/STSClient.d.ts +0 -0
  6120. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts +0 -0
  6121. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts +0 -0
  6122. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts +0 -0
  6123. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +0 -0
  6124. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/commands/index.d.ts +0 -0
  6125. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/defaultRoleAssumers.d.ts +0 -0
  6126. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts +0 -0
  6127. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/endpoint/endpointResolver.d.ts +0 -0
  6128. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/endpoint/ruleset.d.ts +0 -0
  6129. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/extensionConfiguration.d.ts +0 -0
  6130. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/index.d.ts +0 -0
  6131. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/models/STSServiceException.d.ts +0 -0
  6132. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/models/index.d.ts +0 -0
  6133. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/models/models_0.d.ts +0 -0
  6134. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/protocols/Aws_query.d.ts +0 -0
  6135. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/runtimeConfig.browser.d.ts +0 -0
  6136. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/runtimeConfig.d.ts +0 -0
  6137. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/runtimeConfig.native.d.ts +0 -0
  6138. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/runtimeConfig.shared.d.ts +0 -0
  6139. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/submodules/sts/runtimeExtensions.d.ts +0 -0
  6140. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/index.d.ts +0 -0
  6141. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts +0 -0
  6142. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts +0 -0
  6143. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts +0 -0
  6144. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts +0 -0
  6145. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +0 -0
  6146. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts +0 -0
  6147. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts +0 -0
  6148. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/endpoint/endpointResolver.d.ts +0 -0
  6149. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts +0 -0
  6150. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts +0 -0
  6151. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/index.d.ts +0 -0
  6152. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts +0 -0
  6153. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/models/index.d.ts +0 -0
  6154. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts +0 -0
  6155. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/protocols/Aws_restJson1.d.ts +0 -0
  6156. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +0 -0
  6157. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts +0 -0
  6158. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +0 -0
  6159. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts +0 -0
  6160. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts +0 -0
  6161. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/STS.d.ts +0 -0
  6162. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/STSClient.d.ts +0 -0
  6163. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts +0 -0
  6164. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts +0 -0
  6165. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts +0 -0
  6166. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +0 -0
  6167. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/commands/index.d.ts +0 -0
  6168. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts +0 -0
  6169. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts +0 -0
  6170. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts +0 -0
  6171. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts +0 -0
  6172. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts +0 -0
  6173. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/index.d.ts +0 -0
  6174. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts +0 -0
  6175. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/models/index.d.ts +0 -0
  6176. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/models/models_0.d.ts +0 -0
  6177. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/protocols/Aws_query.d.ts +0 -0
  6178. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +0 -0
  6179. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +0 -0
  6180. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +0 -0
  6181. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts +0 -0
  6182. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts +0 -0
  6183. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/sso-oidc.d.ts +0 -0
  6184. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/sso-oidc.js +0 -0
  6185. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/sts.d.ts +0 -0
  6186. /package/node_modules/@aws-sdk/{nested-clients → client-iam/node_modules/@aws-sdk/nested-clients}/sts.js +0 -0
  6187. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@aws-sdk/region-config-resolver}/LICENSE +0 -0
  6188. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@aws-sdk/region-config-resolver}/README.md +0 -0
  6189. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@aws-sdk/region-config-resolver}/dist-es/extensions/index.js +0 -0
  6190. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@aws-sdk/region-config-resolver}/dist-types/ts3.4/extensions/index.d.ts +0 -0
  6191. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/LICENSE +0 -0
  6192. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/README.md +0 -0
  6193. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-cjs/index.js +0 -0
  6194. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/abort.js +0 -0
  6195. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/auth.js +0 -0
  6196. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/blob/blob-types.js +0 -0
  6197. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/checksum.js +0 -0
  6198. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/client.js +0 -0
  6199. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/command.js +0 -0
  6200. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/connection.js +0 -0
  6201. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/credentials.js +0 -0
  6202. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/crypto.js +0 -0
  6203. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/dns.js +0 -0
  6204. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/encode.js +0 -0
  6205. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/endpoint.js +0 -0
  6206. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/eventStream.js +0 -0
  6207. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/extensions/index.js +0 -0
  6208. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/feature-ids.js +0 -0
  6209. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/function.js +0 -0
  6210. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/http.js +0 -0
  6211. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/identity/AnonymousIdentity.js +0 -0
  6212. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/identity/AwsCredentialIdentity.js +0 -0
  6213. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/identity/Identity.js +0 -0
  6214. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/identity/LoginIdentity.js +0 -0
  6215. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/identity/TokenIdentity.js +0 -0
  6216. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/identity/index.js +0 -0
  6217. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/index.js +0 -0
  6218. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/logger.js +0 -0
  6219. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/middleware.js +0 -0
  6220. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/pagination.js +0 -0
  6221. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/profile.js +0 -0
  6222. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/request.js +0 -0
  6223. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/response.js +0 -0
  6224. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/retry.js +0 -0
  6225. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/serde.js +0 -0
  6226. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/shapes.js +0 -0
  6227. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/signature.js +0 -0
  6228. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/stream.js +0 -0
  6229. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/token.js +0 -0
  6230. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/transfer.js +0 -0
  6231. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/uri.js +0 -0
  6232. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/util.js +0 -0
  6233. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-es/waiter.js +0 -0
  6234. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/abort.d.ts +0 -0
  6235. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/auth.d.ts +0 -0
  6236. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/blob/blob-types.d.ts +0 -0
  6237. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/checksum.d.ts +0 -0
  6238. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/client.d.ts +0 -0
  6239. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/command.d.ts +0 -0
  6240. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/connection.d.ts +0 -0
  6241. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/credentials.d.ts +0 -0
  6242. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/crypto.d.ts +0 -0
  6243. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/dns.d.ts +0 -0
  6244. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/encode.d.ts +0 -0
  6245. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/endpoint.d.ts +0 -0
  6246. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/eventStream.d.ts +0 -0
  6247. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/extensions/index.d.ts +0 -0
  6248. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/feature-ids.d.ts +0 -0
  6249. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/function.d.ts +0 -0
  6250. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/http.d.ts +0 -0
  6251. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/identity/AnonymousIdentity.d.ts +0 -0
  6252. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/identity/AwsCredentialIdentity.d.ts +0 -0
  6253. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/identity/Identity.d.ts +0 -0
  6254. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/identity/LoginIdentity.d.ts +0 -0
  6255. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/identity/TokenIdentity.d.ts +0 -0
  6256. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/identity/index.d.ts +0 -0
  6257. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/index.d.ts +0 -0
  6258. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/logger.d.ts +0 -0
  6259. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/middleware.d.ts +0 -0
  6260. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/pagination.d.ts +0 -0
  6261. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/profile.d.ts +0 -0
  6262. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/request.d.ts +0 -0
  6263. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/response.d.ts +0 -0
  6264. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/retry.d.ts +0 -0
  6265. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/serde.d.ts +0 -0
  6266. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/shapes.d.ts +0 -0
  6267. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/signature.d.ts +0 -0
  6268. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/stream.d.ts +0 -0
  6269. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/token.d.ts +0 -0
  6270. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/transfer.d.ts +0 -0
  6271. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/abort.d.ts +0 -0
  6272. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/auth.d.ts +0 -0
  6273. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/blob/blob-types.d.ts +0 -0
  6274. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/checksum.d.ts +0 -0
  6275. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/client.d.ts +0 -0
  6276. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/command.d.ts +0 -0
  6277. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/connection.d.ts +0 -0
  6278. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/credentials.d.ts +0 -0
  6279. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/crypto.d.ts +0 -0
  6280. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/dns.d.ts +0 -0
  6281. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/encode.d.ts +0 -0
  6282. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/endpoint.d.ts +0 -0
  6283. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/eventStream.d.ts +0 -0
  6284. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/extensions/index.d.ts +0 -0
  6285. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/feature-ids.d.ts +0 -0
  6286. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/function.d.ts +0 -0
  6287. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/http.d.ts +0 -0
  6288. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/identity/AnonymousIdentity.d.ts +0 -0
  6289. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts +0 -0
  6290. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/identity/Identity.d.ts +0 -0
  6291. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/identity/LoginIdentity.d.ts +0 -0
  6292. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/identity/TokenIdentity.d.ts +0 -0
  6293. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/identity/index.d.ts +0 -0
  6294. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/index.d.ts +0 -0
  6295. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/logger.d.ts +0 -0
  6296. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/middleware.d.ts +0 -0
  6297. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/pagination.d.ts +0 -0
  6298. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/profile.d.ts +0 -0
  6299. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/request.d.ts +0 -0
  6300. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/response.d.ts +0 -0
  6301. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/retry.d.ts +0 -0
  6302. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/serde.d.ts +0 -0
  6303. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/shapes.d.ts +0 -0
  6304. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/signature.d.ts +0 -0
  6305. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/stream.d.ts +0 -0
  6306. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/token.d.ts +0 -0
  6307. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/transfer.d.ts +0 -0
  6308. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/uri.d.ts +0 -0
  6309. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/util.d.ts +0 -0
  6310. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/ts3.4/waiter.d.ts +0 -0
  6311. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/uri.d.ts +0 -0
  6312. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/util.d.ts +0 -0
  6313. /package/node_modules/@aws-sdk/{types → client-iam/node_modules/@aws-sdk/types}/dist-types/waiter.d.ts +0 -0
  6314. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/LICENSE +0 -0
  6315. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/README.md +0 -0
  6316. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-cjs/index.js +0 -0
  6317. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-cjs/lib/aws/partitions.json +0 -0
  6318. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/aws.js +0 -0
  6319. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/index.js +0 -0
  6320. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/lib/aws/index.js +0 -0
  6321. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/lib/aws/isVirtualHostableS3Bucket.js +0 -0
  6322. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/lib/aws/parseArn.js +0 -0
  6323. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/lib/aws/partition.js +0 -0
  6324. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/lib/aws/partitions.json +0 -0
  6325. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/lib/isIpAddress.js +0 -0
  6326. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js +0 -0
  6327. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/resolveEndpoint.js +0 -0
  6328. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/types/EndpointError.js +0 -0
  6329. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/types/EndpointRuleObject.js +0 -0
  6330. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/types/ErrorRuleObject.js +0 -0
  6331. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/types/RuleSetObject.js +0 -0
  6332. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/types/TreeRuleObject.js +0 -0
  6333. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/types/index.js +0 -0
  6334. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-es/types/shared.js +0 -0
  6335. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/aws.d.ts +0 -0
  6336. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/index.d.ts +0 -0
  6337. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/lib/aws/index.d.ts +0 -0
  6338. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts +0 -0
  6339. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/lib/aws/parseArn.d.ts +0 -0
  6340. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/lib/aws/partition.d.ts +0 -0
  6341. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/lib/isIpAddress.d.ts +0 -0
  6342. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts +0 -0
  6343. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/resolveEndpoint.d.ts +0 -0
  6344. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/aws.d.ts +0 -0
  6345. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/index.d.ts +0 -0
  6346. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/lib/aws/index.d.ts +0 -0
  6347. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts +0 -0
  6348. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/lib/aws/parseArn.d.ts +0 -0
  6349. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/lib/aws/partition.d.ts +0 -0
  6350. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/lib/isIpAddress.d.ts +0 -0
  6351. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts +0 -0
  6352. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/resolveEndpoint.d.ts +0 -0
  6353. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/types/EndpointError.d.ts +0 -0
  6354. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/types/EndpointRuleObject.d.ts +0 -0
  6355. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/types/ErrorRuleObject.d.ts +0 -0
  6356. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/types/RuleSetObject.d.ts +0 -0
  6357. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/types/TreeRuleObject.d.ts +0 -0
  6358. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/types/index.d.ts +0 -0
  6359. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/ts3.4/types/shared.d.ts +0 -0
  6360. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/types/EndpointError.d.ts +0 -0
  6361. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/types/EndpointRuleObject.d.ts +0 -0
  6362. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/types/ErrorRuleObject.d.ts +0 -0
  6363. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/types/RuleSetObject.d.ts +0 -0
  6364. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/types/TreeRuleObject.d.ts +0 -0
  6365. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/types/index.d.ts +0 -0
  6366. /package/node_modules/@aws-sdk/{util-endpoints → client-iam/node_modules/@aws-sdk/util-endpoints}/dist-types/types/shared.d.ts +0 -0
  6367. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/LICENSE +0 -0
  6368. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/README.md +0 -0
  6369. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-cjs/configurations.js +0 -0
  6370. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-cjs/createUserAgentStringParsingProvider.js +0 -0
  6371. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-cjs/index.js +0 -0
  6372. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-cjs/index.native.js +0 -0
  6373. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-es/configurations.js +0 -0
  6374. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-es/createUserAgentStringParsingProvider.js +0 -0
  6375. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-es/index.js +0 -0
  6376. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-es/index.native.js +0 -0
  6377. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-types/configurations.d.ts +0 -0
  6378. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-types/createUserAgentStringParsingProvider.d.ts +0 -0
  6379. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-types/index.d.ts +0 -0
  6380. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-types/index.native.d.ts +0 -0
  6381. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-types/ts3.4/configurations.d.ts +0 -0
  6382. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts +0 -0
  6383. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-types/ts3.4/index.d.ts +0 -0
  6384. /package/node_modules/@aws-sdk/{util-user-agent-browser → client-iam/node_modules/@aws-sdk/util-user-agent-browser}/dist-types/ts3.4/index.native.d.ts +0 -0
  6385. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/LICENSE +0 -0
  6386. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/README.md +0 -0
  6387. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-cjs/index.js +0 -0
  6388. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-es/crt-availability.js +0 -0
  6389. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-es/defaultUserAgent.js +0 -0
  6390. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-es/index.js +0 -0
  6391. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-es/is-crt-available.js +0 -0
  6392. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-es/nodeAppIdConfigOptions.js +0 -0
  6393. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/crt-availability.d.ts +0 -0
  6394. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/defaultUserAgent.d.ts +0 -0
  6395. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/index.d.ts +0 -0
  6396. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/is-crt-available.d.ts +0 -0
  6397. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/nodeAppIdConfigOptions.d.ts +0 -0
  6398. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/ts3.4/crt-availability.d.ts +0 -0
  6399. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/ts3.4/defaultUserAgent.d.ts +0 -0
  6400. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/ts3.4/index.d.ts +0 -0
  6401. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/ts3.4/is-crt-available.d.ts +0 -0
  6402. /package/node_modules/@aws-sdk/{util-user-agent-node → client-iam/node_modules/@aws-sdk/util-user-agent-node}/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts +0 -0
  6403. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/LICENSE +0 -0
  6404. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/README.md +0 -0
  6405. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js +0 -0
  6406. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js +0 -0
  6407. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/endpointsConfig/index.js +0 -0
  6408. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js +0 -0
  6409. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js +0 -0
  6410. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js +0 -0
  6411. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/index.js +0 -0
  6412. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@smithy/config-resolver}/dist-es/regionConfig/config.js +0 -0
  6413. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@smithy/config-resolver}/dist-es/regionConfig/getRealRegion.js +0 -0
  6414. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@smithy/config-resolver}/dist-es/regionConfig/index.js +0 -0
  6415. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@smithy/config-resolver}/dist-es/regionConfig/isFipsRegion.js +0 -0
  6416. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/EndpointVariant.js +0 -0
  6417. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/EndpointVariantTag.js +0 -0
  6418. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/PartitionHash.js +0 -0
  6419. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/RegionHash.js +0 -0
  6420. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js +0 -0
  6421. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/getRegionInfo.js +0 -0
  6422. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/getResolvedHostname.js +0 -0
  6423. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/getResolvedPartition.js +0 -0
  6424. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js +0 -0
  6425. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-es/regionInfo/index.js +0 -0
  6426. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts +0 -0
  6427. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts +0 -0
  6428. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/endpointsConfig/index.d.ts +0 -0
  6429. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts +0 -0
  6430. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts +0 -0
  6431. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts +0 -0
  6432. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/index.d.ts +0 -0
  6433. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionConfig/config.d.ts +0 -0
  6434. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@smithy/config-resolver}/dist-types/regionConfig/getRealRegion.d.ts +0 -0
  6435. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@smithy/config-resolver}/dist-types/regionConfig/index.d.ts +0 -0
  6436. /package/node_modules/@aws-sdk/{region-config-resolver → client-iam/node_modules/@smithy/config-resolver}/dist-types/regionConfig/isFipsRegion.d.ts +0 -0
  6437. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts +0 -0
  6438. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts +0 -0
  6439. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts +0 -0
  6440. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/PartitionHash.d.ts +0 -0
  6441. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/RegionHash.d.ts +0 -0
  6442. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts +0 -0
  6443. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts +0 -0
  6444. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts +0 -0
  6445. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts +0 -0
  6446. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts +0 -0
  6447. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/regionInfo/index.d.ts +0 -0
  6448. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts +0 -0
  6449. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts +0 -0
  6450. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts +0 -0
  6451. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts +0 -0
  6452. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts +0 -0
  6453. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts +0 -0
  6454. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/index.d.ts +0 -0
  6455. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts +0 -0
  6456. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts +0 -0
  6457. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts +0 -0
  6458. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts +0 -0
  6459. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts +0 -0
  6460. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts +0 -0
  6461. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts +0 -0
  6462. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts +0 -0
  6463. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts +0 -0
  6464. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts +0 -0
  6465. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts +0 -0
  6466. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts +0 -0
  6467. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts +0 -0
  6468. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts +0 -0
  6469. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts +0 -0
  6470. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/LICENSE +0 -0
  6471. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/README.md +0 -0
  6472. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/cbor.d.ts +0 -0
  6473. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/cbor.js +0 -0
  6474. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-cjs/index.js +0 -0
  6475. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-cjs/submodules/cbor/index.js +0 -0
  6476. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-cjs/submodules/serde/index.js +0 -0
  6477. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/getSmithyContext.js +0 -0
  6478. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/index.js +0 -0
  6479. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +0 -0
  6480. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js +0 -0
  6481. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js +0 -0
  6482. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/middleware-http-auth-scheme/index.js +0 -0
  6483. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js +0 -0
  6484. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js +0 -0
  6485. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/middleware-http-signing/httpSigningMiddleware.js +0 -0
  6486. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/middleware-http-signing/index.js +0 -0
  6487. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/normalizeProvider.js +0 -0
  6488. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/pagination/createPaginator.js +0 -0
  6489. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/request-builder/requestBuilder.js +0 -0
  6490. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/setFeature.js +0 -0
  6491. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/CborCodec.js +0 -0
  6492. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js +0 -0
  6493. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/byte-printer.js +0 -0
  6494. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/cbor-decode.js +0 -0
  6495. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/cbor-encode.js +0 -0
  6496. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/cbor-types.js +0 -0
  6497. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/cbor.js +0 -0
  6498. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/index.js +0 -0
  6499. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/cbor/parseCborBody.js +0 -0
  6500. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/event-streams/index.js +0 -0
  6501. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/HttpBindingProtocol.js +0 -0
  6502. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/RpcProtocol.js +0 -0
  6503. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/SerdeContext.js +0 -0
  6504. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/collect-stream-body.js +0 -0
  6505. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/extended-encode-uri-component.js +0 -0
  6506. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/index.js +0 -0
  6507. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/requestBuilder.js +0 -0
  6508. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/resolve-path.js +0 -0
  6509. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js +0 -0
  6510. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js +0 -0
  6511. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js +0 -0
  6512. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js +0 -0
  6513. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js +0 -0
  6514. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/deref.js +0 -0
  6515. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js +0 -0
  6516. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/middleware/schema-middleware-types.js +0 -0
  6517. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/ErrorSchema.js +0 -0
  6518. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/ListSchema.js +0 -0
  6519. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/MapSchema.js +0 -0
  6520. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/OperationSchema.js +0 -0
  6521. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/Schema.js +0 -0
  6522. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/SimpleSchema.js +0 -0
  6523. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/StructureSchema.js +0 -0
  6524. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/sentinels.js +0 -0
  6525. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/schema/schemas/translateTraits.js +0 -0
  6526. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/copyDocumentWithTransform.js +0 -0
  6527. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/date-utils.js +0 -0
  6528. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/generateIdempotencyToken.js +0 -0
  6529. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/index.js +0 -0
  6530. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/lazy-json.js +0 -0
  6531. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/parse-utils.js +0 -0
  6532. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/quote-header.js +0 -0
  6533. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js +0 -0
  6534. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/split-every.js +0 -0
  6535. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/split-header.js +0 -0
  6536. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/submodules/serde/value/NumericValue.js +0 -0
  6537. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js +0 -0
  6538. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js +0 -0
  6539. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js +0 -0
  6540. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js +0 -0
  6541. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js +0 -0
  6542. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/util-identity-and-auth/index.js +0 -0
  6543. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js +0 -0
  6544. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/getSmithyContext.d.ts +0 -0
  6545. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/index.d.ts +0 -0
  6546. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts +0 -0
  6547. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts +0 -0
  6548. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts +0 -0
  6549. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/middleware-http-auth-scheme/index.d.ts +0 -0
  6550. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts +0 -0
  6551. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts +0 -0
  6552. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts +0 -0
  6553. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/middleware-http-signing/index.d.ts +0 -0
  6554. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/normalizeProvider.d.ts +0 -0
  6555. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/pagination/createPaginator.d.ts +0 -0
  6556. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/request-builder/requestBuilder.d.ts +0 -0
  6557. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/setFeature.d.ts +0 -0
  6558. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/CborCodec.d.ts +0 -0
  6559. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts +0 -0
  6560. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/byte-printer.d.ts +0 -0
  6561. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/cbor-decode.d.ts +0 -0
  6562. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/cbor-encode.d.ts +0 -0
  6563. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/cbor-types.d.ts +0 -0
  6564. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/cbor.d.ts +0 -0
  6565. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/index.d.ts +0 -0
  6566. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/cbor/parseCborBody.d.ts +0 -0
  6567. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts +0 -0
  6568. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/event-streams/index.d.ts +0 -0
  6569. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts +0 -0
  6570. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/HttpProtocol.d.ts +0 -0
  6571. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/RpcProtocol.d.ts +0 -0
  6572. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/SerdeContext.d.ts +0 -0
  6573. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/collect-stream-body.d.ts +0 -0
  6574. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts +0 -0
  6575. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/index.d.ts +0 -0
  6576. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/requestBuilder.d.ts +0 -0
  6577. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/resolve-path.d.ts +0 -0
  6578. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts +0 -0
  6579. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts +0 -0
  6580. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts +0 -0
  6581. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts +0 -0
  6582. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts +0 -0
  6583. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/schema/TypeRegistry.d.ts +0 -0
  6584. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/schema/deref.d.ts +0 -0
  6585. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts +0 -0
  6586. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts +0 -0
  6587. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts +0 -0
  6588. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts +0 -0
  6589. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/schema/schemas/sentinels.d.ts +0 -0
  6590. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/schema/schemas/translateTraits.d.ts +0 -0
  6591. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts +0 -0
  6592. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/date-utils.d.ts +0 -0
  6593. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts +0 -0
  6594. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/index.d.ts +0 -0
  6595. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/lazy-json.d.ts +0 -0
  6596. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/parse-utils.d.ts +0 -0
  6597. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/quote-header.d.ts +0 -0
  6598. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts +0 -0
  6599. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/split-every.d.ts +0 -0
  6600. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/split-header.d.ts +0 -0
  6601. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/submodules/serde/value/NumericValue.d.ts +0 -0
  6602. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/getSmithyContext.d.ts +0 -0
  6603. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/index.d.ts +0 -0
  6604. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts +0 -0
  6605. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts +0 -0
  6606. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts +0 -0
  6607. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts +0 -0
  6608. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts +0 -0
  6609. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts +0 -0
  6610. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts +0 -0
  6611. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/middleware-http-signing/index.d.ts +0 -0
  6612. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/normalizeProvider.d.ts +0 -0
  6613. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/pagination/createPaginator.d.ts +0 -0
  6614. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts +0 -0
  6615. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/setFeature.d.ts +0 -0
  6616. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts +0 -0
  6617. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts +0 -0
  6618. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts +0 -0
  6619. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts +0 -0
  6620. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts +0 -0
  6621. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts +0 -0
  6622. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts +0 -0
  6623. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/index.d.ts +0 -0
  6624. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts +0 -0
  6625. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts +0 -0
  6626. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/event-streams/index.d.ts +0 -0
  6627. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts +0 -0
  6628. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts +0 -0
  6629. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts +0 -0
  6630. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts +0 -0
  6631. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts +0 -0
  6632. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts +0 -0
  6633. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/index.d.ts +0 -0
  6634. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts +0 -0
  6635. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts +0 -0
  6636. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts +0 -0
  6637. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts +0 -0
  6638. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts +0 -0
  6639. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts +0 -0
  6640. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts +0 -0
  6641. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts +0 -0
  6642. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/schema/deref.d.ts +0 -0
  6643. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts +0 -0
  6644. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts +0 -0
  6645. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts +0 -0
  6646. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts +0 -0
  6647. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts +0 -0
  6648. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts +0 -0
  6649. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts +0 -0
  6650. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts +0 -0
  6651. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts +0 -0
  6652. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/index.d.ts +0 -0
  6653. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts +0 -0
  6654. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts +0 -0
  6655. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts +0 -0
  6656. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts +0 -0
  6657. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/split-every.d.ts +0 -0
  6658. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/split-header.d.ts +0 -0
  6659. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts +0 -0
  6660. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts +0 -0
  6661. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts +0 -0
  6662. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts +0 -0
  6663. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts +0 -0
  6664. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts +0 -0
  6665. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts +0 -0
  6666. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts +0 -0
  6667. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts +0 -0
  6668. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts +0 -0
  6669. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts +0 -0
  6670. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts +0 -0
  6671. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts +0 -0
  6672. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/util-identity-and-auth/index.d.ts +0 -0
  6673. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts +0 -0
  6674. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/event-streams.d.ts +0 -0
  6675. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/event-streams.js +0 -0
  6676. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/protocols.d.ts +0 -0
  6677. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/protocols.js +0 -0
  6678. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/schema.d.ts +0 -0
  6679. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/schema.js +0 -0
  6680. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/serde.d.ts +0 -0
  6681. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/core/serde.js +0 -0
  6682. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/LICENSE +0 -0
  6683. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/README.md +0 -0
  6684. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-cjs/index.js +0 -0
  6685. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/config/Endpoint.js +0 -0
  6686. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/config/EndpointConfigOptions.js +0 -0
  6687. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/config/EndpointMode.js +0 -0
  6688. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js +0 -0
  6689. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js +0 -0
  6690. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/fromContainerMetadata.js +0 -0
  6691. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/fromInstanceMetadata.js +0 -0
  6692. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/index.js +0 -0
  6693. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js +0 -0
  6694. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js +0 -0
  6695. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/remoteProvider/httpRequest.js +0 -0
  6696. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/remoteProvider/index.js +0 -0
  6697. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/remoteProvider/retry.js +0 -0
  6698. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/types.js +0 -0
  6699. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js +0 -0
  6700. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js +0 -0
  6701. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-es/utils/staticStabilityProvider.js +0 -0
  6702. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/config/Endpoint.d.ts +0 -0
  6703. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts +0 -0
  6704. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/config/EndpointMode.d.ts +0 -0
  6705. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts +0 -0
  6706. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts +0 -0
  6707. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/fromContainerMetadata.d.ts +0 -0
  6708. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts +0 -0
  6709. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/index.d.ts +0 -0
  6710. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts +0 -0
  6711. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts +0 -0
  6712. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts +0 -0
  6713. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/remoteProvider/index.d.ts +0 -0
  6714. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/remoteProvider/retry.d.ts +0 -0
  6715. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts +0 -0
  6716. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts +0 -0
  6717. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts +0 -0
  6718. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts +0 -0
  6719. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts +0 -0
  6720. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts +0 -0
  6721. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts +0 -0
  6722. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/index.d.ts +0 -0
  6723. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts +0 -0
  6724. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts +0 -0
  6725. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts +0 -0
  6726. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts +0 -0
  6727. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts +0 -0
  6728. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/types.d.ts +0 -0
  6729. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts +0 -0
  6730. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts +0 -0
  6731. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts +0 -0
  6732. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/types.d.ts +0 -0
  6733. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts +0 -0
  6734. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts +0 -0
  6735. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts +0 -0
  6736. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/LICENSE +0 -0
  6737. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/README.md +0 -0
  6738. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-cjs/index.js +0 -0
  6739. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-es/create-request.js +0 -0
  6740. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-es/fetch-http-handler.js +0 -0
  6741. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-es/index.js +0 -0
  6742. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-es/request-timeout.js +0 -0
  6743. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-es/stream-collector.js +0 -0
  6744. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/create-request.d.ts +0 -0
  6745. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/fetch-http-handler.d.ts +0 -0
  6746. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/index.d.ts +0 -0
  6747. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/request-timeout.d.ts +0 -0
  6748. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/stream-collector.d.ts +0 -0
  6749. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/ts3.4/create-request.d.ts +0 -0
  6750. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts +0 -0
  6751. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/ts3.4/index.d.ts +0 -0
  6752. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts +0 -0
  6753. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts +0 -0
  6754. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/hash-node/LICENSE +0 -0
  6755. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/hash-node/README.md +0 -0
  6756. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/hash-node/dist-cjs/index.js +0 -0
  6757. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/hash-node/dist-es/index.js +0 -0
  6758. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/hash-node/dist-types/index.d.ts +0 -0
  6759. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/hash-node/dist-types/ts3.4/index.d.ts +0 -0
  6760. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/LICENSE +0 -0
  6761. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/README.md +0 -0
  6762. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-cjs/index.js +0 -0
  6763. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-es/index.js +0 -0
  6764. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-es/invalidFunction.js +0 -0
  6765. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-es/invalidProvider.js +0 -0
  6766. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-types/index.d.ts +0 -0
  6767. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-types/invalidFunction.d.ts +0 -0
  6768. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-types/invalidProvider.d.ts +0 -0
  6769. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-types/ts3.4/index.d.ts +0 -0
  6770. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts +0 -0
  6771. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts +0 -0
  6772. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-content-length/LICENSE +0 -0
  6773. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-content-length/README.md +0 -0
  6774. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-content-length/dist-cjs/index.js +0 -0
  6775. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-content-length/dist-es/index.js +0 -0
  6776. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-content-length/dist-types/index.d.ts +0 -0
  6777. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-content-length/dist-types/ts3.4/index.d.ts +0 -0
  6778. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/LICENSE +0 -0
  6779. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/README.md +0 -0
  6780. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js +0 -0
  6781. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js +0 -0
  6782. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js +0 -0
  6783. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-cjs/index.js +0 -0
  6784. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js +0 -0
  6785. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js +0 -0
  6786. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js +0 -0
  6787. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js +0 -0
  6788. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js +0 -0
  6789. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/adaptors/index.js +0 -0
  6790. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/adaptors/toEndpointV1.js +0 -0
  6791. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/endpointMiddleware.js +0 -0
  6792. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/getEndpointPlugin.js +0 -0
  6793. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/index.js +0 -0
  6794. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/resolveEndpointConfig.js +0 -0
  6795. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js +0 -0
  6796. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/service-customizations/index.js +0 -0
  6797. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/service-customizations/s3.js +0 -0
  6798. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-es/types.js +0 -0
  6799. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts +0 -0
  6800. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts +0 -0
  6801. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts +0 -0
  6802. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts +0 -0
  6803. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts +0 -0
  6804. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/adaptors/index.d.ts +0 -0
  6805. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts +0 -0
  6806. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/endpointMiddleware.d.ts +0 -0
  6807. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/getEndpointPlugin.d.ts +0 -0
  6808. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/index.d.ts +0 -0
  6809. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts +0 -0
  6810. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts +0 -0
  6811. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/service-customizations/index.d.ts +0 -0
  6812. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/service-customizations/s3.d.ts +0 -0
  6813. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts +0 -0
  6814. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts +0 -0
  6815. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts +0 -0
  6816. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts +0 -0
  6817. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts +0 -0
  6818. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts +0 -0
  6819. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts +0 -0
  6820. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts +0 -0
  6821. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts +0 -0
  6822. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/index.d.ts +0 -0
  6823. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts +0 -0
  6824. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts +0 -0
  6825. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts +0 -0
  6826. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts +0 -0
  6827. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/ts3.4/types.d.ts +0 -0
  6828. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-endpoint/dist-types/types.d.ts +0 -0
  6829. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/LICENSE +0 -0
  6830. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/README.md +0 -0
  6831. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-cjs/index.js +0 -0
  6832. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js +0 -0
  6833. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js +0 -0
  6834. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/AdaptiveRetryStrategy.js +0 -0
  6835. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/StandardRetryStrategy.js +0 -0
  6836. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/configurations.js +0 -0
  6837. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/defaultRetryQuota.js +0 -0
  6838. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/delayDecider.js +0 -0
  6839. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/index.js +0 -0
  6840. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js +0 -0
  6841. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js +0 -0
  6842. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/omitRetryHeadersMiddleware.js +0 -0
  6843. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/retryDecider.js +0 -0
  6844. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/retryMiddleware.js +0 -0
  6845. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/types.js +0 -0
  6846. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-es/util.js +0 -0
  6847. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts +0 -0
  6848. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/StandardRetryStrategy.d.ts +0 -0
  6849. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/configurations.d.ts +0 -0
  6850. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/defaultRetryQuota.d.ts +0 -0
  6851. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/delayDecider.d.ts +0 -0
  6852. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/index.d.ts +0 -0
  6853. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts +0 -0
  6854. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts +0 -0
  6855. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts +0 -0
  6856. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/retryDecider.d.ts +0 -0
  6857. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/retryMiddleware.d.ts +0 -0
  6858. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts +0 -0
  6859. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts +0 -0
  6860. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/configurations.d.ts +0 -0
  6861. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts +0 -0
  6862. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/delayDecider.d.ts +0 -0
  6863. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/index.d.ts +0 -0
  6864. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts +0 -0
  6865. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts +0 -0
  6866. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts +0 -0
  6867. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/retryDecider.d.ts +0 -0
  6868. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts +0 -0
  6869. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/types.d.ts +0 -0
  6870. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/ts3.4/util.d.ts +0 -0
  6871. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/types.d.ts +0 -0
  6872. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-retry/dist-types/util.d.ts +0 -0
  6873. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/LICENSE +0 -0
  6874. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/README.md +0 -0
  6875. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-cjs/index.js +0 -0
  6876. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-es/deserializerMiddleware.js +0 -0
  6877. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-es/index.js +0 -0
  6878. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-es/serdePlugin.js +0 -0
  6879. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-es/serializerMiddleware.js +0 -0
  6880. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-types/deserializerMiddleware.d.ts +0 -0
  6881. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-types/index.d.ts +0 -0
  6882. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-types/serdePlugin.d.ts +0 -0
  6883. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-types/serializerMiddleware.d.ts +0 -0
  6884. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts +0 -0
  6885. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-types/ts3.4/index.d.ts +0 -0
  6886. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts +0 -0
  6887. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts +0 -0
  6888. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/LICENSE +0 -0
  6889. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/README.md +0 -0
  6890. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-cjs/index.js +0 -0
  6891. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-es/MiddlewareStack.js +0 -0
  6892. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-es/index.js +0 -0
  6893. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-es/types.js +0 -0
  6894. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-types/MiddlewareStack.d.ts +0 -0
  6895. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-types/index.d.ts +0 -0
  6896. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts +0 -0
  6897. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-types/ts3.4/index.d.ts +0 -0
  6898. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-types/ts3.4/types.d.ts +0 -0
  6899. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/middleware-stack/dist-types/types.d.ts +0 -0
  6900. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/LICENSE +0 -0
  6901. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/README.md +0 -0
  6902. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-cjs/index.js +0 -0
  6903. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-es/configLoader.js +0 -0
  6904. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-es/fromEnv.js +0 -0
  6905. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-es/fromSharedConfigFiles.js +0 -0
  6906. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-es/fromStatic.js +0 -0
  6907. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-es/getSelectorName.js +0 -0
  6908. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-es/index.js +0 -0
  6909. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/configLoader.d.ts +0 -0
  6910. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/fromEnv.d.ts +0 -0
  6911. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/fromSharedConfigFiles.d.ts +0 -0
  6912. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/fromStatic.d.ts +0 -0
  6913. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/getSelectorName.d.ts +0 -0
  6914. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/index.d.ts +0 -0
  6915. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/ts3.4/configLoader.d.ts +0 -0
  6916. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/ts3.4/fromEnv.d.ts +0 -0
  6917. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts +0 -0
  6918. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/ts3.4/fromStatic.d.ts +0 -0
  6919. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts +0 -0
  6920. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-config-provider/dist-types/ts3.4/index.d.ts +0 -0
  6921. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/LICENSE +0 -0
  6922. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/README.md +0 -0
  6923. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-cjs/index.js +0 -0
  6924. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/constants.js +0 -0
  6925. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/get-transformed-headers.js +0 -0
  6926. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/index.js +0 -0
  6927. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/node-http-handler.js +0 -0
  6928. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/node-http2-connection-manager.js +0 -0
  6929. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/node-http2-connection-pool.js +0 -0
  6930. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/node-http2-handler.js +0 -0
  6931. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/readable.mock.js +0 -0
  6932. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/server.mock.js +0 -0
  6933. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/set-connection-timeout.js +0 -0
  6934. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/set-request-timeout.js +0 -0
  6935. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/set-socket-keep-alive.js +0 -0
  6936. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/set-socket-timeout.js +0 -0
  6937. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/stream-collector/collector.js +0 -0
  6938. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/stream-collector/index.js +0 -0
  6939. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/stream-collector/readable.mock.js +0 -0
  6940. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/timing.js +0 -0
  6941. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-es/write-request-body.js +0 -0
  6942. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/constants.d.ts +0 -0
  6943. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/get-transformed-headers.d.ts +0 -0
  6944. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/index.d.ts +0 -0
  6945. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/node-http-handler.d.ts +0 -0
  6946. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/node-http2-connection-manager.d.ts +0 -0
  6947. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/node-http2-connection-pool.d.ts +0 -0
  6948. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/node-http2-handler.d.ts +0 -0
  6949. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/readable.mock.d.ts +0 -0
  6950. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/server.mock.d.ts +0 -0
  6951. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/set-connection-timeout.d.ts +0 -0
  6952. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/set-request-timeout.d.ts +0 -0
  6953. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/set-socket-keep-alive.d.ts +0 -0
  6954. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/set-socket-timeout.d.ts +0 -0
  6955. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -0
  6956. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/stream-collector/index.d.ts +0 -0
  6957. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +0 -0
  6958. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/timing.d.ts +0 -0
  6959. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/constants.d.ts +0 -0
  6960. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +0 -0
  6961. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/index.d.ts +0 -0
  6962. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +0 -0
  6963. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +0 -0
  6964. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +0 -0
  6965. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +0 -0
  6966. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +0 -0
  6967. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/server.mock.d.ts +0 -0
  6968. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +0 -0
  6969. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +0 -0
  6970. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +0 -0
  6971. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +0 -0
  6972. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +0 -0
  6973. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +0 -0
  6974. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +0 -0
  6975. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/timing.d.ts +0 -0
  6976. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +0 -0
  6977. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/node-http-handler/dist-types/write-request-body.d.ts +0 -0
  6978. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/LICENSE +0 -0
  6979. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/README.md +0 -0
  6980. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-cjs/index.js +0 -0
  6981. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-es/CredentialsProviderError.js +0 -0
  6982. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-es/ProviderError.js +0 -0
  6983. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-es/TokenProviderError.js +0 -0
  6984. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-es/chain.js +0 -0
  6985. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-es/fromStatic.js +0 -0
  6986. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-es/index.js +0 -0
  6987. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-es/memoize.js +0 -0
  6988. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/CredentialsProviderError.d.ts +0 -0
  6989. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/ProviderError.d.ts +0 -0
  6990. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/TokenProviderError.d.ts +0 -0
  6991. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/chain.d.ts +0 -0
  6992. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/fromStatic.d.ts +0 -0
  6993. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/index.d.ts +0 -0
  6994. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/memoize.d.ts +0 -0
  6995. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts +0 -0
  6996. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/ts3.4/ProviderError.d.ts +0 -0
  6997. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/ts3.4/TokenProviderError.d.ts +0 -0
  6998. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/ts3.4/chain.d.ts +0 -0
  6999. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/ts3.4/fromStatic.d.ts +0 -0
  7000. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/ts3.4/index.d.ts +0 -0
  7001. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/property-provider/dist-types/ts3.4/memoize.d.ts +0 -0
  7002. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/LICENSE +0 -0
  7003. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/README.md +0 -0
  7004. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-cjs/index.js +0 -0
  7005. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/Field.js +0 -0
  7006. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/Fields.js +0 -0
  7007. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/extensions/httpExtensionConfiguration.js +0 -0
  7008. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/extensions/index.js +0 -0
  7009. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/httpHandler.js +0 -0
  7010. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/httpRequest.js +0 -0
  7011. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/httpResponse.js +0 -0
  7012. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/index.js +0 -0
  7013. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/isValidHostname.js +0 -0
  7014. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-es/types.js +0 -0
  7015. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/Field.d.ts +0 -0
  7016. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/Fields.d.ts +0 -0
  7017. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts +0 -0
  7018. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/extensions/index.d.ts +0 -0
  7019. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/httpHandler.d.ts +0 -0
  7020. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/httpRequest.d.ts +0 -0
  7021. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/httpResponse.d.ts +0 -0
  7022. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/index.d.ts +0 -0
  7023. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/isValidHostname.d.ts +0 -0
  7024. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/Field.d.ts +0 -0
  7025. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/Fields.d.ts +0 -0
  7026. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts +0 -0
  7027. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/extensions/index.d.ts +0 -0
  7028. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/httpHandler.d.ts +0 -0
  7029. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/httpRequest.d.ts +0 -0
  7030. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/httpResponse.d.ts +0 -0
  7031. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/index.d.ts +0 -0
  7032. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/isValidHostname.d.ts +0 -0
  7033. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/ts3.4/types.d.ts +0 -0
  7034. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/protocol-http/dist-types/types.d.ts +0 -0
  7035. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/LICENSE +0 -0
  7036. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/README.md +0 -0
  7037. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-cjs/index.js +0 -0
  7038. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/NoOpLogger.js +0 -0
  7039. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/client.js +0 -0
  7040. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/collect-stream-body.js +0 -0
  7041. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/command.js +0 -0
  7042. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/constants.js +0 -0
  7043. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/create-aggregated-client.js +0 -0
  7044. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/default-error-handler.js +0 -0
  7045. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/defaults-mode.js +0 -0
  7046. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js +0 -0
  7047. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/exceptions.js +0 -0
  7048. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/extended-encode-uri-component.js +0 -0
  7049. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/extensions/checksum.js +0 -0
  7050. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js +0 -0
  7051. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/extensions/index.js +0 -0
  7052. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/extensions/retry.js +0 -0
  7053. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/get-array-if-single-item.js +0 -0
  7054. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/get-value-from-text-node.js +0 -0
  7055. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/index.js +0 -0
  7056. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/is-serializable-header-value.js +0 -0
  7057. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/object-mapping.js +0 -0
  7058. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/resolve-path.js +0 -0
  7059. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/schemaLogFilter.js +0 -0
  7060. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/ser-utils.js +0 -0
  7061. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-es/serde-json.js +0 -0
  7062. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/NoOpLogger.d.ts +0 -0
  7063. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/client.d.ts +0 -0
  7064. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/collect-stream-body.d.ts +0 -0
  7065. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/command.d.ts +0 -0
  7066. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/constants.d.ts +0 -0
  7067. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/create-aggregated-client.d.ts +0 -0
  7068. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/default-error-handler.d.ts +0 -0
  7069. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/defaults-mode.d.ts +0 -0
  7070. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts +0 -0
  7071. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/exceptions.d.ts +0 -0
  7072. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/extended-encode-uri-component.d.ts +0 -0
  7073. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/extensions/checksum.d.ts +0 -0
  7074. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts +0 -0
  7075. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/extensions/index.d.ts +0 -0
  7076. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/extensions/retry.d.ts +0 -0
  7077. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/get-array-if-single-item.d.ts +0 -0
  7078. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/get-value-from-text-node.d.ts +0 -0
  7079. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/index.d.ts +0 -0
  7080. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/is-serializable-header-value.d.ts +0 -0
  7081. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/object-mapping.d.ts +0 -0
  7082. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/resolve-path.d.ts +0 -0
  7083. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/schemaLogFilter.d.ts +0 -0
  7084. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ser-utils.d.ts +0 -0
  7085. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/serde-json.d.ts +0 -0
  7086. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts +0 -0
  7087. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/client.d.ts +0 -0
  7088. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts +0 -0
  7089. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/command.d.ts +0 -0
  7090. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/constants.d.ts +0 -0
  7091. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts +0 -0
  7092. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/default-error-handler.d.ts +0 -0
  7093. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/defaults-mode.d.ts +0 -0
  7094. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts +0 -0
  7095. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/exceptions.d.ts +0 -0
  7096. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts +0 -0
  7097. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts +0 -0
  7098. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +0 -0
  7099. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/extensions/index.d.ts +0 -0
  7100. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/extensions/retry.d.ts +0 -0
  7101. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts +0 -0
  7102. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts +0 -0
  7103. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/index.d.ts +0 -0
  7104. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts +0 -0
  7105. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/object-mapping.d.ts +0 -0
  7106. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/resolve-path.d.ts +0 -0
  7107. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts +0 -0
  7108. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/ser-utils.d.ts +0 -0
  7109. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/smithy-client/dist-types/ts3.4/serde-json.d.ts +0 -0
  7110. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/LICENSE +0 -0
  7111. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/README.md +0 -0
  7112. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-cjs/index.js +0 -0
  7113. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/abort-handler.js +0 -0
  7114. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/abort.js +0 -0
  7115. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/auth/HttpApiKeyAuth.js +0 -0
  7116. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/auth/HttpAuthScheme.js +0 -0
  7117. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/auth/HttpAuthSchemeProvider.js +0 -0
  7118. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/auth/HttpSigner.js +0 -0
  7119. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/auth/IdentityProviderConfig.js +0 -0
  7120. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/auth/auth.js +0 -0
  7121. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/auth/index.js +0 -0
  7122. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/blob/blob-payload-input-types.js +0 -0
  7123. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/checksum.js +0 -0
  7124. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/client.js +0 -0
  7125. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/command.js +0 -0
  7126. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/connection/config.js +0 -0
  7127. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/connection/index.js +0 -0
  7128. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/connection/manager.js +0 -0
  7129. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/connection/pool.js +0 -0
  7130. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/crypto.js +0 -0
  7131. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/downlevel-ts3.4/transform/type-transform.js +0 -0
  7132. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/encode.js +0 -0
  7133. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/endpoint.js +0 -0
  7134. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/endpoints/EndpointRuleObject.js +0 -0
  7135. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/endpoints/ErrorRuleObject.js +0 -0
  7136. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/endpoints/RuleSetObject.js +0 -0
  7137. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/endpoints/TreeRuleObject.js +0 -0
  7138. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/endpoints/index.js +0 -0
  7139. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/endpoints/shared.js +0 -0
  7140. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/eventStream.js +0 -0
  7141. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/extensions/checksum.js +0 -0
  7142. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/extensions/defaultClientConfiguration.js +0 -0
  7143. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/extensions/defaultExtensionConfiguration.js +0 -0
  7144. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/extensions/index.js +0 -0
  7145. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/extensions/retry.js +0 -0
  7146. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/externals-check/browser-externals-check.js +0 -0
  7147. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/feature-ids.js +0 -0
  7148. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/http/httpHandlerInitialization.js +0 -0
  7149. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/http.js +0 -0
  7150. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/identity/apiKeyIdentity.js +0 -0
  7151. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/identity/awsCredentialIdentity.js +0 -0
  7152. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/identity/identity.js +0 -0
  7153. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/identity/index.js +0 -0
  7154. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/identity/tokenIdentity.js +0 -0
  7155. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/logger.js +0 -0
  7156. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/middleware.js +0 -0
  7157. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/pagination.js +0 -0
  7158. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/profile.js +0 -0
  7159. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/response.js +0 -0
  7160. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/retry.js +0 -0
  7161. /package/node_modules/{@smithy/types/dist-es/schema/schema.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js} +0 -0
  7162. /package/node_modules/{@smithy/types/dist-es/schema/sentinels.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/schema/schema.js} +0 -0
  7163. /package/node_modules/{@smithy/types/dist-es/schema/static-schemas.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/schema/sentinels.js} +0 -0
  7164. /package/node_modules/{@smithy/types/dist-es/schema/traits.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/schema/static-schemas.js} +0 -0
  7165. /package/node_modules/{@smithy/types/dist-es/serde.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/schema/traits.js} +0 -0
  7166. /package/node_modules/{@smithy/types/dist-es/shapes.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/serde.js} +0 -0
  7167. /package/node_modules/{@smithy/types/dist-es/signature.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/shapes.js} +0 -0
  7168. /package/node_modules/{@smithy/types/dist-es/stream.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/signature.js} +0 -0
  7169. /package/node_modules/{@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/stream.js} +0 -0
  7170. /package/node_modules/{@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js} +0 -0
  7171. /package/node_modules/{@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js} +0 -0
  7172. /package/node_modules/{@smithy/types/dist-es/transform/client-method-transforms.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js} +0 -0
  7173. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-es/transfer.js +0 -0
  7174. /package/node_modules/{@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js} +0 -0
  7175. /package/node_modules/{@smithy/types/dist-es/transform/exact.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js} +0 -0
  7176. /package/node_modules/{@smithy/types/dist-es/transform/mutable.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/transform/exact.js} +0 -0
  7177. /package/node_modules/{@smithy/types/dist-es/transform/no-undefined.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/transform/mutable.js} +0 -0
  7178. /package/node_modules/{@smithy/types/dist-es/transform/type-transform.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/transform/no-undefined.js} +0 -0
  7179. /package/node_modules/{@smithy/types/dist-es/uri.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/transform/type-transform.js} +0 -0
  7180. /package/node_modules/{@smithy/types/dist-es/util.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/uri.js} +0 -0
  7181. /package/node_modules/{@smithy/types/dist-es/waiter.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/util.js} +0 -0
  7182. /package/node_modules/{@smithy/util-retry/dist-es/types.js → @aws-sdk/client-iam/node_modules/@smithy/types/dist-es/waiter.js} +0 -0
  7183. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/abort-handler.d.ts +0 -0
  7184. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/abort.d.ts +0 -0
  7185. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/auth/HttpApiKeyAuth.d.ts +0 -0
  7186. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/auth/HttpAuthScheme.d.ts +0 -0
  7187. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +0 -0
  7188. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/auth/HttpSigner.d.ts +0 -0
  7189. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/auth/IdentityProviderConfig.d.ts +0 -0
  7190. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/auth/auth.d.ts +0 -0
  7191. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/auth/index.d.ts +0 -0
  7192. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/blob/blob-payload-input-types.d.ts +0 -0
  7193. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/checksum.d.ts +0 -0
  7194. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/client.d.ts +0 -0
  7195. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/command.d.ts +0 -0
  7196. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/connection/config.d.ts +0 -0
  7197. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/connection/index.d.ts +0 -0
  7198. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/connection/manager.d.ts +0 -0
  7199. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/connection/pool.d.ts +0 -0
  7200. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/crypto.d.ts +0 -0
  7201. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +0 -0
  7202. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/encode.d.ts +0 -0
  7203. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/endpoint.d.ts +0 -0
  7204. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/endpoints/EndpointRuleObject.d.ts +0 -0
  7205. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/endpoints/ErrorRuleObject.d.ts +0 -0
  7206. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/endpoints/RuleSetObject.d.ts +0 -0
  7207. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/endpoints/TreeRuleObject.d.ts +0 -0
  7208. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/endpoints/index.d.ts +0 -0
  7209. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/endpoints/shared.d.ts +0 -0
  7210. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/eventStream.d.ts +0 -0
  7211. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/extensions/checksum.d.ts +0 -0
  7212. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/extensions/defaultClientConfiguration.d.ts +0 -0
  7213. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +0 -0
  7214. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/extensions/index.d.ts +0 -0
  7215. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/extensions/retry.d.ts +0 -0
  7216. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/externals-check/browser-externals-check.d.ts +0 -0
  7217. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/feature-ids.d.ts +0 -0
  7218. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/http/httpHandlerInitialization.d.ts +0 -0
  7219. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/http.d.ts +0 -0
  7220. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/identity/apiKeyIdentity.d.ts +0 -0
  7221. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/identity/awsCredentialIdentity.d.ts +0 -0
  7222. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/identity/identity.d.ts +0 -0
  7223. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/identity/index.d.ts +0 -0
  7224. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/identity/tokenIdentity.d.ts +0 -0
  7225. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/logger.d.ts +0 -0
  7226. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/middleware.d.ts +0 -0
  7227. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/pagination.d.ts +0 -0
  7228. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/profile.d.ts +0 -0
  7229. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/response.d.ts +0 -0
  7230. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/retry.d.ts +0 -0
  7231. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/schema/sentinels.d.ts +0 -0
  7232. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/schema/traits.d.ts +0 -0
  7233. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/shapes.d.ts +0 -0
  7234. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/signature.d.ts +0 -0
  7235. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/stream.d.ts +0 -0
  7236. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +0 -0
  7237. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +0 -0
  7238. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +0 -0
  7239. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/transfer.d.ts +0 -0
  7240. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/transform/client-method-transforms.d.ts +0 -0
  7241. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +0 -0
  7242. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/transform/exact.d.ts +0 -0
  7243. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/transform/mutable.d.ts +0 -0
  7244. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/transform/no-undefined.d.ts +0 -0
  7245. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/transform/type-transform.d.ts +0 -0
  7246. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/abort-handler.d.ts +0 -0
  7247. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/abort.d.ts +0 -0
  7248. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +0 -0
  7249. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +0 -0
  7250. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +0 -0
  7251. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/auth/HttpSigner.d.ts +0 -0
  7252. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +0 -0
  7253. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/auth/auth.d.ts +0 -0
  7254. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/auth/index.d.ts +0 -0
  7255. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +0 -0
  7256. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/checksum.d.ts +0 -0
  7257. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/client.d.ts +0 -0
  7258. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/command.d.ts +0 -0
  7259. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/connection/config.d.ts +0 -0
  7260. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/connection/index.d.ts +0 -0
  7261. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/connection/manager.d.ts +0 -0
  7262. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/connection/pool.d.ts +0 -0
  7263. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/crypto.d.ts +0 -0
  7264. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +0 -0
  7265. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/encode.d.ts +0 -0
  7266. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/endpoint.d.ts +0 -0
  7267. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +0 -0
  7268. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +0 -0
  7269. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +0 -0
  7270. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +0 -0
  7271. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/endpoints/index.d.ts +0 -0
  7272. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/endpoints/shared.d.ts +0 -0
  7273. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/eventStream.d.ts +0 -0
  7274. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/extensions/checksum.d.ts +0 -0
  7275. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +0 -0
  7276. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +0 -0
  7277. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/extensions/index.d.ts +0 -0
  7278. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/extensions/retry.d.ts +0 -0
  7279. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +0 -0
  7280. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/feature-ids.d.ts +0 -0
  7281. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +0 -0
  7282. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/http.d.ts +0 -0
  7283. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +0 -0
  7284. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +0 -0
  7285. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/identity/identity.d.ts +0 -0
  7286. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/identity/index.d.ts +0 -0
  7287. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +0 -0
  7288. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/logger.d.ts +0 -0
  7289. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/middleware.d.ts +0 -0
  7290. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/pagination.d.ts +0 -0
  7291. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/profile.d.ts +0 -0
  7292. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/response.d.ts +0 -0
  7293. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/retry.d.ts +0 -0
  7294. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/schema/sentinels.d.ts +0 -0
  7295. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/schema/traits.d.ts +0 -0
  7296. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/shapes.d.ts +0 -0
  7297. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/signature.d.ts +0 -0
  7298. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/stream.d.ts +0 -0
  7299. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +0 -0
  7300. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +0 -0
  7301. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +0 -0
  7302. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/transfer.d.ts +0 -0
  7303. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +0 -0
  7304. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +0 -0
  7305. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/transform/exact.d.ts +0 -0
  7306. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/transform/mutable.d.ts +0 -0
  7307. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/transform/no-undefined.d.ts +0 -0
  7308. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/transform/type-transform.d.ts +0 -0
  7309. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/uri.d.ts +0 -0
  7310. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/util.d.ts +0 -0
  7311. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/ts3.4/waiter.d.ts +0 -0
  7312. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/uri.d.ts +0 -0
  7313. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/util.d.ts +0 -0
  7314. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/types/dist-types/waiter.d.ts +0 -0
  7315. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/url-parser/LICENSE +0 -0
  7316. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/url-parser/README.md +0 -0
  7317. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/url-parser/dist-cjs/index.js +0 -0
  7318. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/url-parser/dist-es/index.js +0 -0
  7319. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/url-parser/dist-types/index.d.ts +0 -0
  7320. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/url-parser/dist-types/ts3.4/index.d.ts +0 -0
  7321. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/LICENSE +0 -0
  7322. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/README.md +0 -0
  7323. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-cjs/constants.js +0 -0
  7324. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-cjs/index.js +0 -0
  7325. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js +0 -0
  7326. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js +0 -0
  7327. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-es/constants.js +0 -0
  7328. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-es/index.js +0 -0
  7329. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js +0 -0
  7330. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js +0 -0
  7331. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-types/constants.d.ts +0 -0
  7332. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-types/index.d.ts +0 -0
  7333. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts +0 -0
  7334. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts +0 -0
  7335. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts +0 -0
  7336. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts +0 -0
  7337. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts +0 -0
  7338. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts +0 -0
  7339. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/LICENSE +0 -0
  7340. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/README.md +0 -0
  7341. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-cjs/index.js +0 -0
  7342. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-es/constants.js +0 -0
  7343. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-es/defaultsModeConfig.js +0 -0
  7344. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-es/index.js +0 -0
  7345. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js +0 -0
  7346. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-types/constants.d.ts +0 -0
  7347. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts +0 -0
  7348. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-types/index.d.ts +0 -0
  7349. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts +0 -0
  7350. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts +0 -0
  7351. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts +0 -0
  7352. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-types/ts3.4/index.d.ts +0 -0
  7353. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts +0 -0
  7354. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/LICENSE +0 -0
  7355. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/README.md +0 -0
  7356. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-cjs/index.js +0 -0
  7357. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-es/getSmithyContext.js +0 -0
  7358. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-es/index.js +0 -0
  7359. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-es/normalizeProvider.js +0 -0
  7360. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-types/getSmithyContext.d.ts +0 -0
  7361. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-types/index.d.ts +0 -0
  7362. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-types/normalizeProvider.d.ts +0 -0
  7363. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts +0 -0
  7364. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-types/ts3.4/index.d.ts +0 -0
  7365. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts +0 -0
  7366. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/LICENSE +0 -0
  7367. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/README.md +0 -0
  7368. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-cjs/index.js +0 -0
  7369. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/AdaptiveRetryStrategy.js +0 -0
  7370. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/ConfiguredRetryStrategy.js +0 -0
  7371. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/DefaultRateLimiter.js +0 -0
  7372. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/StandardRetryStrategy.js +0 -0
  7373. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/config.js +0 -0
  7374. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/constants.js +0 -0
  7375. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/defaultRetryBackoffStrategy.js +0 -0
  7376. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/defaultRetryToken.js +0 -0
  7377. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-es/index.js +0 -0
  7378. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/AdaptiveRetryStrategy.d.ts +0 -0
  7379. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ConfiguredRetryStrategy.d.ts +0 -0
  7380. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/DefaultRateLimiter.d.ts +0 -0
  7381. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/StandardRetryStrategy.d.ts +0 -0
  7382. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/config.d.ts +0 -0
  7383. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/constants.d.ts +0 -0
  7384. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts +0 -0
  7385. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/defaultRetryToken.d.ts +0 -0
  7386. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/index.d.ts +0 -0
  7387. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts +0 -0
  7388. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts +0 -0
  7389. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts +0 -0
  7390. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts +0 -0
  7391. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/config.d.ts +0 -0
  7392. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/constants.d.ts +0 -0
  7393. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts +0 -0
  7394. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts +0 -0
  7395. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/index.d.ts +0 -0
  7396. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/ts3.4/types.d.ts +0 -0
  7397. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-retry/dist-types/types.d.ts +0 -0
  7398. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/LICENSE +0 -0
  7399. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/README.md +0 -0
  7400. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/ByteArrayCollector.js +0 -0
  7401. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/checksum/ChecksumStream.browser.js +0 -0
  7402. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/checksum/ChecksumStream.js +0 -0
  7403. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/checksum/createChecksumStream.browser.js +0 -0
  7404. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/checksum/createChecksumStream.js +0 -0
  7405. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/createBufferedReadable.js +0 -0
  7406. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/createBufferedReadableStream.js +0 -0
  7407. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js +0 -0
  7408. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/getAwsChunkedEncodingStream.js +0 -0
  7409. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/headStream.browser.js +0 -0
  7410. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/headStream.js +0 -0
  7411. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/sdk-stream-mixin.browser.js +0 -0
  7412. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/sdk-stream-mixin.js +0 -0
  7413. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/splitStream.browser.js +0 -0
  7414. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/splitStream.js +0 -0
  7415. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-cjs/stream-type-check.js +0 -0
  7416. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/ByteArrayCollector.js +0 -0
  7417. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/checksum/ChecksumStream.browser.js +0 -0
  7418. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/checksum/ChecksumStream.js +0 -0
  7419. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/checksum/createChecksumStream.browser.js +0 -0
  7420. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/checksum/createChecksumStream.js +0 -0
  7421. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/createBufferedReadable.js +0 -0
  7422. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/createBufferedReadableStream.js +0 -0
  7423. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js +0 -0
  7424. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/getAwsChunkedEncodingStream.js +0 -0
  7425. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/headStream.browser.js +0 -0
  7426. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/headStream.js +0 -0
  7427. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/index.js +0 -0
  7428. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/sdk-stream-mixin.browser.js +0 -0
  7429. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/sdk-stream-mixin.js +0 -0
  7430. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/splitStream.browser.js +0 -0
  7431. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/splitStream.js +0 -0
  7432. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-es/stream-type-check.js +0 -0
  7433. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ByteArrayCollector.d.ts +0 -0
  7434. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts +0 -0
  7435. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts +0 -0
  7436. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/checksum/ChecksumStream.d.ts +0 -0
  7437. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts +0 -0
  7438. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/checksum/createChecksumStream.d.ts +0 -0
  7439. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/createBufferedReadable.d.ts +0 -0
  7440. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/createBufferedReadableStream.d.ts +0 -0
  7441. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts +0 -0
  7442. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts +0 -0
  7443. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/headStream.browser.d.ts +0 -0
  7444. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/headStream.d.ts +0 -0
  7445. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/index.d.ts +0 -0
  7446. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/sdk-stream-mixin.browser.d.ts +0 -0
  7447. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/sdk-stream-mixin.d.ts +0 -0
  7448. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/splitStream.browser.d.ts +0 -0
  7449. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/splitStream.d.ts +0 -0
  7450. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/stream-type-check.d.ts +0 -0
  7451. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts +0 -0
  7452. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts +0 -0
  7453. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts +0 -0
  7454. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts +0 -0
  7455. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts +0 -0
  7456. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts +0 -0
  7457. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts +0 -0
  7458. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts +0 -0
  7459. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts +0 -0
  7460. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts +0 -0
  7461. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/headStream.browser.d.ts +0 -0
  7462. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/headStream.d.ts +0 -0
  7463. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/index.d.ts +0 -0
  7464. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts +0 -0
  7465. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts +0 -0
  7466. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/splitStream.browser.d.ts +0 -0
  7467. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/splitStream.d.ts +0 -0
  7468. /package/node_modules/{@smithy → @aws-sdk/client-iam/node_modules/@smithy}/util-stream/dist-types/ts3.4/stream-type-check.d.ts +0 -0
  7469. /package/node_modules/{@smithy → @aws-sdk/client-sso/node_modules/@smithy}/config-resolver/dist-es/regionConfig/config.js +0 -0
  7470. /package/node_modules/{@smithy → @aws-sdk/client-sso/node_modules/@smithy}/config-resolver/dist-es/regionConfig/getRealRegion.js +0 -0
  7471. /package/node_modules/{@smithy → @aws-sdk/client-sso/node_modules/@smithy}/config-resolver/dist-es/regionConfig/index.js +0 -0
  7472. /package/node_modules/{@smithy → @aws-sdk/client-sso/node_modules/@smithy}/config-resolver/dist-es/regionConfig/isFipsRegion.js +0 -0
  7473. /package/node_modules/{@smithy → @aws-sdk/client-sso/node_modules/@smithy}/config-resolver/dist-types/regionConfig/getRealRegion.d.ts +0 -0
  7474. /package/node_modules/{@smithy → @aws-sdk/client-sso/node_modules/@smithy}/config-resolver/dist-types/regionConfig/index.d.ts +0 -0
  7475. /package/node_modules/{@smithy → @aws-sdk/client-sso/node_modules/@smithy}/config-resolver/dist-types/regionConfig/isFipsRegion.d.ts +0 -0
  7476. /package/node_modules/@aws-sdk/{region-config-resolver/dist-types/ts3.4/regionConfig/index.d.ts → token-providers/node_modules/@smithy/config-resolver/dist-es/regionConfig/index.js} +0 -0
@@ -5367,6 +5367,10 @@ class AwsManagedPolicy extends iam_floyd_1.AwsManagedPolicy {
5367
5367
  Route53ResolverServiceRolePolicy() {
5368
5368
  return aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName(iam_floyd_1.AwsManagedPolicy.Route53ResolverServiceRolePolicy);
5369
5369
  }
5370
+ /** A service-linked role required for AWS RTBFabric to create and manage your network interface resources and deliver metrics. */
5371
+ RTBFabricServiceRolePolicy() {
5372
+ return aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName(iam_floyd_1.AwsManagedPolicy.RTBFabricServiceRolePolicy);
5373
+ }
5370
5374
  /** Enables access to AWS Services and Resources used or managed by S3 Storage Lens */
5371
5375
  S3StorageLensServiceRolePolicy() {
5372
5376
  return aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName(iam_floyd_1.AwsManagedPolicy.S3StorageLensServiceRolePolicy);
@@ -5601,4 +5605,4 @@ class AwsManagedPolicy extends iam_floyd_1.AwsManagedPolicy {
5601
5605
  }
5602
5606
  }
5603
5607
  exports.AwsManagedPolicy = AwsManagedPolicy;
5604
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWlhbS1mbG95ZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1pYW0tZmxveWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXNDO0FBQ3RDLDJDQUF5RTtBQUV6RTs7Ozs7O0dBTUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLDRCQUFzQjtJQUN4RCx5REFBeUQ7SUFDbEQsK0JBQStCO1FBQ2xDLE9BQU8scUJBQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsNEJBQXNCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBRUQsMERBQTBEO0lBQ25ELG1CQUFtQjtRQUN0QixPQUFPLHFCQUFPLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDRCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELHFJQUFxSTtJQUM5SCwwQkFBMEI7UUFDN0IsT0FBTyxxQkFBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBc0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCwyTEFBMkw7SUFDcEwsc0NBQXNDO1FBQ3pDLE9BQU8scUJBQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsNEJBQXNCLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRUQsNEhBQTRIO0lBQ3JILGtDQUFrQztRQUNyQyxPQUFPLHFCQUFPLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDRCQUFzQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVELG1KQUFtSjtJQUM1SSxvQkFBb0I7UUFDdkIsT0FBTyxxQkFBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCw0S0FBNEs7SUFDckssdUJBQXVCO1FBQzFCLE9BQU8scUJBQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdC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QUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBc0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFFRCw0RkFBNEY7SUFDckYsb0NBQW9DO1FBQ3ZDLE9BQU8scUJBQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsNEJBQXNCLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsc0ZBQXNGO0lBQy9FLHlCQUF5QjtRQUM1QixPQUFPLHFCQUFPLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDRCQUFzQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUcsQ0FBQztDQUNKO0FBejBORCw0Q0F5ME5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX2lhbSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEF3c01hbmFnZWRQb2xpY3kgYXMgQXdzTWFuYWdlZFBvbGljeVN0YXRpYyB9IGZyb20gJy4vaWFtLWZsb3lkJztcblxuLyoqXG4gKiBQcm92aWRlcyBhbGwgQVdTIG1hbmFnZWQgcG9saWNpZXMuXG4gKlxuICogVG8gZ2V0IHRoZSBuYW1lLCBhY2Nlc3MgdGhlIHN0YXRpYyBwcm9wZXJ0aWVzIG9mIHRoaXMgY2xhc3MsIGUuZy4gYEF3c01hbmFnZWRQb2xpY3kuUmVhZE9ubHlBY2Nlc3NgLlxuICpcbiAqICBUbyBnZXQgYW4gYGF3c19pYW0uSU1hbmFnZWRQb2xpY3lgIG9iamVjdCwgY2FsbCB0aGUgbWV0aG9kcyBvbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MsIGUuZy4gYG5ldyBBd3NNYW5hZ2VkUG9saWN5KCkuUmVhZE9ubHlBY2Nlc3MoKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NNYW5hZ2VkUG9saWN5IGV4dGVuZHMgQXdzTWFuYWdlZFBvbGljeVN0YXRpYyB7XG4gICAgLyoqIEFsbG93IEFjY2VzcyBBbmFseXplciB0byBhbmFseXplIHJlc291cmNlIG1ldGFkYXRhICovXG4gICAgcHVibGljIEFjY2Vzc0FuYWx5emVyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWNjZXNzQW5hbHl6ZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBzZXJ2aWNlcyBhbmQgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBZG1pbmlzdHJhdG9yQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFkbWluaXN0cmF0b3JBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgYWNjb3VudCBhZG1pbmlzdHJhdGl2ZSBwZXJtaXNzaW9ucyB3aGlsZSBleHBsaWNpdGx5IGFsbG93aW5nIGRpcmVjdCBhY2Nlc3MgdG8gcmVzb3VyY2VzIG5lZWRlZCBieSBBbXBsaWZ5IGFwcGxpY2F0aW9ucy4gKi9cbiAgICBwdWJsaWMgQWRtaW5pc3RyYXRvckFjY2Vzc0FtcGxpZnkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWRtaW5pc3RyYXRvckFjY2Vzc0FtcGxpZnkpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgYWNjb3VudCBhZG1pbmlzdHJhdGl2ZSBwZXJtaXNzaW9ucy4gRXhwbGljaXRseSBhbGxvd3MgZGV2ZWxvcGVycyBhbmQgYWRtaW5pc3RyYXRvcnMgdG8gZ2FpbiBkaXJlY3QgYWNjZXNzIHRvIHJlc291cmNlcyB0aGV5IG5lZWQgdG8gbWFuYWdlIEFXUyBFbGFzdGljIEJlYW5zdGFsayBhcHBsaWNhdGlvbnMgKi9cbiAgICBwdWJsaWMgQWRtaW5pc3RyYXRvckFjY2Vzc0FXU0VsYXN0aWNCZWFuc3RhbGsoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWRtaW5pc3RyYXRvckFjY2Vzc0FXU0VsYXN0aWNCZWFuc3RhbGspO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyByZXF1aXJlZCBieSB0aGUgQW1hem9uIEFJIE9wZXJhdGlvbnMgQXNzaXN0YW50IHRvIGdlbmVyYXRlIGluY2lkZW50IHJlcG9ydCBvZiB0aGUgaW52ZXN0aWdhdGlvbi4gKi9cbiAgICBwdWJsaWMgQUlPcHNBc3Npc3RhbnRJbmNpZGVudFJlcG9ydFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BSU9wc0Fzc2lzdGFudEluY2lkZW50UmVwb3J0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgUmVhZE9ubHkgcGVybWlzc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEFtYXpvbiBBSSBPcGVyYXRpb25zIEFzc2lzdGFudCB0byBkbyBhbmFseXNpcyBvbiBjdXN0b21lciBBV1MgcmVzb3VyY2VzIGR1cmluZyBpbnZlc3RpZ2F0aW9ucy4gKi9cbiAgICBwdWJsaWMgQUlPcHNBc3Npc3RhbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQUlPcHNBc3Npc3RhbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEFJIE9wZXJhdGlvbnMgc2VydmljZSBhbmQgaXRzIHJlcXVpcmVkIHBlcm1pc3Npb25zIHZpYSBBV1MgY29uc29sZS4gSXQgYWxzbyBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byB1c2UgaWRlbnRpdHktYXdhcmUgY29uc29sZSBzZXNzaW9ucy4gKi9cbiAgICBwdWJsaWMgQUlPcHNDb25zb2xlQWRtaW5Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQUlPcHNDb25zb2xlQWRtaW5Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgYWNjZXNzIHRvIHRoZSBBbWF6b24gQUkgT3BlcmF0aW9ucyBBUElzIGZvciBjcmVhdGluZywgdXBkYXRpbmcsIGFuZCBkZWxldGluZyBpbnZlc3RpZ2F0aW9ucywgaW52ZXN0aWdhdGlvbiBldmVudHMsIGFuZCBpbnZlc3RpZ2F0aW9uIHJlc291cmNlcy4gSXQgYWxzbyBpbmNsdWRlcyBSZWFkT25seSBhY2Nlc3MgdG8gYWxsIEFJIE9wZXJhdGlvbnMgQVBJcyBhbmQgdG8gdXNlIGlkZW50aXR5LWF3YXJlIHNlc3Npb25zLiAqL1xuICAgIHB1YmxpYyBBSU9wc09wZXJhdG9yQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFJT3BzT3BlcmF0b3JBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgUmVhZE9ubHkgcGVybWlzc2lvbnMgdG8gdGhlIEFtYXpvbiBBSSBPcGVyYXRpb25zIHNlcnZpY2UgYW5kIGl0cyByZXF1aXJlZCByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFJT3BzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQUlPcHNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgZGV2aWNlIHNldHVwIGFjY2VzcyB0byBBbGV4YUZvckJ1c2luZXNzIHNlcnZpY2VzICovXG4gICAgcHVibGljIEFsZXhhRm9yQnVzaW5lc3NEZXZpY2VTZXR1cCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbGV4YUZvckJ1c2luZXNzRGV2aWNlU2V0dXApO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gQWxleGFGb3JCdXNpbmVzcyByZXNvdXJjZXMgYW5kIGFjY2VzcyB0byByZWxhdGVkIEFXUyBTZXJ2aWNlcyAqL1xuICAgIHB1YmxpYyBBbGV4YUZvckJ1c2luZXNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbGV4YUZvckJ1c2luZXNzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgZ2F0ZXdheSBleGVjdXRpb24gYWNjZXNzIHRvIEFsZXhhRm9yQnVzaW5lc3Mgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQWxleGFGb3JCdXNpbmVzc0dhdGV3YXlFeGVjdXRpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWxleGFGb3JCdXNpbmVzc0dhdGV3YXlFeGVjdXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIGFjY2VzcyB0byBMaWZlc2l6ZSBBVlMgZGV2aWNlcyAqL1xuICAgIHB1YmxpYyBBbGV4YUZvckJ1c2luZXNzTGlmZXNpemVEZWxlZ2F0ZWRBY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWxleGFGb3JCdXNpbmVzc0xpZmVzaXplRGVsZWdhdGVkQWNjZXNzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZW5hYmxlcyBBbGV4YSBmb3IgQnVzaW5lc3MgdG8gcGVyZm9ybSBhdXRvbWF0ZWQgdGFza3Mgc2NoZWR1bGVkIGJ5IHlvdXIgbmV0d29yayBwcm9maWxlcy4gKi9cbiAgICBwdWJsaWMgQWxleGFGb3JCdXNpbmVzc05ldHdvcmtQcm9maWxlU2VydmljZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbGV4YUZvckJ1c2luZXNzTmV0d29ya1Byb2ZpbGVTZXJ2aWNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBhY2Nlc3MgdG8gUG9seSBBVlMgZGV2aWNlcyAqL1xuICAgIHB1YmxpYyBBbGV4YUZvckJ1c2luZXNzUG9seURlbGVnYXRlZEFjY2Vzc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbGV4YUZvckJ1c2luZXNzUG9seURlbGVnYXRlZEFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgcmVhZCBvbmx5IGFjY2VzcyB0byBBbGV4YUZvckJ1c2luZXNzIHNlcnZpY2VzICovXG4gICAgcHVibGljIEFsZXhhRm9yQnVzaW5lc3NSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbGV4YUZvckJ1c2luZXNzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBjcmVhdGUvZWRpdC9kZWxldGUgQVBJcyBpbiBBbWF6b24gQVBJIEdhdGV3YXkgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25BUElHYXRld2F5QWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BUElHYXRld2F5QWRtaW5pc3RyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGludm9rZSBBUElzIGluIEFtYXpvbiBBUEkgR2F0ZXdheS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQVBJR2F0ZXdheUludm9rZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQVBJR2F0ZXdheUludm9rZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVBJIEdhdGV3YXkgdG8gcHVzaCBsb2dzIHRvIHVzZXIncyBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBBbWF6b25BUElHYXRld2F5UHVzaFRvQ2xvdWRXYXRjaExvZ3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQVBJR2F0ZXdheVB1c2hUb0Nsb3VkV2F0Y2hMb2dzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEFwcEZsb3cgYW5kIGFjY2VzcyB0byBBV1Mgc2VydmljZXMgc3VwcG9ydGVkIGFzIGZsb3cgc291cmNlIG9yIGRlc3RpbmF0aW9uIChTMyBhbmQgUmVkc2hpZnQpLiBBbHNvIHByb3ZpZGVzIGFjY2VzcyB0byBLTVMgZm9yIGVuY3J5cHRpb24gKi9cbiAgICBwdWJsaWMgQW1hem9uQXBwRmxvd0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXBwRmxvd0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBBcHBmbG93IGZsb3dzICovXG4gICAgcHVibGljIEFtYXpvbkFwcEZsb3dSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BcHBGbG93UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gQXBwU3RyZWFtIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQXBwU3RyZWFtRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BcHBTdHJlYW1GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIEFwcFN0cmVhbSAyLjAgYWNjZXNzIHRvIEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyIFByaXZhdGUgQ0EgaW4gY3VzdG9tZXIgYWNjb3VudHMgZm9yIGNlcnRpZmljYXRlLWJhc2VkIGF1dGhlbnRpY2F0aW9uICovXG4gICAgcHVibGljIEFtYXpvbkFwcFN0cmVhbVBDQUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BcHBTdHJlYW1QQ0FBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBBcHBTdHJlYW0gdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25BcHBTdHJlYW1SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BcHBTdHJlYW1SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciBBbWF6b24gQXBwU3RyZWFtIHNlcnZpY2Ugcm9sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQXBwU3RyZWFtU2VydmljZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BcHBTdHJlYW1TZXJ2aWNlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBmdWxsIGFjY2VzcyB0byBBbWF6b24gQXRoZW5hIGFuZCBzY29wZWQgYWNjZXNzIHRvIHRoZSBkZXBlbmRlbmNpZXMgbmVlZGVkIHRvIGVuYWJsZSBxdWVyeWluZywgd3JpdGluZyByZXN1bHRzLCBhbmQgZGF0YSBtYW5hZ2VtZW50LiAqL1xuICAgIHB1YmxpYyBBbWF6b25BdGhlbmFGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkF0aGVuYUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gcGVyZm9ybSBhbGwgb3BlcmF0aW9ucyBBbWF6b24gQXVnbWVudGVkIEFJIHJlc291cmNlcywgaW5jbHVkaW5nIEZsb3dEZWZpbml0aW9ucywgSHVtYW5UYXNrVWlzIGFuZCBIdW1hbkxvb3BzLiBEb2VzIG5vdCBhbGxvdyBhY2Nlc3MgZm9yIGNyZWF0aW5nIEZsb3dEZWZpbml0aW9ucyBhZ2FpbnN0IHRoZSBwdWJsaWMtY3Jvd2QgV29ya3RlYW0uICovXG4gICAgcHVibGljIEFtYXpvbkF1Z21lbnRlZEFJRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BdWdtZW50ZWRBSUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gcGVyZm9ybSBhbGwgb3BlcmF0aW9ucyBvbiBIdW1hbkxvb3BzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25BdWdtZW50ZWRBSUh1bWFuTG9vcEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXVnbWVudGVkQUlIdW1hbkxvb3BGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHBlcmZvcm0gYWxsIG9wZXJhdGlvbnMgQW1hem9uIEF1Z21lbnRlZCBBSSByZXNvdXJjZXMsIGluY2x1ZGluZyBGbG93RGVmaW5pdGlvbnMsIEh1bWFuVGFza1VpcyBhbmQgSHVtYW5Mb29wcy4gQWxzbyBwcm92aWRlcyBhY2Nlc3MgdG8gdGhvc2Ugb3BlcmF0aW9ucyBvZiBzZXJ2aWNlcyB0aGF0IGFyZSBpbnRlZ3JhdGVkIHdpdGggQW1hem9uIEF1Z21lbnRlZCBBSS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQXVnbWVudGVkQUlJbnRlZ3JhdGVkQVBJQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkF1Z21lbnRlZEFJSW50ZWdyYXRlZEFQSUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGNvbnNvbGUgZnVsbCBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gQXVyb3JhIERTUUwgKi9cbiAgICBwdWJsaWMgQW1hem9uQXVyb3JhRFNRTENvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkF1cm9yYURTUUxDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIEF1cm9yYSBEU1FMICovXG4gICAgcHVibGljIEFtYXpvbkF1cm9yYURTUUxGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkF1cm9yYURTUUxGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBdXJvcmEgRFNRTCAqL1xuICAgIHB1YmxpYyBBbWF6b25BdXJvcmFEU1FMUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXVyb3JhRFNRTFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQmVkcm9jayBNb2RlbCBpbmZlcmVuY2UgcGVybWlzc2lvbiB0byBCZWRyb2NrIGFnZW50IGNvcmUgbWVtb3J5ICovXG4gICAgcHVibGljIEFtYXpvbkJlZHJvY2tBZ2VudENvcmVNZW1vcnlCZWRyb2NrTW9kZWxJbmZlcmVuY2VFeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkJlZHJvY2tBZ2VudENvcmVNZW1vcnlCZWRyb2NrTW9kZWxJbmZlcmVuY2VFeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEJlZHJvY2sgYXMgd2VsbCBhcyBsaW1pdGVkIGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IGl0ICovXG4gICAgcHVibGljIEFtYXpvbkJlZHJvY2tGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkJlZHJvY2tGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbGltaXRlZCBhY2Nlc3MgdG8gQW1hem9uIEJlZHJvY2sgYXMgd2VsbCBhcyB0byByZWxhdGVkIHNlcnZpY2VzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IGl0ICovXG4gICAgcHVibGljIEFtYXpvbkJlZHJvY2tMaW1pdGVkQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkJlZHJvY2tMaW1pdGVkQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbGltaXRlZCBhY2Nlc3MgdG8gQW1hem9uIEJlZHJvY2sgTWFya2V0cGxhY2UgYXMgd2VsbCBhcyB0byByZWxhdGVkIHNlcnZpY2VzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IGl0ICovXG4gICAgcHVibGljIEFtYXpvbkJlZHJvY2tNYXJrZXRwbGFjZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25CZWRyb2NrTWFya2V0cGxhY2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBCZWRyb2NrICovXG4gICAgcHVibGljIEFtYXpvbkJlZHJvY2tSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25CZWRyb2NrUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBEZWZpbmVzIHRoZSBtYXhpbXVtIHBlcm1pc3Npb25zIG9mIElBTSByb2xlcyB0aGF0IEFtYXpvbiBCZWRyb2NrIFN0dWRpbyBjcmVhdGVzIGZvciBvcGVyYXRpbmcgQW1hem9uIEJlZHJvY2sgU3R1ZGlvIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uQmVkcm9ja1N0dWRpb1Blcm1pc3Npb25zQm91bmRhcnkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQmVkcm9ja1N0dWRpb1Blcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gQnJha2V0IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiBBbHNvIHByb3ZpZGVzIGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIChlLmcuLCBTMywgbG9ncykuICovXG4gICAgcHVibGljIEFtYXpvbkJyYWtldEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQnJha2V0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCByZXNvdXJjZXMgbmVjZXNzYXJ5IGZvciBleGVjdXRpbmcgYW4gQW1hem9uIEJyYWtldCBKb2IgaW5jbHVkaW5nIFMzLCBDbG91ZHdhdGNoLCBJQU0gYW5kIEJyYWtldCAqL1xuICAgIHB1YmxpYyBBbWF6b25CcmFrZXRKb2JzRXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkJyYWtldEpvYnNFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIEJyYWtldCB0byBjcmVhdGUgYW5kIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFtYXpvbkJyYWtldFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkJyYWtldFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIENoaW1lIEFkbWluIENvbnNvbGUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25DaGltZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2hpbWVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gQ2hpbWUgQWRtaW4gQ29uc29sZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkNoaW1lUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2hpbWVSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBbWF6b24gQ2hpbWUgU0RLIG9wZXJhdGlvbnMgKi9cbiAgICBwdWJsaWMgQW1hem9uQ2hpbWVTREsoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2hpbWVTREspO1xuICAgIH1cblxuICAgIC8qKiBNYW5hZ2VkIFBvbGljeSBGb3IgQW1hem9uIENoaW1lIFNESyBNZWRpYVBpcGVsaW5lcyBTZXJ2aWNlIExpbmtlZCBSb2xlICovXG4gICAgcHVibGljIEFtYXpvbkNoaW1lU0RLTWVkaWFQaXBlbGluZXNTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DaGltZVNES01lZGlhUGlwZWxpbmVzU2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIENoaW1lIFNESyBNZXNzYWdpbmcgdG8gYWNjZXNzIEFXUyByZXNvdXJjZXMgYW5kIGVuYWJsZSBtZXNzYWdpbmcgZnVuY3Rpb25hbGl0eSAqL1xuICAgIHB1YmxpYyBBbWF6b25DaGltZVNES01lc3NhZ2luZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNoaW1lU0RLTWVzc2FnaW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBbWF6b24gQ2hpbWUgKi9cbiAgICBwdWJsaWMgQW1hem9uQ2hpbWVTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DaGltZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBDaGltZSB0byBhY2Nlc3MgQW1hem9uIFRyYW5zY3JpYmUgYW5kIEFtYXpvbiBUcmFuc2NyaWJlIE1lZGljYWwgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQW1hem9uQ2hpbWVUcmFuc2NyaXB0aW9uU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2hpbWVUcmFuc2NyaXB0aW9uU2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB1c2VyIG1hbmFnZW1lbnQgYWNjZXNzIHRvIEFtYXpvbiBDaGltZSBBZG1pbiBDb25zb2xlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ2hpbWVVc2VyTWFuYWdlbWVudCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DaGltZVVzZXJNYW5hZ2VtZW50KTtcbiAgICB9XG5cbiAgICAvKiogTWFuYWdlZCBwb2xpY3kgZm9yIFNlcnZpY2UgTGlua2VkIFJvbGUgZm9yIEFtYXpvbiBDaGltZSBWb2ljZUNvbm5lY3RvciAqL1xuICAgIHB1YmxpYyBBbWF6b25DaGltZVZvaWNlQ29ubmVjdG9yU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2hpbWVWb2ljZUNvbm5lY3RvclNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIENsb3VkIERpcmVjdG9yeSBTZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25DbG91ZERpcmVjdG9yeUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2xvdWREaXJlY3RvcnlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gQ2xvdWQgRGlyZWN0b3J5IFNlcnZpY2UuICovXG4gICAgcHVibGljIEFtYXpvbkNsb3VkRGlyZWN0b3J5UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2xvdWREaXJlY3RvcnlSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgb25seSBhY2Nlc3MgdG8gQW1hem9uIENsb3VkV2F0Y2ggRXZpZGVudGx5LiBBbHNvIHByb3ZpZGVzIGFjY2VzcyB0byByZWxhdGVkIEFtYXpvbiBTMywgQW1hem9uIFNOUywgQW1hem9uIENsb3VkV2F0Y2gsIGFuZCBvdGhlciByZWxhdGVkIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25DbG91ZFdhdGNoRXZpZGVudGx5RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DbG91ZFdhdGNoRXZpZGVudGx5RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIENsb3VkV2F0Y2ggRXZpZGVudGx5ICovXG4gICAgcHVibGljIEFtYXpvbkNsb3VkV2F0Y2hFdmlkZW50bHlSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DbG91ZFdhdGNoRXZpZGVudGx5UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQ2xvdWRXYXRjaCBFdmlkZW50bHkgU2VydmljZSB0byBtYW5hZ2UgYXNzb2NpYXRlZCBBV1MgUmVzb3VyY2VzIG9uIGJlaGFsZiBvZiB0aGUgY3VzdG9tZXIgKi9cbiAgICBwdWJsaWMgQW1hem9uQ2xvdWRXYXRjaEV2aWRlbnRseVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNsb3VkV2F0Y2hFdmlkZW50bHlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyBwZXJtaXNzaW9ucyBmb3IgdGhlIEFtYXpvbiBDbG91ZFdhdGNoIFJVTSBzZXJ2aWNlICovXG4gICAgcHVibGljIEFtYXpvbkNsb3VkV2F0Y2hSVU1GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNsb3VkV2F0Y2hSVU1GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHJlYWQgb25seSBwZXJtaXNzaW9ucyBmb3IgdGhlIEFtYXpvbiBDbG91ZFdhdGNoIFJVTSBzZXJ2aWNlICovXG4gICAgcHVibGljIEFtYXpvbkNsb3VkV2F0Y2hSVU1SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DbG91ZFdhdGNoUlVNUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbiB0byBBbWF6b24gQ2xvdWRXYXRjaCBSVU0gU2VydmljZSB0byBwdWJsaXNoIG1vbml0b3JpbmcgZGF0YSB0byBvdGhlciByZWxldmFudCBBV1Mgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uQ2xvdWRXYXRjaFJVTVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNsb3VkV2F0Y2hSVU1TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDb2RlQ2F0YWx5c3QgKi9cbiAgICBwdWJsaWMgQW1hem9uQ29kZUNhdGFseXN0RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2RlQ2F0YWx5c3RGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gQ29kZUNhdGFseXN0ICovXG4gICAgcHVibGljIEFtYXpvbkNvZGVDYXRhbHlzdFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZGVDYXRhbHlzdFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBDb2RlQ2F0YWx5c3QgdG8gY3JlYXRlLCB1cGRhdGUsIGFuZCByZXNvbHZlIEFXUyBTdXBwb3J0IGNhc2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlQ2F0YWx5c3RTdXBwb3J0QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZGVDYXRhbHlzdFN1cHBvcnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgcmVxdWlyZWQgYnkgQW1hem9uIENvZGVHdXJ1IFByb2ZpbGVyIGFnZW50LiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlR3VydVByb2ZpbGVyQWdlbnRBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29kZUd1cnVQcm9maWxlckFnZW50QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIENvZGVHdXJ1IFByb2ZpbGVyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlR3VydVByb2ZpbGVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2RlR3VydVByb2ZpbGVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIENvZGVHdXJ1IFByb2ZpbGVyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlR3VydVByb2ZpbGVyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29kZUd1cnVQcm9maWxlclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDb2RlR3VydSBSZXZpZXdlciBhbmQgc2NvcGVkIGFjY2VzcyB0byByZXF1aXJlZCBkZXBlbmRlbmNpZXMuICovXG4gICAgcHVibGljIEFtYXpvbkNvZGVHdXJ1UmV2aWV3ZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZGVHdXJ1UmV2aWV3ZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gQ29kZUd1cnUgUmV2aWV3ZXIuICovXG4gICAgcHVibGljIEFtYXpvbkNvZGVHdXJ1UmV2aWV3ZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2RlR3VydVJldmlld2VyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBIHNlcnZpY2UtbGlua2VkIHJvbGUgcmVxdWlyZWQgZm9yIEFtYXpvbiBDb2RlR3VydSBSZXZpZXdlciB0byBhY2Nlc3MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlR3VydVJldmlld2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29kZUd1cnVSZXZpZXdlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIENvZGVHdXJ1IFNlY3VyaXR5LiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlR3VydVNlY3VyaXR5RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2RlR3VydVNlY3VyaXR5RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyByZXF1aXJlZCBmb3Igd29ya2luZyB3aXRoIEFtYXpvbiBDb2RlR3VydSBTZWN1cml0eSBzY2Fucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29kZUd1cnVTZWN1cml0eVNjYW5BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29kZUd1cnVTZWN1cml0eVNjYW5BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIENvZ25pdG8gQVBJcyB0byBzdXBwb3J0IGRldmVsb3BlciBhdXRoZW50aWNhdGVkIGlkZW50aXRpZXMgZnJvbSB5b3VyIGF1dGhlbnRpY2F0aW9uIGJhY2tlbmQuICovXG4gICAgcHVibGljIEFtYXpvbkNvZ25pdG9EZXZlbG9wZXJBdXRoZW50aWNhdGVkSWRlbnRpdGllcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2duaXRvRGV2ZWxvcGVyQXV0aGVudGljYXRlZElkZW50aXRpZXMpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIENvZ25pdG8gVXNlciBQb29scyBzZXJ2aWNlIHRvIHVzZSB5b3VyIFNFUyBpZGVudGl0aWVzIGZvciBlbWFpbCBzZW5kaW5nICovXG4gICAgcHVibGljIEFtYXpvbkNvZ25pdG9JZHBFbWFpbFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZ25pdG9JZHBFbWFpbFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFtYXpvbiBDb2duaXRvIFVzZXIgUG9vbHMgKi9cbiAgICBwdWJsaWMgQW1hem9uQ29nbml0b0lkcFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZ25pdG9JZHBTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBleGlzdGluZyBBbWF6b24gQ29nbml0byByZXNvdXJjZXMuIFlvdSB3aWxsIG5lZWQgQVdTIGFjY291bnQgYWRtaW4gcHJpdmlsZWdlcyB0byBjcmVhdGUgbmV3IENvZ25pdG8gcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2duaXRvUG93ZXJVc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZ25pdG9Qb3dlclVzZXIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBDb2duaXRvIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29nbml0b1JlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZ25pdG9SZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGRlZmluZXMgdGhlIHNldCBvZiBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB1bmF1dGhlbnRpY2F0ZWQgaWRlbnRpdGllcyBmb3IgQ29nbml0byBJZGVudGl0eSBQb29scy4gVGhpcyBwb2xpY3kgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBzdGFuZCBhbG9uZSBwZXJtaXNzaW9uIHBvbGljeS4gSXQgaXMgdXNlZCBhcyBhIGd1YXJkcmFpbCBhZ2FpbnN0IG92ZXJseSBwZXJtaXNzaXZlIHBvbGljaWVzIGF0dGFjaGVkIGZvciByb2xlcyBpbiBhbiBpZGVudGl0eSBwb29sLiBEbyBub3QgYXR0YWNoIHRoaXMgcG9saWN5IHRvIGFueSByb2xlcywgYXMgQ29nbml0byBJZGVudGl0eSBTZXJ2aWNlIHdpbGwgYXV0b21hdGljYWxseSBpbmNsdWRlIGl0IGFzIGEgc2NvcGVkIGRvd24gcG9saWN5IHdoZW4gY3JlYXRpbmcgY3JlZGVudGlhbHMuIFRoZSBwcml2aWxlZ2VzIHRvIHRlbXBvcmFyaWx5IGFjY2VzcyBvdGhlciBBV1MgcmVzb3VyY2VzIHRocm91Z2ggdGhlIGVuaGFuY2VkIGZsb3cgd2lsbCBub3cgYmUgZGVmaW5lZCBieSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSByb2xlIGFzc29jaWF0ZWQgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIHVuYXV0aGVudGljYXRlZCB1c2VyIHByb3ZpZGVkIGJ5IGEgc2VydmljZSwgYW5kIHRoZSBwcml2aWxlZ2VzIGdpdmVuIGluIHRoaXMgbWFuYWdlZCBwb2xpY3kgdGhhdCBpcyBvd25lZCBieSBDb2duaXRvLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2duaXRvVW5BdXRoZWRJZGVudGl0aWVzU2Vzc2lvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2duaXRvVW5BdXRoZWRJZGVudGl0aWVzU2Vzc2lvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGRlZmluZXMgdGhlIHNldCBvZiBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB1bmF1dGhlbnRpY2F0ZWQgaWRlbnRpdGllcyBmb3IgQ29nbml0byBJZGVudGl0eSBQb29scy4gVGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGF0dGFjaGVkIHRvIHlvdXIgdW5hdXRoIHJvbGUsIGFzIENvZ25pdG8gSWRlbnRpdHkgU2VydmljZSB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSBpdCBhcyBhIHNjb3BlZCBkb3duIHBvbGljeSB3aGVuIGNyZWF0aW5nIGNyZWRlbnRpYWxzLiBUaGUgcHJpdmlsZWdlcyB0byB0ZW1wb3JhcmlseSBhY2Nlc3Mgb3RoZXIgQVdTIHJlc291cmNlcyB0aHJvdWdoIHRoZSBlbmhhbmNlZCBmbG93IHdpbGwgbm93IGJlIGRlZmluZWQgYnkgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgcm9sZSBhc3NvY2lhdGVkIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSB1bmF1dGhlbnRpY2F0ZWQgdXNlciBwcm92aWRlZCBieSBhIHNlcnZpY2UsIGFuZCB0aGUgcHJpdmlsZWdlcyBnaXZlbiBpbiB0aGlzIG1hbmFnZWQgcG9saWN5IHRoYXQgaXMgb3duZWQgYnkgQ29nbml0by4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29nbml0b1VuYXV0aGVudGljYXRlZElkZW50aXRpZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29nbml0b1VuYXV0aGVudGljYXRlZElkZW50aXRpZXMpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgcHVycG9zZSBvZiB0aGlzIHBvbGljeSBpcyB0byBncmFudCBwZXJtaXNzaW9ucyB0byBBV1MgQ29ubmVjdCB1c2VycyByZXF1aXJlZCB0byB1c2UgQ29ubmVjdCByZXNvdXJjZXMuIFRoaXMgcG9saWN5IHByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDb25uZWN0IHJlc291cmNlcyB2aWEgdGhlIENvbm5lY3QgQ29uc29sZSBhbmQgcHVibGljIEFQSXMgKi9cbiAgICBwdWJsaWMgQW1hem9uQ29ubmVjdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29ubmVjdEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIEFtYXpvbiBDb25uZWN0IENhbXBhaWducyBzZXJ2aWNlIGxpbmtlZCByb2xlICovXG4gICAgcHVibGljIEFtYXpvbkNvbm5lY3RDYW1wYWlnbnNTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db25uZWN0Q2FtcGFpZ25zU2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbiB0byB2aWV3IHRoZSBBbWF6b24gQ29ubmVjdCBpbnN0YW5jZXMgaW4geW91ciBBV1MgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29ubmVjdFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvbm5lY3RSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQ29ubmVjdCB0byBjcmVhdGUgYW5kIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db25uZWN0U2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29ubmVjdFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBDb25uZWN0IHRvIHN5bmNocm9uaXplIEFXUyByZXNvdXJjZXMgYWNyb3NzIHJlZ2lvbnMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkNvbm5lY3RTeW5jaHJvbml6YXRpb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db25uZWN0U3luY2hyb25pemF0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gQ29ubmVjdCBWb2ljZSBJRCAqL1xuICAgIHB1YmxpYyBBbWF6b25Db25uZWN0Vm9pY2VJREZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29ubmVjdFZvaWNlSURGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gY29uc3VtZSBBbWF6b24gQmVkcm9jayBtb2RlbHMsIGluY2x1ZGluZyBpbnZva2luZyBBbWF6b24gQmVkcm9jayBhcHBsaWNhdGlvbiBpbmZlcmVuY2UgcHJvZmlsZSBjcmVhdGVkIGZvciBwYXJ0aWN1bGFyIEFtYXpvbiBEYXRhWm9uZSBkb21haW4uICovXG4gICAgcHVibGljIEFtYXpvbkRhdGFab25lQmVkcm9ja01vZGVsQ29uc3VtcHRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGF0YVpvbmVCZWRyb2NrTW9kZWxDb25zdW1wdGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIG1hbmFnZSBBbWF6b24gQmVkcm9jayBtb2RlbCBhY2Nlc3MsIGluY2x1ZGluZyBjcmVhdGluZywgdGFnZ2luZyBhbmQgZGVsZXRpbmcgYXBwbGljYXRpb24gaW5mZXJlbmNlIHByb2ZpbGVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZUJlZHJvY2tNb2RlbE1hbmFnZW1lbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGF0YVpvbmVCZWRyb2NrTW9kZWxNYW5hZ2VtZW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIHRoZSBBbWF6b24gRGF0YVpvbmUncyBEb21haW5FeGVjdXRpb25Sb2xlIHNlcnZpY2Ugcm9sZS4gVGhpcyByb2xlIGlzIHVzZWQgYnkgQW1hem9uIERhdGFab25lIHRvIGNhdGFsb2csIGRpc2NvdmVyLCBnb3Zlcm4sIHNoYXJlLCBhbmQgYW5hbHl6ZSBkYXRhIGluIHRoZSBBbWF6b24gRGF0YVpvbmUgZG9tYWluLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZURvbWFpbkV4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGF0YVpvbmVEb21haW5FeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIERhdGFab25lIGNyZWF0ZXMgSUFNIHJvbGVzIGZvciBFbnZpcm9ubWVudHMgdG8gcGVyZm9ybSBkYXRhIGFuYWx5dGljcyBhY3Rpb25zLCBhbmQgdXNlcyB0aGlzIHBvbGljeSB3aGVuIGNyZWF0aW5nIHRoZXNlIHJvbGVzIHRvIGRlZmluZSB0aGUgYm91bmRhcnkgb2YgdGhlaXIgcGVybWlzc2lvbnMuICovXG4gICAgcHVibGljIEFtYXpvbkRhdGFab25lRW52aXJvbm1lbnRSb2xlUGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EYXRhWm9uZUVudmlyb25tZW50Um9sZVBlcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRGF0YVpvbmUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFzIHdlbGwgYXMgbGltaXRlZCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyB0aGF0IGFyZSByZXF1aXJlZCBieSBpdC4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGF0YVpvbmVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRhdGFab25lRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBEYXRhWm9uZSwgYnV0IGRvZXMgbm90IGFsbG93IHRoZSBtYW5hZ2VtZW50IG9mIGRvbWFpbnMsIHVzZXJzLCBvciBhc3NvY2lhdGVkIGFjY291bnRzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZUZ1bGxVc2VyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRhdGFab25lRnVsbFVzZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0byBhbGxvdyBBbWF6b24gRGF0YVpvbmUgdG8gZW5hYmxlIHB1Ymxpc2hpbmcgYW5kIGFjY2VzcyBncmFudHMgdG8gZGF0YS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGF0YVpvbmVHbHVlTWFuYWdlQWNjZXNzUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EYXRhWm9uZUdsdWVNYW5hZ2VBY2Nlc3NSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIERhdGFab25lIGlzIGEgZGF0YSBtYW5hZ2VtZW50IHNlcnZpY2UgdGhhdCBlbmFibGVzIHlvdSB0byBjYXRhbG9nLCBkaXNjb3ZlciwgZ292ZXJuLCBzaGFyZSwgYW5kIGFuYWx5emUgeW91ciBkYXRhLiBXaXRoIEFtYXpvbiBEYXRhWm9uZSwgeW91IGNhbiBzaGFyZSBhbmQgYWNjZXNzIHlvdXIgZGF0YSBhY3Jvc3MgYWNjb3VudHMgYW5kIHN1cHBvcnRlZCByZWdpb25zLiBBbWF6b24gRGF0YVpvbmUgc2ltcGxpZmllcyB5b3VyIGV4cGVyaWVuY2UgYWNyb3NzIEFXUyBzZXJ2aWNlcywgaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8sIEFtYXpvbiBSZWRzaGlmdCwgQW1hem9uIEF0aGVuYSwgQVdTIEdsdWUsIGFuZCBBV1MgTGFrZSBGb3JtYXRpb24uICovXG4gICAgcHVibGljIEFtYXpvbkRhdGFab25lUmVkc2hpZnRHbHVlUHJvdmlzaW9uaW5nUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRhdGFab25lUmVkc2hpZnRHbHVlUHJvdmlzaW9uaW5nUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ2l2ZXMgQW1hem9uIERhdGFab25lIHBlcm1pc3Npb25zIHRvIHB1Ymxpc2ggQW1hem9uIFJlZHNoaWZ0IGRhdGEgdG8gdGhlIGNhdGFsb2cuIEl0IGFsc28gZ2l2ZXMgQW1hem9uIERhdGFab25lIHBlcm1pc3Npb25zIHRvIGdyYW50IGFjY2VzcyBvciByZXZva2UgYWNjZXNzIHRvIEFtYXpvbiBSZWRzaGlmdCBvciBBbWF6b24gUmVkc2hpZnQgU2VydmVybGVzcyBwdWJsaXNoZWQgYXNzZXRzIGluIHRoZSBjYXRhbG9nLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZVJlZHNoaWZ0TWFuYWdlQWNjZXNzUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EYXRhWm9uZVJlZHNoaWZ0TWFuYWdlQWNjZXNzUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBBbWF6b25EYXRhWm9uZVNhZ2VNYWtlckVudmlyb25tZW50Um9sZVBlcm1pc3Npb25zQm91bmRhcnkgcG9saWN5IGlzIHRoZSBsaXN0IG9mIHBlcm1pc3Npb25zIHRoYXQgYXJlIHBlcm1pdHRlZCBvbiBhbiBleGVjdXRpb24gcm9sZSBjcmVhdGVkIGluIGEgU2FnZU1ha2VyIGVudmlyb25tZW50IHByb3Zpc2lvbmVkIGJ5IEFtYXpvbiBEYXRhWm9uZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGF0YVpvbmVTYWdlTWFrZXJFbnZpcm9ubWVudFJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRhdGFab25lU2FnZU1ha2VyRW52aXJvbm1lbnRSb2xlUGVybWlzc2lvbnNCb3VuZGFyeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBBbWF6b25EYXRhWm9uZVNhZ2VNYWtlck1hbmFnZUFjY2Vzc1JvbGVQb2xpY3kgcG9saWN5IGdyYW50cyBBbWF6b24gRGF0YVpvbmUgdGhlIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIGdyYW50IHVzZXIgYWNjZXNzIHRvIHZhcmlvdXMgcmVzb3VyY2VzIGluIHRoZSBTYWdlTWFrZXIgZW52aXJvbm1lbnQuICovXG4gICAgcHVibGljIEFtYXpvbkRhdGFab25lU2FnZU1ha2VyTWFuYWdlQWNjZXNzUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EYXRhWm9uZVNhZ2VNYWtlck1hbmFnZUFjY2Vzc1JvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgQW1hem9uRGF0YVpvbmVTYWdlTWFrZXJQcm92aXNpb25pbmdSb2xlUG9saWN5IHBvbGljeSBncmFudHMgQW1hem9uIERhdGFab25lIHRoZSBwZXJtaXNzaW9ucyByZXF1aXJlZCB0byBpbnRlcm9wZXJhdGUgd2l0aCBBbWF6b24gU2FnZU1ha2VyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZVNhZ2VNYWtlclByb3Zpc2lvbmluZ1JvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGF0YVpvbmVTYWdlTWFrZXJQcm92aXNpb25pbmdSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBEZXRlY3RpdmUgc2VydmljZSBhbmQgc2NvcGVkIGFjY2VzcyB0byB0aGUgY29uc29sZSBVSSBkZXBlbmRlbmNpZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uRGV0ZWN0aXZlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EZXRlY3RpdmVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgaW52ZXN0aWdhdG9yIGFjY2VzcyB0byBBbWF6b24gRGV0ZWN0aXZlIHNlcnZpY2UgYW5kIHNjb3BlZCBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUgVUkgZGVwZW5kZW5jaWVzLiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbiB0byBkaXZlIGludG8gRGV0ZWN0aXZlIGZvciBpbnZlc3RpZ2F0aW9uIHB1cnBvc2VzIGFuZCBsaW1pdGVkIHdyaXRlIGFjY2VzcyB0byBHdWFyZGR1dHkuICovXG4gICAgcHVibGljIEFtYXpvbkRldGVjdGl2ZUludmVzdGlnYXRvckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EZXRlY3RpdmVJbnZlc3RpZ2F0b3JBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBtZW1iZXIgYWNjZXNzIHRvIEFtYXpvbiBEZXRlY3RpdmUgc2VydmljZSBhbmQgc2NvcGVkIGFjY2VzcyB0byB0aGUgY29uc29sZSBVSSBkZXBlbmRlbmNpZXMuICovXG4gICAgcHVibGljIEFtYXpvbkRldGVjdGl2ZU1lbWJlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EZXRlY3RpdmVNZW1iZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBPcmdhbml6YXRpb25zIGFjY2VzcyB0byBtYW5hZ2UgRGVsZWdhdGVkIGFkbWluaXN0cmF0b3IgZm9yIEFtYXpvbiBEZXRlY3RpdmUgYW5kIHNjb3BlZCBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUgVUkgZGVwZW5kZW5jaWVzLiBUaGlzIGFsc28gZ3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgc2VydmljZS1saW5rZWQgcm9sZSBmb3IgRGV0ZWN0aXZlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EZXRlY3RpdmVPcmdhbml6YXRpb25zQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRldGVjdGl2ZU9yZ2FuaXphdGlvbnNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIERldGVjdGl2ZSB0byBtYWtlIHNlcnZpY2UgY2FsbHMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQW1hem9uRGV0ZWN0aXZlU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGV0ZWN0aXZlU2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgcG9saWN5IGdyYW50cyBmdWxsLWFjY2VzcyB0byB0aGUgRGV2T3BzIEd1cnUgY29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGV2T3BzR3VydUNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRldk9wc0d1cnVDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBEZXZPcHMgR3VydS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGV2T3BzR3VydUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGV2T3BzR3VydUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIGFjY2VzcyB0byBlbmFibGUgYW5kIG1hbmFnZSBBbWF6b24gRGV2T3BzIEd1cnUgd2l0aGluIGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGV2T3BzR3VydU9yZ2FuaXphdGlvbnNBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGV2T3BzR3VydU9yZ2FuaXphdGlvbnNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBEZXZPcHMgR3VydSBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EZXZPcHNHdXJ1UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGV2T3BzR3VydVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQSBzZXJ2aWNlLWxpbmtlZCByb2xlIHJlcXVpcmVkIGZvciBBbWF6b24gRGV2T3BzR3VydSB0byBhY2Nlc3MgeW91ciByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbkRldk9wc0d1cnVTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EZXZPcHNHdXJ1U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gdXBsb2FkIERNUyByZXBsaWNhdGlvbiBsb2dzIHRvIGNsb3Vkd2F0Y2ggbG9ncyBpbiBjdXN0b21lciBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBBbWF6b25ETVNDbG91ZFdhdGNoTG9nc1JvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRE1TQ2xvdWRXYXRjaExvZ3NSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIG1hbmFnZSBTMyBzZXR0aW5ncyBmb3IgUmVkc2hpZnQgZW5kcG9pbnRzIGZvciBETVMuICovXG4gICAgcHVibGljIEFtYXpvbkRNU1JlZHNoaWZ0UzNSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRNU1JlZHNoaWZ0UzNSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIG1hbmFnZSBWUEMgc2V0dGluZ3MgZm9yIEFXUyBtYW5hZ2VkIGN1c3RvbWVyIGNvbmZpZ3VyYXRpb25zICovXG4gICAgcHVibGljIEFtYXpvbkRNU1ZQQ01hbmFnZW1lbnRSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRNU1ZQQ01hbmFnZW1lbnRSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBEb2N1bWVudERCLUVsYXN0aWMgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkRvY0RCRWxhc3RpY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRvY0RCRWxhc3RpY1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gbWFuYWdlIEFtYXpvbiBEb2N1bWVudERCIHdpdGggTW9uZ29EQiBjb21wYXRpYmlsaXR5IHVzaW5nIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiBOb3RlIHRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIGZ1bGwgYWNjZXNzIHRvIHB1Ymxpc2ggb24gYWxsIFNOUyB0b3BpY3Mgd2l0aGluIHRoZSBhY2NvdW50LCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgYW5kIGVkaXQgQW1hem9uIEVDMiBpbnN0YW5jZXMgYW5kIFZQQyBjb25maWd1cmF0aW9ucywgcGVybWlzc2lvbnMgdG8gdmlldyBhbmQgbGlzdCBrZXlzIG9uIEFtYXpvbiBLTVMsIGFuZCBmdWxsIGFjY2VzcyB0byBBbWF6b24gUkRTIGFuZCBBbWF6b24gTmVwdHVuZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRG9jREJDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Eb2NEQkNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIERvY3VtZW50REIgRWxhc3RpYyBDbHVzdGVycyBhbmQgb3RoZXIgcmVxdWlyZWQgcGVybWlzc2lvbnMgZm9yIGl0cyBkZXBlbmRlbmNpZXMgaW5jbHVkaW5nIEVDMiwgS01TLCBTZWNyZXRzTWFuYWdlciwgQ2xvdWRXYXRjaCBhbmQgSUFNLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Eb2NEQkVsYXN0aWNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRvY0RCRWxhc3RpY0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBEb2NEQi1FbGFzdGljIGFuZCBDbG91ZFdhdGNoIG1ldHJpY3MuICovXG4gICAgcHVibGljIEFtYXpvbkRvY0RCRWxhc3RpY1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRvY0RCRWxhc3RpY1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIERvY3VtZW50REIgd2l0aCBNb25nb0RCIGNvbXBhdGliaWxpdHkuIE5vdGUgdGhpcyBwb2xpY3kgYWxzbyBncmFudHMgZnVsbCBhY2Nlc3MgdG8gcHVibGlzaCBvbiBhbGwgU05TIHRvcGljcyB3aXRoaW4gdGhlIGFjY291bnQgYW5kIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBSRFMgYW5kIEFtYXpvbiBOZXB0dW5lLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Eb2NEQkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRG9jREJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gRG9jdW1lbnREQiB3aXRoIE1vbmdvREIgY29tcGF0aWJpbGl0eS4gTm90ZSB0aGF0IHRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIGFjY2VzcyB0byBBbWF6b24gUkRTIGFuZCBBbWF6b24gTmVwdHVuZSByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbkRvY0RCUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRG9jREJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBtYW5hZ2UgVlBDIHNldHRpbmdzIGZvciBBbWF6b24gbWFuYWdlZCBjdXN0b21lciBjb25maWd1cmF0aW9ucyAqL1xuICAgIHB1YmxpYyBBbWF6b25EUlNWUENNYW5hZ2VtZW50KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRSU1ZQQ01hbmFnZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRHluYW1vREIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EeW5hbW9EQkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRHluYW1vREJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIER5bmFtb0RCICovXG4gICAgcHVibGljIEFtYXpvbkR5bmFtb0RCRnVsbEFjY2Vzc1YyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkR5bmFtb0RCRnVsbEFjY2Vzc1YyKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgb24gYSBkZXByZWNhdGlvbiBwYXRoLiBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgZ3VpZGFuY2U6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvRHluYW1vREJQaXBlbGluZS5odG1sLiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRHluYW1vREIgaW5jbHVkaW5nIEV4cG9ydC9JbXBvcnQgdXNpbmcgQVdTIERhdGEgUGlwZWxpbmUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EeW5hbW9EQkZ1bGxBY2Nlc3N3aXRoRGF0YVBpcGVsaW5lKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkR5bmFtb0RCRnVsbEFjY2Vzc3dpdGhEYXRhUGlwZWxpbmUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBEeW5hbW9EQiB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkR5bmFtb0RCUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRHluYW1vREJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIElBTSBQb2xpY3kgdGhhdCBhbGxvd3MgdGhlIENTSSBkcml2ZXIgc2VydmljZSBhY2NvdW50IHRvIG1ha2UgY2FsbHMgdG8gcmVsYXRlZCBzZXJ2aWNlcyBzdWNoIGFzIEVDMiBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUJTQ1NJRHJpdmVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVCU0NTSURyaXZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBBbWF6b24gRUNSIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyQ29udGFpbmVyUmVnaXN0cnlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEVDMiBDb250YWluZXIgUmVnaXN0cnkgcmVwb3NpdG9yaWVzLCBidXQgZG9lcyBub3QgYWxsb3cgcmVwb3NpdG9yeSBkZWxldGlvbiBvciBwb2xpY3kgY2hhbmdlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyQ29udGFpbmVyUmVnaXN0cnlQb3dlclVzZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyQ29udGFpbmVyUmVnaXN0cnlQb3dlclVzZXIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gcHVsbCBpbWFnZXMgZnJvbSBBbWF6b24gRUMyIENvbnRhaW5lciBSZWdpc3RyeSByZXBvc2l0b3JpZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5UHVsbE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyQ29udGFpbmVyUmVnaXN0cnlQdWxsT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIEVDMiBDb250YWluZXIgUmVnaXN0cnkgcmVwb3NpdG9yaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5UmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiAgIFBvbGljeSB0byBlbmFibGUgVGFzayBBdXRvc2NhbGluZyBmb3IgQW1hem9uIEVDMiBDb250YWluZXIgU2VydmljZSAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJDb250YWluZXJTZXJ2aWNlQXV0b3NjYWxlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJDb250YWluZXJTZXJ2aWNlQXV0b3NjYWxlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBlbmFibGUgQ2xvdWRXYXRjaCBFdmVudHMgZm9yIEVDMiBDb250YWluZXIgU2VydmljZSAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJDb250YWluZXJTZXJ2aWNlRXZlbnRzUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJDb250YWluZXJTZXJ2aWNlRXZlbnRzUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciB0aGUgQW1hem9uIEVDMiBSb2xlIGZvciBBbWF6b24gRUMyIENvbnRhaW5lciBTZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJDb250YWluZXJTZXJ2aWNlZm9yRUMyUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJDb250YWluZXJTZXJ2aWNlZm9yRUMyUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciBBbWF6b24gRUNTIHNlcnZpY2Ugcm9sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyQ29udGFpbmVyU2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyQ29udGFpbmVyU2VydmljZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRUMyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBzY2FuIGFsbCBzdXBwb3J0ZWQgcmVzb3VyY2UgdHlwZXMgZm9yIHJlbGV2YW50IGRhdGEgd2hlbiB1c2luZyBEZXNjcmliZUltYWdlUmVmZXJlbmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUMySW1hZ2VSZWZlcmVuY2VzQWNjZXNzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMkltYWdlUmVmZXJlbmNlc0FjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEVDMiB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVDMlJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMlJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgRUMyIGFjY2VzcyB0byBTMyBidWNrZXQgdG8gZG93bmxvYWQgcmV2aXNpb24uIFRoaXMgcm9sZSBpcyBuZWVkZWQgYnkgdGhlIENvZGVEZXBsb3kgYWdlbnQgb24gRUMyIGluc3RhbmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyUm9sZWZvckFXU0NvZGVEZXBsb3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyUm9sZWZvckFXU0NvZGVEZXBsb3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBFQzIgbGltaXRlZCBhY2Nlc3MgdG8gUzMgYnVja2V0IHRvIGRvd25sb2FkIHJldmlzaW9uLiBUaGlzIHJvbGUgaXMgbmVlZGVkIGJ5IHRoZSBDb2RlRGVwbG95IGFnZW50IG9uIEVDMiBpbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVDMlJvbGVmb3JBV1NDb2RlRGVwbG95TGltaXRlZCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJSb2xlZm9yQVdTQ29kZURlcGxveUxpbWl0ZWQpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIEFtYXpvbiBFQzIgUm9sZSBmb3IgRGF0YSBQaXBlbGluZSBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVDMlJvbGVmb3JEYXRhUGlwZWxpbmVSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMlJvbGVmb3JEYXRhUGlwZWxpbmVSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgd2lsbCBzb29uIGJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZSBwb2xpY3kgdG8gZW5hYmxlIEFXUyBTeXN0ZW1zIE1hbmFnZXIgc2VydmljZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb24gRUMyIGluc3RhbmNlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zeXN0ZW1zLW1hbmFnZXIvbGF0ZXN0L3VzZXJndWlkZS9zZXR1cC1pbnN0YW5jZS1wcm9maWxlLmh0bWwgKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyUm9sZWZvclNTTSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJSb2xlZm9yU1NNKTtcbiAgICB9XG5cbiAgICAvKiogTWFuYWdlZCBwb2xpY3kgZm9yIHRoZSBBbWF6b24gTGF1bmNoV2l6YXJkIHNlcnZpY2Ugcm9sZSBmb3IgRUMyICovXG4gICAgcHVibGljIEFtYXpvbkVDMlJvbGVQb2xpY3lGb3JMYXVuY2hXaXphcmQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyUm9sZVBvbGljeUZvckxhdW5jaFdpemFyZCk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBlbmFibGUgQXV0b3NjYWxpbmcgZm9yIEFtYXpvbiBFQzIgU3BvdCBGbGVldCAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJTcG90RmxlZXRBdXRvc2NhbGVSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMlNwb3RGbGVldEF1dG9zY2FsZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgRUMyIFNwb3QgRmxlZXQgdG8gcmVxdWVzdCwgdGVybWluYXRlIGFuZCB0YWcgU3BvdCBJbnN0YW5jZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVDMlNwb3RGbGVldFRhZ2dpbmdSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMlNwb3RGbGVldFRhZ2dpbmdSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIEFtYXpvbiBFQ1MgcmVzb3VyY2VzIGFuZCBlbmFibGVzIEVDUyBmZWF0dXJlcyB0aHJvdWdoIGFjY2VzcyB0byBvdGhlciBBV1Mgc2VydmljZSByZXNvdXJjZXMsIGluY2x1ZGluZyBWUENzLCBBdXRvIFNjYWxpbmcgZ3JvdXBzLCBhbmQgQ2xvdWRGb3JtYXRpb24gc3RhY2tzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQ1NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDU0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIEFtYXpvbiBFQ1MgQ29tcHV0ZSB0byBtYW5hZ2UgeW91ciBFQzIgaW5zdGFuY2VzIGFuZCByZWxhdGVkIHJlc291cmNlcyBhcyBwYXJ0IG9mIEVDUyBtYW5hZ2VkIGluc3RhbmNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25FQ1NDb21wdXRlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUNTQ29tcHV0ZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIG90aGVyIEFXUyBzZXJ2aWNlIHJlc291cmNlcyByZXF1aXJlZCB0byBtYW5hZ2UgbG9hZCBiYWxhbmNlcnMgYXNzb2NpYXRlZCB3aXRoIEVDUyB3b3JrbG9hZHMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvckxvYWRCYWxhbmNlcnMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUNTSW5mcmFzdHJ1Y3R1cmVSb2xlUG9saWN5Rm9yTG9hZEJhbGFuY2Vycyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEVDUyBhY2Nlc3MgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgRUMyIG1hbmFnZWQgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvck1hbmFnZWRJbnN0YW5jZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUNTSW5mcmFzdHJ1Y3R1cmVSb2xlUG9saWN5Rm9yTWFuYWdlZEluc3RhbmNlcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBQcml2YXRlIENlcnRpZmljYXRlIEF1dGhvcml0eSwgQVdTIFNlY3JldHMgTWFuYWdlciBhbmQgb3RoZXIgQVdTIFNlcnZpY2VzIHJlcXVpcmVkIHRvIG1hbmFnZSBFQ1MgU2VydmljZSBDb25uZWN0IFRMUyBmZWF0dXJlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUNTSW5mcmFzdHJ1Y3R1cmVSb2xlUG9saWN5Rm9yU2VydmljZUNvbm5lY3RUcmFuc3BvcnRMYXllclNlY3VyaXR5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvclNlcnZpY2VDb25uZWN0VHJhbnNwb3J0TGF5ZXJTZWN1cml0eSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBvdGhlciBBV1Mgc2VydmljZSByZXNvdXJjZXMgcmVxdWlyZWQgdG8gbWFuYWdlIHZvbHVtZXMgYXNzb2NpYXRlZCB3aXRoIEVDUyB3b3JrbG9hZHMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvclZvbHVtZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUNTSW5mcmFzdHJ1Y3R1cmVSb2xlUG9saWN5Rm9yVm9sdW1lcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBvdGhlciBBV1Mgc2VydmljZSByZXNvdXJjZXMgcmVxdWlyZWQgdG8gbWFuYWdlIFZQQyBMYXR0aWNlIGZlYXR1cmUgaW4gRUNTIHdvcmtsb2FkcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUNTSW5mcmFzdHJ1Y3R1cmVSb2xlUG9saWN5Rm9yVnBjTGF0dGljZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQ1NJbmZyYXN0cnVjdHVyZVJvbGVQb2xpY3lGb3JWcGNMYXR0aWNlKTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIHRoZSBBbWF6b24gRUNTIEluc3RhbmNlIFJvbGUgZm9yIEFtYXpvbiBFQ1MgTWFuYWdlZCBJbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVDU0luc3RhbmNlUm9sZVBvbGljeUZvck1hbmFnZWRJbnN0YW5jZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUNTSW5zdGFuY2VSb2xlUG9saWN5Rm9yTWFuYWdlZEluc3RhbmNlcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBlbmFibGUgQW1hem9uIEVDUyB0byBtYW5hZ2UgeW91ciBjbHVzdGVyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQ1NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQ1NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBvdGhlciBBV1Mgc2VydmljZSByZXNvdXJjZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gcnVuIEFtYXpvbiBFQ1MgdGFza3MgKi9cbiAgICBwdWJsaWMgQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBtYW5hZ2VtZW50IGFjY2VzcyB0byBFRlMgcmVzb3VyY2VzIGFuZCByZWFkIGFjY2VzcyB0byBFQzIgKi9cbiAgICBwdWJsaWMgQW1hem9uRUZTQ1NJRHJpdmVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVGU0NTSURyaXZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIHRoZSBBbWF6b24gVlBDIENOSSBQbHVnaW4gKGFtYXpvbi12cGMtY25pLWs4cykgdGhlIHBlcm1pc3Npb25zIGl0IHJlcXVpcmVzIHRvIG1vZGlmeSB0aGUgSVAgYWRkcmVzcyBjb25maWd1cmF0aW9uIG9uIHlvdXIgRUtTIHdvcmtlciBub2Rlcy4gVGhpcyBwZXJtaXNzaW9uIHNldCBhbGxvd3MgdGhlIENOSSB0byBsaXN0LCBkZXNjcmliZSwgYW5kIG1vZGlmeSBFbGFzdGljIE5ldHdvcmsgSW50ZXJmYWNlcyBvbiB5b3VyIGJlaGFsZi4gTW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgQVdTIFZQQyBDTkkgUGx1Z2luIGlzIGF2YWlsYWJsZSBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2FtYXpvbi12cGMtY25pLWs4cyAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NDTklQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTQ05JUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGF0dGFjaGVkIHRvIHRoZSBFS1MgQ2x1c3RlciBSb2xlIHRoYXQgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIG1hbmFnZSB0aGUgY2x1c3RlcidzIGJsb2NrIHN0b3JhZ2UgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NCbG9ja1N0b3JhZ2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTQmxvY2tTdG9yYWdlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgS3ViZXJuZXRlcyB0aGUgcGVybWlzc2lvbnMgaXQgcmVxdWlyZXMgdG8gbWFuYWdlIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gS3ViZXJuZXRlcyByZXF1aXJlcyBFYzI6Q3JlYXRlVGFncyBwZXJtaXNzaW9ucyB0byBwbGFjZSBpZGVudGlmeWluZyBpbmZvcm1hdGlvbiBvbiBFQzIgcmVzb3VyY2VzIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gSW5zdGFuY2VzLCBTZWN1cml0eSBHcm91cHMsIGFuZCBFbGFzdGljIE5ldHdvcmsgSW50ZXJmYWNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTQ2x1c3RlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NDbHVzdGVyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGF0dGFjaGVkIHRvIHRoZSBFS1MgQ2x1c3RlciBSb2xlIHRoYXQgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIG1hbmFnZSB0aGUgY2x1c3RlcidzIGNvbXB1dGUgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NDb21wdXRlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU0NvbXB1dGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgQW1hem9uIEVLUyB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyBmb3IgRUtTIGNvbm5lY3RvciAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NDb25uZWN0b3JTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NDb25uZWN0b3JTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gdmlldyB0aGUgZGFzaGJvYXJkIGluIHRoZSBBbWF6b24gRUtTIGNvbnNvbGUuIFRoZSBkYXNoYm9hcmQgYWdncmVnYXRlcyBpbmZvcm1hdGlvbiBhYm91dCBtdWx0aXBsZSBjbHVzdGVycyBhbmQgcmVsYXRlZCByZXNvdXJjZXMgdXNpbmcgQVdTIE9yZ2FuaXphdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvbkVLU0Rhc2hib2FyZENvbnNvbGVSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NEYXNoYm9hcmRDb25zb2xlUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBlbmFibGVzIHRoZSBBbWF6b24gRUtTIERhc2hib2FyZCB0byBhY2Nlc3MgYW5kIGRpc3BsYXkgb3JnYW5pemF0aW9uLXdpZGUgaW5mb3JtYXRpb24uIFRoZSBwb2xpY3kgYWxsb3dzIHRoZSBFS1MgRGFzaGJvYXJkIHNlcnZpY2UgdG8gZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgQVdTIE9yZ2FuaXphdGlvbnMgc3RydWN0dXJlIGFuZCBhY2NvdW50cy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTRGFzaGJvYXJkU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTRGFzaGJvYXJkU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gb3RoZXIgQVdTIHNlcnZpY2UgcmVzb3VyY2VzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHJ1biBBbWF6b24gRUtTIHBvZHMgb24gQVdTIEZhcmdhdGUgKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTRmFyZ2F0ZVBvZEV4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTRmFyZ2F0ZVBvZEV4ZWN1dGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIEFtYXpvbiBFS1MgdG8gcnVuIGZhcmdhdGUgdGFza3MgKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTRm9yRmFyZ2F0ZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU0ZvckZhcmdhdGVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBhdHRhY2hlZCB0byB0aGUgRUtTIENsdXN0ZXIgUm9sZSB0aGF0IGdyYW50cyBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgdGhlIGNsdXN0ZXIncyBsb2FkIGJhbGFuY2luZyByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVLU0xvYWRCYWxhbmNpbmdQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTTG9hZEJhbGFuY2luZ1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIEVLUyBsb2NhbCBjbHVzdGVyJ3MgY29udHJvbC1wbGFuZSBpbnN0YW5jZXMgcnVubmluZyBpbiB5b3VyIGFjY291bnQgdG8gbWFuYWdlIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTTG9jYWxPdXRwb3N0Q2x1c3RlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NMb2NhbE91dHBvc3RDbHVzdGVyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBFS1MgTG9jYWwgdG8gY2FsbCBBV1Mgc2VydmljZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVLU0xvY2FsT3V0cG9zdFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU0xvY2FsT3V0cG9zdFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGF0dGFjaGVkIHRvIHRoZSBFS1MgQ2x1c3RlciBSb2xlIHRoYXQgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIG1hbmFnZSB0aGUgY2x1c3RlcidzIG5ldHdvcmtpbmcgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NOZXR3b3JraW5nUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU05ldHdvcmtpbmdQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgQW1hem9uIEVsYXN0aWMgQ29udGFpbmVyIFNlcnZpY2UgZm9yIEt1YmVybmV0ZXMgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgdGhlIG5lY2Vzc2FyeSByZXNvdXJjZXMgdG8gb3BlcmF0ZSBFS1MgQ2x1c3RlcnMuICovXG4gICAgcHVibGljIEFtYXpvbkVLU1NlcnZpY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTU2VydmljZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEEgU2VydmljZS1MaW5rZWQgUm9sZSByZXF1aXJlZCBmb3IgQW1hem9uIEVLUyB0byBjYWxsIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdXNlZCBieSBWUEMgUmVzb3VyY2UgQ29udHJvbGxlciB0byBtYW5hZ2UgRU5JIGFuZCBJUHMgZm9yIHdvcmtlciBub2Rlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTVlBDUmVzb3VyY2VDb250cm9sbGVyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU1ZQQ1Jlc291cmNlQ29udHJvbGxlcik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBBbWF6b24gRUtTIHdvcmtlciBub2RlcyB0byBjb25uZWN0IHRvIEFtYXpvbiBFS1MgQ2x1c3RlcnMuICovXG4gICAgcHVibGljIEFtYXpvbkVLU1dvcmtlck5vZGVNaW5pbWFsUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU1dvcmtlck5vZGVNaW5pbWFsUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIEFtYXpvbiBFS1Mgd29ya2VyIG5vZGVzIHRvIGNvbm5lY3QgdG8gQW1hem9uIEVLUyBDbHVzdGVycy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTV29ya2VyTm9kZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NXb3JrZXJOb2RlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEVsYXN0aUNhY2hlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpQ2FjaGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aUNhY2hlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEVsYXN0aUNhY2hlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpQ2FjaGVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGlDYWNoZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIEFtYXpvbiBFQ1IgUHVibGljIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljQ29udGFpbmVyUmVnaXN0cnlQdWJsaWNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNDb250YWluZXJSZWdpc3RyeVB1YmxpY0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRUNSIFB1YmxpYyByZXBvc2l0b3JpZXMsIGJ1dCBkb2VzIG5vdCBhbGxvdyByZXBvc2l0b3J5IGRlbGV0aW9uIG9yIHBvbGljeSBjaGFuZ2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljQ29udGFpbmVyUmVnaXN0cnlQdWJsaWNQb3dlclVzZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY0NvbnRhaW5lclJlZ2lzdHJ5UHVibGljUG93ZXJVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gRUNSIFB1YmxpYyByZXBvc2l0b3JpZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNDb250YWluZXJSZWdpc3RyeVB1YmxpY1JlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNDb250YWluZXJSZWdpc3RyeVB1YmxpY1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcm9vdCBjbGllbnQgYWNjZXNzIHRvIGFuIEFtYXpvbiBFRlMgZmlsZSBzeXN0ZW0gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1DbGllbnRGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtQ2xpZW50RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBjbGllbnQgYWNjZXNzIHRvIGFuIEFtYXpvbiBFRlMgZmlsZSBzeXN0ZW0gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1DbGllbnRSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljRmlsZVN5c3RlbUNsaWVudFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBhbmQgd3JpdGUgY2xpZW50IGFjY2VzcyB0byBhbiBBbWF6b24gRUZTIGZpbGUgc3lzdGVtICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtQ2xpZW50UmVhZFdyaXRlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtQ2xpZW50UmVhZFdyaXRlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEVGUyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljRmlsZVN5c3RlbUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBFRlMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljRmlsZVN5c3RlbVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIEVsYXN0aWMgRmlsZSBTeXN0ZW0gdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljRmlsZVN5c3RlbVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGN1c3RvbWVycyB0byB1c2UgQVdTIFN5c3RlbXMgTWFuYWdlciB0byBhdXRvbWF0aWNhbGx5IG1hbmFnZSBBbWF6b24gRUZTIHV0aWxpdGllcyAoYW1hem9uLWVmcy11dGlscykgcGFja2FnZSBvbiB0aGVpciBFQzIgaW5zdGFuY2VzLCBhbmQgdXNlIENsb3VkV2F0Y2hMb2cgdG8gZ2V0IEVGUyBmaWxlIHN5c3RlbSBtb3VudCBzdWNjZXNzL2ZhaWx1cmUgbm90aWZpY2F0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1zVXRpbHMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1zVXRpbHMpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIEFtYXpvbiBFbGFzdGljIE1hcFJlZHVjZSBFZGl0b3JzIHNlcnZpY2Ugcm9sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY01hcFJlZHVjZUVkaXRvcnNSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VFZGl0b3JzUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBFbGFzdGljIE1hcFJlZHVjZSBmb3IgQXV0byBTY2FsaW5nLiBSb2xlIHRvIGFsbG93IEF1dG8gU2NhbGluZyB0byBhZGQgYW5kIHJlbW92ZSBpbnN0YW5jZXMgZnJvbSB5b3VyIEVNUiBjbHVzdGVyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljTWFwUmVkdWNlZm9yQXV0b1NjYWxpbmdSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNNYXBSZWR1Y2Vmb3JBdXRvU2NhbGluZ1JvbGUpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIEFtYXpvbiBFbGFzdGljIE1hcFJlZHVjZSBmb3IgRUMyIHNlcnZpY2Ugcm9sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY01hcFJlZHVjZWZvckVDMlJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY01hcFJlZHVjZWZvckVDMlJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyBvbiBhIGRlcHJlY2F0aW9uIHBhdGguIFNlZSBkb2N1bWVudGF0aW9uIGZvciBndWlkYW5jZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Vtci9sYXRlc3QvTWFuYWdlbWVudEd1aWRlL2Vtci1tYW5hZ2VkLWlhbS1wb2xpY2llcy5odG1sLiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRWxhc3RpYyBNYXBSZWR1Y2UgYW5kIHVuZGVybHlpbmcgc2VydmljZXMgdGhhdCBpdCByZXF1aXJlcyBzdWNoIGFzIEVDMiBhbmQgUzMgKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY01hcFJlZHVjZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY01hcFJlZHVjZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gYWxsb3cgRU1SIHRvIGNyZWF0ZSwgZGVzY3JpYmUgYW5kIGRlbGV0ZSBFQzIgcGxhY2VtZW50IGdyb3Vwcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY01hcFJlZHVjZVBsYWNlbWVudEdyb3VwUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VQbGFjZW1lbnRHcm91cFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEVsYXN0aWMgTWFwUmVkdWNlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY01hcFJlZHVjZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIG9uIGEgZGVwcmVjYXRpb24gcGF0aC4gU2VlIGRvY3VtZW50YXRpb24gZm9yIGd1aWRhbmNlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZW1yL2xhdGVzdC9NYW5hZ2VtZW50R3VpZGUvZW1yLW1hbmFnZWQtaWFtLXBvbGljaWVzLmh0bWwuICBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIEFtYXpvbiBFbGFzdGljIE1hcFJlZHVjZSBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgQW1hem9uIEVsYXN0aWNzZWFyY2ggU2VydmljZSB0byBhY2Nlc3Mgb3RoZXIgQVdTIHNlcnZpY2VzIHN1Y2ggYXMgRUMyIE5ldHdvcmtpbmcgQVBJcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY3NlYXJjaFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNzZWFyY2hTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyB1c2VycyBmdWxsIGFjY2VzcyB0byBFbGFzdGljIFRyYW5zY29kZXIgYW5kIHRoZSBhY2Nlc3MgdG8gYXNzb2NpYXRlZCBzZXJ2aWNlcyB0aGF0IGlzIHJlcXVpcmVkIGZvciBmdWxsIEVsYXN0aWMgVHJhbnNjb2RlciBmdW5jdGlvbmFsaXR5LiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljVHJhbnNjb2RlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY1RyYW5zY29kZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHVzZXJzIHBlcm1pc3Npb24gdG8gY2hhbmdlIHByZXNldHMsIHN1Ym1pdCBqb2JzLCBhbmQgdmlldyBFbGFzdGljIFRyYW5zY29kZXIgc2V0dGluZ3MuIFRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIHNvbWUgcmVhZC1vbmx5IGFjY2VzcyB0byBzb21lIG90aGVyIHNlcnZpY2VzIHJlcXVpcmVkIHRvIHVzZSB0aGUgRWxhc3RpYyBUcmFuc2NvZGUgY29uc29sZSwgaW5jbHVkaW5nIFMzLCBJQU0sIGFuZCBTTlMuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNUcmFuc2NvZGVySm9ic1N1Ym1pdHRlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljVHJhbnNjb2RlckpvYnNTdWJtaXR0ZXIpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgdXNlcnMgcmVhZC1vbmx5IGFjY2VzcyB0byBFbGFzdGljIFRyYW5zY29kZXIgYW5kIGxpc3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNUcmFuc2NvZGVyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY1RyYW5zY29kZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciB0aGUgQW1hem9uIEVsYXN0aWMgVHJhbnNjb2RlciBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNUcmFuc2NvZGVyUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljVHJhbnNjb2RlclJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIGFjdGlvbnMgdGhhdCBFTVIgcmVxdWlyZXMgdG8gdGVybWluYXRlIGFuZCBkZWxldGUgQVdTIEVDMiByZXNvdXJjZXMgaWYgdGhlIEVNUiBTZXJ2aWNlIHJvbGUgaGFzIGxvc3QgdGhhdCBhYmlsaXR5LiAqL1xuICAgIHB1YmxpYyBBbWF6b25FTVJDbGVhbnVwUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVNUkNsZWFudXBQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgYWNjZXNzIHRvIG90aGVyIEFXUyBzZXJ2aWNlIHJlc291cmNlcyB0aGF0IGFyZSByZXF1aXJlZCB0byBydW4gQW1hem9uIEVNUiAqL1xuICAgIHB1YmxpYyBBbWF6b25FTVJDb250YWluZXJzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRU1SQ29udGFpbmVyc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEVNUiAqL1xuICAgIHB1YmxpYyBBbWF6b25FTVJGdWxsQWNjZXNzUG9saWN5VjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRU1SRnVsbEFjY2Vzc1BvbGljeVYyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gRU1SIGFuZCB0aGUgYXNzb2NpYXRlZCBDbG91ZFdhdGNoIE1ldHJpY3MuICovXG4gICAgcHVibGljIEFtYXpvbkVNUlJlYWRPbmx5QWNjZXNzUG9saWN5VjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRU1SUmVhZE9ubHlBY2Nlc3NQb2xpY3lWMik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBhY2Nlc3MgdG8gb3RoZXIgQVdTIHNlcnZpY2UgcmVzb3VyY2VzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHJ1biBBbWF6b24gRU1SU2VydmVybGVzcyAqL1xuICAgIHB1YmxpYyBBbWF6b25FTVJTZXJ2ZXJsZXNzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRU1SU2VydmVybGVzc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgdXNlZCBmb3IgdGhlIEFtYXpvbiBFTVIgU2VydmljZSBSb2xlIGFuZCBzaG91bGQgTk9UIGJlIHVzZWQgZm9yIGFueSBvdGhlciBJQU0gdXNlcnMgb3Igcm9sZXMgaW4geW91ciBhY2NvdW50LiBUaGUgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0byBjcmVhdGUgYW5kIG1hbmFnZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIEVNUiBhbmQgcmVsYXRlZCBzZXJ2aWNlcyBuZWNlc3NhcnkgZm9yIHRoZSBvcGVyYXRpb24gb2YgeW91ciBFTVIgY2x1c3Rlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uRU1SU2VydmljZVBvbGljeVYyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVNUlNlcnZpY2VQb2xpY3lWMik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGxpbWl0ZWQgYWNjZXNzIHRvIHRoZSBBbWF6b24gQ29nbml0byBjb25maWd1cmF0aW9uIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFtYXpvbkVTQ29nbml0b0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FU0NvZ25pdG9BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgQW1hem9uIEVTIGNvbmZpZ3VyYXRpb24gc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRVNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVTRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIEFtYXpvbiBFUyBjb25maWd1cmF0aW9uIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFtYXpvbkVTUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRVNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBFdmVudEJyaWRnZSB0byBhY2Nlc3MgU2VjcmV0IE1hbmFnZXIgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FdmVudEJyaWRnZUFwaURlc3RpbmF0aW9uc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkV2ZW50QnJpZGdlQXBpRGVzdGluYXRpb25zU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRXZlbnRCcmlkZ2UuICovXG4gICAgcHVibGljIEFtYXpvbkV2ZW50QnJpZGdlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FdmVudEJyaWRnZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRXZlbnRCcmlkZ2UgUGlwZXMuICovXG4gICAgcHVibGljIEFtYXpvbkV2ZW50QnJpZGdlUGlwZXNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkV2ZW50QnJpZGdlUGlwZXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFuZCBvcGVyYXRvciAoYWJpbGl0eSB0byBTdG9wIGFuZCBTdGFydCBydW5uaW5nIFBpcGVzKSBhY2Nlc3MgdG8gQW1hem9uIEV2ZW50QnJpZGdlIFBpcGVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FdmVudEJyaWRnZVBpcGVzT3BlcmF0b3JBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRXZlbnRCcmlkZ2VQaXBlc09wZXJhdG9yQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gRXZlbnRCcmlkZ2UgUGlwZXMuICovXG4gICAgcHVibGljIEFtYXpvbkV2ZW50QnJpZGdlUGlwZXNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FdmVudEJyaWRnZVBpcGVzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBFdmVudEJyaWRnZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRXZlbnRCcmlkZ2VSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FdmVudEJyaWRnZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIEFtYXpvbkV2ZW50QnJpZGdlU2NoZWR1bGVyRnVsbEFjY2VzcyBtYW5hZ2VkIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gdXNlIGFsbCBFdmVudEJyaWRnZSBTY2hlZHVsZXIgYWN0aW9ucyBmb3Igc2NoZWR1bGVzLCBhbmQgc2NoZWR1bGUgZ3JvdXBzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FdmVudEJyaWRnZVNjaGVkdWxlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRXZlbnRCcmlkZ2VTY2hlZHVsZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIEFtYXpvbkV2ZW50QnJpZGdlU2NoZWR1bGVyUmVhZE9ubHlBY2Nlc3MgbWFuYWdlZCBwb2xpY3kgZ3JhbnRzIHJlYWQtb25seSBwZXJtaXNzaW9ucyB0byB2aWV3IGRldGFpbHMgYWJvdXQgeW91ciBzY2hlZHVsZXMgYW5kIHNjaGVkdWxlIGdyb3VwcyAqL1xuICAgIHB1YmxpYyBBbWF6b25FdmVudEJyaWRnZVNjaGVkdWxlclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkV2ZW50QnJpZGdlU2NoZWR1bGVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRXZlbnRCcmlkZ2UgU2NoZW1hcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRXZlbnRCcmlkZ2VTY2hlbWFzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FdmVudEJyaWRnZVNjaGVtYXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gRXZlbnRCcmlkZ2UgU2NoZW1hcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRXZlbnRCcmlkZ2VTY2hlbWFzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRXZlbnRCcmlkZ2VTY2hlbWFzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gTWFuYWdlZCBSdWxlcyBjcmVhdGVkIGJ5IEFtYXpvbiBFdmVudEJyaWRnZSBzY2hlbWFzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FdmVudEJyaWRnZVNjaGVtYXNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FdmVudEJyaWRnZVNjaGVtYXNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byBFVlMgdG8gbWFuYWdlIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBbWF6b25FVlNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FVlNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBlbmFibGUgQVdTIEZJUyB0byBtYW5hZ2UgbW9uaXRvcmluZyBhbmQgcmVzb3VyY2Ugc2VsZWN0aW9uIGZvciBleHBlcmltZW50cy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRklTU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRklTU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHaXZlcyBhY2Nlc3MgdG8gYWxsIGFjdGlvbnMgZm9yIEFtYXpvbiBGb3JlY2FzdCAqL1xuICAgIHB1YmxpYyBBbWF6b25Gb3JlY2FzdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRm9yZWNhc3RGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR2l2ZXMgYWNjZXNzIHRvIGFsbCBhY3Rpb25zIGZvciBBbWF6b24gRnJhdWQgRGV0ZWN0b3IgKi9cbiAgICBwdWJsaWMgQW1hem9uRnJhdWREZXRlY3RvckZ1bGxBY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRnJhdWREZXRlY3RvckZ1bGxBY2Nlc3NQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBGdWxsIEFjY2VzcyBQb2xpY3kgZm9yIEFtYXpvbiBGcmVlUlRPUyAqL1xuICAgIHB1YmxpYyBBbWF6b25GcmVlUlRPU0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRnJlZVJUT1NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHVzZXIgdG8gYWNjZXNzIEFtYXpvbiBGcmVlUlRPUyBPVEEgVXBkYXRlICovXG4gICAgcHVibGljIEFtYXpvbkZyZWVSVE9TT1RBVXBkYXRlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkZyZWVSVE9TT1RBVXBkYXRlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEZTeCBhbmQgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIHNlcnZpY2VzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRlN4Q29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRlN4Q29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBGU3ggYW5kIGFjY2VzcyB0byByZWxhdGVkIEFXUyBzZXJ2aWNlcyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkZTeENvbnNvbGVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25GU3hDb25zb2xlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRlN4IGFuZCBhY2Nlc3MgdG8gcmVsYXRlZCBBV1Mgc2VydmljZXMuICovXG4gICAgcHVibGljIEFtYXpvbkZTeEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRlN4RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEZTeC4gKi9cbiAgICBwdWJsaWMgQW1hem9uRlN4UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRlN4UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIEZTeCB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBbWF6b25GU3hTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25GU3hTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBHbGFjaWVyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uR2xhY2llckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uR2xhY2llckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBHbGFjaWVyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uR2xhY2llclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkdsYWNpZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhY2Nlc3MgdG8gQW1hem9uIEF0aGVuYSBhbmQgdGhlIGRlcGVuZGVuY2llcyBuZWVkZWQgdG8gZW5hYmxlIHF1ZXJ5aW5nIGFuZCB3cml0aW5nIHJlc3VsdHMgdG8gczMgZnJvbSB0aGUgQW1hem9uIEF0aGVuYSBwbHVnaW4gaW4gQW1hem9uIEdyYWZhbmEuICovXG4gICAgcHVibGljIEFtYXpvbkdyYWZhbmFBdGhlbmFBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uR3JhZmFuYUF0aGVuYUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhY2Nlc3MgdG8gQW1hem9uIENsb3VkV2F0Y2ggYW5kIHRoZSBkZXBlbmRlbmNpZXMgbmVlZGVkIHRvIHVzZSBDbG91ZFdhdGNoIGFzIGEgZGF0YXNvdXJjZSB3aXRoaW4gQW1hem9uIE1hbmFnZWQgR3JhZmFuYS4gKi9cbiAgICBwdWJsaWMgQW1hem9uR3JhZmFuYUNsb3VkV2F0Y2hBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uR3JhZmFuYUNsb3VkV2F0Y2hBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgc2NvcGVkIGFjY2VzcyB0byBBbWF6b24gUmVkc2hpZnQgYW5kIHRoZSBkZXBlbmRlbmNpZXMgbmVlZGVkIHRvIHVzZSB0aGUgQW1hem9uIFJlZHNoaWZ0IHBsdWdpbiBpbiBBbWF6b24gR3JhZmFuYS4gKi9cbiAgICBwdWJsaWMgQW1hem9uR3JhZmFuYVJlZHNoaWZ0QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkdyYWZhbmFSZWRzaGlmdEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBV1MgUmVzb3VyY2VzIG1hbmFnZWQgb3IgdXNlZCBieSBBbWF6b24gR3JhZmFuYS4gKi9cbiAgICBwdWJsaWMgQW1hem9uR3JhZmFuYVNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkdyYWZhbmFTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHVzZSBBbWF6b24gR3VhcmREdXR5LiAqL1xuICAgIHB1YmxpYyBBbWF6b25HdWFyZER1dHlGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkd1YXJkRHV0eUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB1c2UgQW1hem9uIEd1YXJkRHV0eSAqL1xuICAgIHB1YmxpYyBBbWF6b25HdWFyZER1dHlGdWxsQWNjZXNzVjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uR3VhcmREdXR5RnVsbEFjY2Vzc1YyKTtcbiAgICB9XG5cbiAgICAvKiogR3VhcmREdXR5IG1hbHdhcmUgcHJvdGVjdGlvbiB1c2VzIHRoZSBzZXJ2aWNlLWxpbmtlZCByb2xlIChTTFIpIG5hbWVkIEFXU1NlcnZpY2VSb2xlRm9yQW1hem9uR3VhcmREdXR5TWFsd2FyZVByb3RlY3Rpb24uIFRoaXMgc2VydmljZS1saW5rZWQgcm9sZSBhbGxvd3MgR3VhcmREdXR5IG1hbHdhcmUgcHJvdGVjdGlvbiB0byBwZXJmb3JtIGFnZW50LWxlc3Mgc2NhbnMgdG8gZGV0ZWN0IG1hbHdhcmUuIEl0IGFsbG93cyBHdWFyZER1dHkgdG8gY3JlYXRlIHNuYXBzaG90cyBpbiB5b3VyIGFjY291bnQsIGFuZCBzaGFyZSB0aGUgc25hcHNob3RzIHdpdGggdGhlIEd1YXJkRHV0eSBzZXJ2aWNlIGFjY291bnQgdG8gc2NhbiBmb3IgbWFsd2FyZS4gSXQgZXZhbHVhdGVzIHRoZXNlIHNoYXJlZCBzbmFwc2hvdHMgYW5kIGluY2x1ZGVzIHRoZSByZXRyaWV2ZWQgRUMyIGluc3RhbmNlIG1ldGFkYXRhIGluIHRoZSBHdWFyZER1dHkgTWFsd2FyZSBQcm90ZWN0aW9uIGZpbmRpbmdzLiBUaGUgQVdTU2VydmljZVJvbGVGb3JBbWF6b25HdWFyZER1dHlNYWx3YXJlUHJvdGVjdGlvbiBzZXJ2aWNlLWxpbmtlZCByb2xlIHRydXN0cyB0aGUgbWFsd2FyZS1wcm90ZWN0aW9uLmd1YXJkZHV0eS5hbWF6b25hd3MuY29tIHNlcnZpY2UgdG8gYXNzdW1lIHRoZSByb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25HdWFyZER1dHlNYWx3YXJlUHJvdGVjdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkd1YXJkRHV0eU1hbHdhcmVQcm90ZWN0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBHdWFyZER1dHkgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFtYXpvbkd1YXJkRHV0eVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkd1YXJkRHV0eVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlIGFjY2VzcyB0byBBV1MgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBbWF6b24gR3VhcmQgRHV0eSAqL1xuICAgIHB1YmxpYyBBbWF6b25HdWFyZER1dHlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25HdWFyZER1dHlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBIZWFsdGhMYWtlIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFtYXpvbkhlYWx0aExha2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkhlYWx0aExha2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gSGVhbHRoTGFrZSBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25IZWFsdGhMYWtlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSGVhbHRoTGFrZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gSG9uZXljb2RlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgdGhlIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uSG9uZXljb2RlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Ib25leWNvZGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBIb25leWNvZGUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCB0aGUgU0RLLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Ib25leWNvZGVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Ib25leWNvZGVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEEgc2VydmljZS1saW5rZWQgcm9sZSByZXF1aXJlZCBmb3IgQW1hem9uIEhvbmV5Y29kZSB0byBhY2Nlc3MgeW91ciByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbkhvbmV5Y29kZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkhvbmV5Y29kZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gSG9uZXljb2RlIFRlYW0gQXNzb2NpYXRpb24gdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCB0aGUgU0RLLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Ib25leWNvZGVUZWFtQXNzb2NpYXRpb25GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkhvbmV5Y29kZVRlYW1Bc3NvY2lhdGlvbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEhvbmV5Y29kZSBUZWFtIEFzc29jaWF0aW9uIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgdGhlIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uSG9uZXljb2RlVGVhbUFzc29jaWF0aW9uUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSG9uZXljb2RlVGVhbUFzc29jaWF0aW9uUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBIb25leWNvZGUgV29ya2Jvb2sgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCB0aGUgU0RLLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Ib25leWNvZGVXb3JrYm9va0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSG9uZXljb2RlV29ya2Jvb2tGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBIb25leWNvZGUgV29ya2Jvb2sgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCB0aGUgU0RLLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Ib25leWNvZGVXb3JrYm9va1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkhvbmV5Y29kZVdvcmtib29rUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgQW1hem9uIEluc3BlY3RvciBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIG5lZWRlZCB0byBwZXJmb3JtIGFnZW50LWxlc3Mgc2VjdXJpdHkgYXNzZXNzbWVudHMgKi9cbiAgICBwdWJsaWMgQW1hem9uSW5zcGVjdG9yMkFnZW50bGVzc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkluc3BlY3RvcjJBZ2VudGxlc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBJbnNwZWN0b3IgYW5kIGFjY2VzcyB0byBvdGhlciByZWxhdGVkIHNlcnZpY2VzIHN1Y2ggYXMgb3JnYW5pemF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uSW5zcGVjdG9yMkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSW5zcGVjdG9yMkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gSW5zcGVjdG9yIGFuZCBhY2Nlc3MgdG8gb3RoZXIgcmVsYXRlZCBzZXJ2aWNlcyBzdWNoIGFzIG9yZ2FuaXphdGlvbnMgd2l0aCByZXN0cmljdGl2ZSBvcmdhbml6YXRpb25hbCBhY2Nlc3MuICovXG4gICAgcHVibGljIEFtYXpvbkluc3BlY3RvcjJGdWxsQWNjZXNzVjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSW5zcGVjdG9yMkZ1bGxBY2Nlc3NWMik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgaXMgYSBtYW5hZ2VkIHBvbGljeSB0aGF0IGN1c3RvbWVyIHNob3VsZCBhdHRhY2ggdG8gdGhlaXIgcm9sZXMgdG8gY29tbXVuaWNhdGUgd2l0aCBpbnNwZWN0b3Igc2VydmljZSBmb3IgQ0lTIHNjYW5zICovXG4gICAgcHVibGljIEFtYXpvbkluc3BlY3RvcjJNYW5hZ2VkQ2lzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkluc3BlY3RvcjJNYW5hZ2VkQ2lzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgQW1hem9uIGluc3BlY3RvcjIgc2VydmljZSBhbmQgcmVsZXZhbnQgc3VwcG9ydCBzZXJ2aWNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25JbnNwZWN0b3IyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSW5zcGVjdG9yMlJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIEFtYXpvbiBJbnNwZWN0b3IgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBuZWVkZWQgdG8gcGVyZm9ybSBzZWN1cml0eSBhc3Nlc3NtZW50cyAqL1xuICAgIHB1YmxpYyBBbWF6b25JbnNwZWN0b3IyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSW5zcGVjdG9yMlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEluc3BlY3Rvci4gKi9cbiAgICBwdWJsaWMgQW1hem9uSW5zcGVjdG9yRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25JbnNwZWN0b3JGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gSW5zcGVjdG9yLiAqL1xuICAgIHB1YmxpYyBBbWF6b25JbnNwZWN0b3JSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25JbnNwZWN0b3JSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBBbWF6b24gSW5zcGVjdG9yIGFjY2VzcyB0byBBV1MgU2VydmljZXMgbmVlZGVkIHRvIHBlcmZvcm0gc2VjdXJpdHkgYXNzZXNzbWVudHMgKi9cbiAgICBwdWJsaWMgQW1hem9uSW5zcGVjdG9yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSW5zcGVjdG9yU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gS2VuZHJhIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uS2VuZHJhRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25LZW5kcmFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gS2VuZHJhIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uS2VuZHJhUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2VuZHJhUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBLZXlzcGFjZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uS2V5c3BhY2VzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25LZXlzcGFjZXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBLZXlzcGFjZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uS2V5c3BhY2VzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2V5c3BhY2VzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEtleXNwYWNlcyBhbmQgcmVsYXRlZCBBV1Mgc2VydmljZXMuICovXG4gICAgcHVibGljIEFtYXpvbktleXNwYWNlc1JlYWRPbmx5QWNjZXNzVjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2V5c3BhY2VzUmVhZE9ubHlBY2Nlc3NWMik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBLaW5lc2lzIEFuYWx5dGljcyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbktpbmVzaXNBbmFseXRpY3NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktpbmVzaXNBbmFseXRpY3NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gS2luZXNpcyBBbmFseXRpY3MgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25LaW5lc2lzQW5hbHl0aWNzUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2luZXNpc0FuYWx5dGljc1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIEFtYXpvbiBLaW5lc2lzIEZpcmVob3NlIERlbGl2ZXJ5IFN0cmVhbXMuICovXG4gICAgcHVibGljIEFtYXpvbktpbmVzaXNGaXJlaG9zZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2luZXNpc0ZpcmVob3NlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gYWxsIEFtYXpvbiBLaW5lc2lzIEZpcmVob3NlIERlbGl2ZXJ5IFN0cmVhbXMuICovXG4gICAgcHVibGljIEFtYXpvbktpbmVzaXNGaXJlaG9zZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktpbmVzaXNGaXJlaG9zZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIHN0cmVhbXMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25LaW5lc2lzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25LaW5lc2lzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gYWxsIHN0cmVhbXMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25LaW5lc2lzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2luZXNpc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEtpbmVzaXMgVmlkZW8gU3RyZWFtcyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbktpbmVzaXNWaWRlb1N0cmVhbXNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktpbmVzaXNWaWRlb1N0cmVhbXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgS2luZXNpcyBWaWRlbyBTdHJlYW1zIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uS2luZXNpc1ZpZGVvU3RyZWFtc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktpbmVzaXNWaWRlb1N0cmVhbXNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bGwgYWNjZXNzIHRvIEFXUyBMYXVuY2ggd2l6YXJkIGFuZCBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTGF1bmNoV2l6YXJkRnVsbEFjY2Vzc1YyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkxhdW5jaFdpemFyZEZ1bGxBY2Nlc3NWMik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBjdXN0b21lcnMgdG8gY2FsbCBMZXggcnVudGltZSBmcm9tIGNoYW5uZWxzICovXG4gICAgcHVibGljIEFtYXpvbkxleENoYW5uZWxzQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkxleENoYW5uZWxzQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIExleCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICBBbHNvIHByb3ZpZGVzIGFjY2VzcyB0byBjcmVhdGUgTGV4IFNlcnZpY2UgTGlua2VkIFJvbGVzIGFuZCBncmFudCBMZXggcGVybWlzc2lvbnMgdG8gaW52b2tlIGEgbGltaXRlZCBzZXQgb2YgTGFtYmRhIGZ1bmN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTGV4RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25MZXhGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gTGV4LiAqL1xuICAgIHB1YmxpYyBBbWF6b25MZXhSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25MZXhSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gTGV4IHRvIHJlcGxpY2F0ZSBMZXggcmVzb3VyY2VzIGFjcm9zcyByZWdpb25zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25MZXhSZXBsaWNhdGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25MZXhSZXBsaWNhdGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBbWF6b24gTGV4IGNvbnZlcnNhdGlvbmFsIEFQSXMuICovXG4gICAgcHVibGljIEFtYXpvbkxleFJ1bkJvdHNPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkxleFJ1bkJvdHNPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgTGV4IFYyIGJvdHMgYWNjZXNzIHRvIGNhbGwgb3RoZXIgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25MZXhWMkJvdFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25MZXhWMkJvdFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBMb29rb3V0IGZvciBFcXVpcG1lbnQgb3BlcmF0aW9ucyAqL1xuICAgIHB1YmxpYyBBbWF6b25Mb29rb3V0RXF1aXBtZW50RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Mb29rb3V0RXF1aXBtZW50RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIExvb2tvdXQgZm9yIEVxdWlwbWVudHMgKi9cbiAgICBwdWJsaWMgQW1hem9uTG9va291dEVxdWlwbWVudFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkxvb2tvdXRFcXVpcG1lbnRSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdpdmVzIGFjY2VzcyB0byBhbGwgYWN0aW9ucyBmb3IgQW1hem9uIExvb2tvdXQgZm9yIE1ldHJpY3MgKi9cbiAgICBwdWJsaWMgQW1hem9uTG9va291dE1ldHJpY3NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkxvb2tvdXRNZXRyaWNzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdpdmVzIGFjY2VzcyB0byBhbGwgcmVhZC1vbmx5IGFjdGlvbnMgZm9yIEFtYXpvbiBMb29rb3V0IGZvciBNZXRyaWNzICovXG4gICAgcHVibGljIEFtYXpvbkxvb2tvdXRNZXRyaWNzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTG9va291dE1ldHJpY3NSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBMb29rb3V0IGZvciBWaXNpb24gYW5kIHNjb3BlZCBhY2Nlc3MgdG8gcmVxdWlyZWQgc2VydmljZSBhbmQgY29uc29sZSBkZXBlbmRlbmNpZXMuICovXG4gICAgcHVibGljIEFtYXpvbkxvb2tvdXRWaXNpb25Db25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Mb29rb3V0VmlzaW9uQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBMb29rb3V0IGZvciBWaXNpb24gYW5kIHNjb3BlZCBhY2Nlc3MgdG8gcmVxdWlyZWQgc2VydmljZSBhbmQgY29uc29sZSBkZXBlbmRlbmNpZXMuICovXG4gICAgcHVibGljIEFtYXpvbkxvb2tvdXRWaXNpb25Db25zb2xlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTG9va291dFZpc2lvbkNvbnNvbGVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBMb29rb3V0IGZvciBWaXNpb24gYW5kIHNjb3BlZCBhY2Nlc3MgdG8gcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Mb29rb3V0VmlzaW9uRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Mb29rb3V0VmlzaW9uRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIExvb2tvdXQgZm9yIFZpc2lvbiBhbmQgc2NvcGVkIGFjY2VzcyB0byByZXF1aXJlZCBkZXBlbmRlbmNpZXMuICovXG4gICAgcHVibGljIEFtYXpvbkxvb2tvdXRWaXNpb25SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Mb29rb3V0VmlzaW9uUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgdXNlcnMgcGVybWlzc2lvbiB0byByZXF1ZXN0IEFtYXpvbiBNYWNoaW5lIExlYXJuaW5nIGJhdGNoIHByZWRpY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNoaW5lTGVhcm5pbmdCYXRjaFByZWRpY3Rpb25zQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1hY2hpbmVMZWFybmluZ0JhdGNoUHJlZGljdGlvbnNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBjcmVhdGUgYWNjZXNzIGZvciBub24tcHJlZGljdGlvbiBBbWF6b24gTWFjaGluZSBMZWFybmluZyByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbk1hY2hpbmVMZWFybmluZ0NyZWF0ZU9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaGluZUxlYXJuaW5nQ3JlYXRlT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBNYWNoaW5lIExlYXJuaW5nIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWFjaGluZUxlYXJuaW5nRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNoaW5lTGVhcm5pbmdGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHVzZXJzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGFuZCBkZWxldGUgdGhlIHJlYWwtdGltZSBlbmRwb2ludCBmb3IgQW1hem9uIE1hY2hpbmUgTGVhcm5pbmcgbW9kZWxzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNoaW5lTGVhcm5pbmdNYW5hZ2VSZWFsVGltZUVuZHBvaW50T25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNoaW5lTGVhcm5pbmdNYW5hZ2VSZWFsVGltZUVuZHBvaW50T25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIE1hY2hpbmUgTGVhcm5pbmcgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNoaW5lTGVhcm5pbmdSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNoaW5lTGVhcm5pbmdSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyB1c2VycyBwZXJtaXNzaW9uIHRvIHJlcXVlc3QgQW1hem9uIE1hY2hpbmUgTGVhcm5pbmcgcmVhbC10aW1lIHByZWRpY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNoaW5lTGVhcm5pbmdSZWFsVGltZVByZWRpY3Rpb25Pbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1hY2hpbmVMZWFybmluZ1JlYWxUaW1lUHJlZGljdGlvbk9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgTWFjaGluZSBMZWFybmluZyB0byBjb25maWd1cmUgYW5kIHVzZSB5b3VyIFJlZHNoaWZ0IENsdXN0ZXJzIGFuZCBTMyBTdGFnaW5nIExvY2F0aW9ucyBmb3IgUmVkc2hpZnQgRGF0YSBTb3VyY2UuICovXG4gICAgcHVibGljIEFtYXpvbk1hY2hpbmVMZWFybmluZ1JvbGVmb3JSZWRzaGlmdERhdGFTb3VyY2VWMygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNoaW5lTGVhcm5pbmdSb2xlZm9yUmVkc2hpZnREYXRhU291cmNlVjMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTWFjaWUuICovXG4gICAgcHVibGljIEFtYXpvbk1hY2llRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNpZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgdGhlIHNlcnZpY2UtbGlua2VkIHJvbGUgb2YgQW1hem9uIE1hY2llLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNpZUhhbmRzaGFrZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaWVIYW5kc2hha2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBNYWNpZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWFjaWVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNpZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIE1hY2llIHJlYWQtb25seSBhY2Nlc3MgdG8gcmVzb3VyY2UgZGVwZW5kZW5jaWVzIGluIHlvdXIgYWNjb3VudCBpbiBvcmRlciB0byBlbmFibGUgZGF0YSBhbmFseXNpcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWFjaWVTZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNpZVNlcnZpY2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSBsaW5rZWQgcm9sZSBmb3IgQW1hem9uIE1hY2llICovXG4gICAgcHVibGljIEFtYXpvbk1hY2llU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaWVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBNYW5hZ2VkIEJsb2NrY2hhaW4gdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlICovXG4gICAgcHVibGljIEFtYXpvbk1hbmFnZWRCbG9ja2NoYWluQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFuYWdlZEJsb2NrY2hhaW5Db25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBNYW5hZ2VkIEJsb2NrY2hhaW4uICovXG4gICAgcHVibGljIEFtYXpvbk1hbmFnZWRCbG9ja2NoYWluRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYW5hZ2VkQmxvY2tjaGFpbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBNYW5hZ2VkIEJsb2NrY2hhaW4uICovXG4gICAgcHVibGljIEFtYXpvbk1hbmFnZWRCbG9ja2NoYWluUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFuYWdlZEJsb2NrY2hhaW5SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBbWF6b24gTWFuYWdlZCBCbG9ja2NoYWluICovXG4gICAgcHVibGljIEFtYXpvbk1hbmFnZWRCbG9ja2NoYWluU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFuYWdlZEJsb2NrY2hhaW5TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIE1hbmFnZWQgQXBhY2hlIENhc3NhbmRyYSBTZXJ2aWNlICovXG4gICAgcHVibGljIEFtYXpvbk1DU0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTUNTRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gTWFuYWdlZCBBcGFjaGUgQ2Fzc2FuZHJhIFNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQW1hem9uTUNTUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTUNTUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgQVBJcyBpbiBBbWF6b24gTWVjaGFuaWNhbCBUdXJrLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NZWNoYW5pY2FsVHVya0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWVjaGFuaWNhbFR1cmtGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHJlYWQgb25seSBBUElzIGluIEFtYXpvbiBNZWNoYW5pY2FsIFR1cmsuICovXG4gICAgcHVibGljIEFtYXpvbk1lY2hhbmljYWxUdXJrUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWVjaGFuaWNhbFR1cmtSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBNZW1vcnlEQiB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbk1lbW9yeURCRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NZW1vcnlEQkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBNZW1vcnlEQiB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbk1lbW9yeURCUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWVtb3J5REJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gYWxsIHJlcG9ydHMgaW5jbHVkaW5nIGZpbmFuY2lhbCBkYXRhIGZvciBhbGwgYXBwbGljYXRpb24gcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Nb2JpbGVBbmFseXRpY3NGaW5hbmNpYWxSZXBvcnRBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTW9iaWxlQW5hbHl0aWNzRmluYW5jaWFsUmVwb3J0QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIGFwcGxpY2F0aW9uIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTW9iaWxlQW5hbHl0aWNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Nb2JpbGVBbmFseXRpY3NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBub24gZmluYW5jaWFsIHJlcG9ydHMgZm9yIGFsbCBhcHBsaWNhdGlvbiByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbk1vYmlsZUFuYWx5dGljc05vbkZpbmFuY2lhbFJlcG9ydEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Nb2JpbGVBbmFseXRpY3NOb25GaW5hbmNpYWxSZXBvcnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB3cml0ZSBvbmx5IGFjY2VzcyB0byBwdXQgZXZlbnQgZGF0YSBmb3IgYWxsIGFwcGxpY2F0aW9uIHJlc291cmNlcy4gKFJlY29tbWVuZGVkIGZvciBTREsgaW50ZWdyYXRpb24pICovXG4gICAgcHVibGljIEFtYXpvbk1vYmlsZUFuYWx5dGljc1dyaXRlT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Nb2JpbGVBbmFseXRpY3NXcml0ZU9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBtYW5hZ2UgQW1hem9uIE1vbml0cm9uICovXG4gICAgcHVibGljIEFtYXpvbk1vbml0cm9uRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Nb25pdHJvbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b25NUSB2aWEgb3VyIEFQSS9TREsuICovXG4gICAgcHVibGljIEFtYXpvbk1RQXBpRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NUUFwaUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbk1RIHZpYSBvdXIgQVBJL1NESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTVFBcGlSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NUUFwaVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uTVEgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NUUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTVFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b25NUSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbk1RUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTVFSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UgTGlua2VkIFJvbGUgUG9saWN5IGZvciBBV1MgQW1hem9uIE1RICovXG4gICAgcHVibGljIEFtYXpvbk1RU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTVFTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgcmVhZG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBNU0sgQ29ubmVjdCAqL1xuICAgIHB1YmxpYyBBbWF6b25NU0tDb25uZWN0UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTVNLQ29ubmVjdFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBmdWxsIGFjY2VzcyB0byBBbWF6b24gTVNLIGFuZCBvdGhlciByZXF1aXJlZCBwZXJtaXNzaW9ucyBmb3IgaXRzIGRlcGVuZGVuY2llcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTVNLRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NU0tGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSByZWFkb25seSBhY2Nlc3MgdG8gQW1hem9uIE1TSyAqL1xuICAgIHB1YmxpYyBBbWF6b25NU0tSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NU0tSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBTZXJ2aWNlIExpbmtlZCBSb2xlIHVzZWQgYnkgQW1hem9uIE1hbmFnZWQgV29ya2Zsb3dzIGZvciBBcGFjaGUgQWlyZmxvdy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTVdBQVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1XQUFTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhY2Nlc3MgdG8gcmVzb3VyY2VzIG5lZWRlZCBieSBOaW1ibGUgU3R1ZGlvIExhdW5jaCBQcm9maWxlIHdvcmtlcnMuIEF0dGFjaCB0aGlzIHBvbGljeSB0byBFQzIgaW5zdGFuY2VzIGNyZWF0ZWQgYnkgTmltYmxlIFN0dWRpbyBCdWlsZGVyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25OaW1ibGVTdHVkaW9MYXVuY2hQcm9maWxlV29ya2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk5pbWJsZVN0dWRpb0xhdW5jaFByb2ZpbGVXb3JrZXIpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWNjZXNzIHRvIEFtYXpvbiBOaW1ibGUgU3R1ZGlvIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHN0dWRpbyBhZG1pbiBhbmQgcmVsYXRlZCBzdHVkaW8gcmVzb3VyY2VzIGluIG90aGVyIHNlcnZpY2VzLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8gdGhlIEFkbWluIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHlvdXIgc3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBBbWF6b25OaW1ibGVTdHVkaW9TdHVkaW9BZG1pbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25OaW1ibGVTdHVkaW9TdHVkaW9BZG1pbik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhY2Nlc3MgdG8gQW1hem9uIE5pbWJsZSBTdHVkaW8gcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3R1ZGlvIHVzZXIgYW5kIHJlbGF0ZWQgc3R1ZGlvIHJlc291cmNlcyBpbiBvdGhlciBzZXJ2aWNlcy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHRoZSBVc2VyIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHlvdXIgc3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBBbWF6b25OaW1ibGVTdHVkaW9TdHVkaW9Vc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk5pbWJsZVN0dWRpb1N0dWRpb1VzZXIpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgT3JhY2xlIERhdGFiYXNlQEFXUyB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uT0RCU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT0RCU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gT21pY3MgYW5kIG90aGVyIHJlcXVpcmVkIEFXUyBTZXJ2aWNlcy4gVGhpcyBwb2xpY3kgYWxsb3dzIHRoZSB1c2VyIHRvIHZpZXcgYW5kIGFjY2VwdCBSQU0gc2hhcmUgaW52aXRhdGlvbnMgdG8gYWNjZXNzIHJlc291cmNlcyBvdXRzaWRlIG9mIHRoZSB1c2VyJ3MgQVdTIGFjY291bnQuICovXG4gICAgcHVibGljIEFtYXpvbk9taWNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PbWljc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIE9taWNzICovXG4gICAgcHVibGljIEFtYXpvbk9taWNzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT21pY3NSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhZG1pbmlzdHJhdGl2ZSBwZXJtaXNzaW9ucyB0aGF0IGFsbG93IGFjY2VzcyB0byBhbGwgQW1hem9uIE9uZSBFbnRlcnByaXNlIHJlc291cmNlcyBhbmQgb3BlcmF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uT25lRW50ZXJwcmlzZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT25lRW50ZXJwcmlzZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgbGltaXRlZCByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0aGF0IGFsbG93IGRldmljZSBpbnN0YWxsYXRpb24gYW5kIGFjdGl2YXRpb24uICovXG4gICAgcHVibGljIEFtYXpvbk9uZUVudGVycHJpc2VJbnN0YWxsZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT25lRW50ZXJwcmlzZUluc3RhbGxlckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyByZWFkIG9ubHkgcGVybWlzc2lvbnMgdG8gYWxsIEFtYXpvbiBPbmUgRW50ZXJwcmlzZSByZXNvdXJjZXMgYW5kIG9wZXJhdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvbk9uZUVudGVycHJpc2VSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PbmVFbnRlcnByaXNlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIE9wZW5TZWFyY2ggRGFzaGJvYXJkcyBTZXJ2aWNlIHRvIGFjY2VzcyBvdGhlciBBV1Mgc2VydmljZXMgc3VjaCBhcyBDbG91ZFdhdGNoIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hEYXNoYm9hcmRzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT3BlblNlYXJjaERhc2hib2FyZHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBPcGVuU2VhcmNoIERpcmVjdFF1ZXJ5IFNlcnZpY2UgdG8gYWNjZXNzIEFXUyBHbHVlIEFQSXMgZm9yIGNyZWF0aW5nIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uT3BlblNlYXJjaERpcmVjdFF1ZXJ5R2x1ZUNyZWF0ZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoRGlyZWN0UXVlcnlHbHVlQ3JlYXRlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBPcGVuU2VhcmNoIEluZ2VzdGlvbiB0byBhY2Nlc3Mgb3RoZXIgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25PcGVuU2VhcmNoSW5nZXN0aW9uRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoSW5nZXN0aW9uRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gdGhlIEFtYXpvbiBPcGVuU2VhcmNoIEluZ2VzdGlvbiBTZXJ2aWNlICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hJbmdlc3Rpb25SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoSW5nZXN0aW9uUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIE9wZW5TZWFyY2ggSW5nZXN0aW9uIFNlcnZpY2UgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uT3BlblNlYXJjaEluZ2VzdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk9wZW5TZWFyY2hJbmdlc3Rpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IEFtYXpvbiBPcGVuU2VhcmNoIFNlcnZlcmxlc3MgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcyBzdWNoIGFzIENsb3VkV2F0Y2ggQVBJcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uT3BlblNlYXJjaFNlcnZlcmxlc3NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoU2VydmVybGVzc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBBbWF6b24gQ29nbml0byBjb25maWd1cmF0aW9uIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hTZXJ2aWNlQ29nbml0b0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoU2VydmljZUNvZ25pdG9BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgQW1hem9uIE9wZW5TZWFyY2ggU2VydmljZSBjb25maWd1cmF0aW9uIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hTZXJ2aWNlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoU2VydmljZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBBbWF6b24gT3BlblNlYXJjaCBTZXJ2aWNlIGNvbmZpZ3VyYXRpb24gc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uT3BlblNlYXJjaFNlcnZpY2VSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoU2VydmljZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgQW1hem9uIE9wZW5TZWFyY2ggU2VydmljZSB0byBhY2Nlc3Mgb3RoZXIgQVdTIHNlcnZpY2VzIHN1Y2ggYXMgRUMyIE5ldHdvcmtpbmcgQVBJcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uT3BlblNlYXJjaFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk9wZW5TZWFyY2hTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBQZXJzb25hbGl6ZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gQWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgKGUuZy4sIFMzLCBDbG91ZFdhdGNoKS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUGVyc29uYWxpemVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblBlcnNvbmFsaXplRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUG9sbHkgc2VydmljZSBhbmQgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Qb2xseUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUG9sbHlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIFBvbGx5IHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUG9sbHlSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Qb2xseVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFXUyBNYW5hZ2VkIFByb21ldGhldXMgcmVzb3VyY2VzIGluIHRoZSBBV1MgY29uc29sZSAqL1xuICAgIHB1YmxpYyBBbWF6b25Qcm9tZXRoZXVzQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUHJvbWV0aGV1c0NvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFXUyBNYW5hZ2VkIFByb21ldGhldXMgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFtYXpvblByb21ldGhldXNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblByb21ldGhldXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGFjY2VzcyB0byBydW4gcXVlcmllcyBhZ2FpbnN0IEFXUyBNYW5hZ2VkIFByb21ldGhldXMgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFtYXpvblByb21ldGhldXNRdWVyeUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Qcm9tZXRoZXVzUXVlcnlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgd3JpdGUgb25seSBhY2Nlc3MgdG8gQVdTIE1hbmFnZWQgUHJvbWV0aGV1cyB3b3Jrc3BhY2VzICovXG4gICAgcHVibGljIEFtYXpvblByb21ldGhldXNSZW1vdGVXcml0ZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Qcm9tZXRoZXVzUmVtb3RlV3JpdGVBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyBtYW5hZ2VkIG9yIHVzZWQgYnkgQW1hem9uIE1hbmFnZWQgU2VydmljZSBmb3IgUHJvbWV0aGV1cyBDb2xsZWN0b3IgKi9cbiAgICBwdWJsaWMgQW1hem9uUHJvbWV0aGV1c1NjcmFwZXJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Qcm9tZXRoZXVzU2NyYXBlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZGV2ZWxvcGVyIGFjY2VzcyB0byBlbmFibGUgaW50ZXJhY3Rpb25zIHdpdGggQW1hem9uIFEgKi9cbiAgICBwdWJsaWMgQW1hem9uUURldmVsb3BlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25RRGV2ZWxvcGVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gZW5hYmxlIGludGVyYWN0aW9ucyB3aXRoIEFtYXpvbiBRICovXG4gICAgcHVibGljIEFtYXpvblFGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFFMREIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25RTERCQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUUxEQkNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFFMREIgdmlhIHRoZSBzZXJ2aWNlIEFQSS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUUxEQkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUUxEQkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBRTERCLiAqL1xuICAgIHB1YmxpYyBBbWF6b25RTERCUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUUxEQlJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBSRFMgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvblJEU0JldGFTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNCZXRhU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIFJEUyBDdXN0b20gdG8gcGVyZm9ybSB2YXJpb3VzIGF1dG9tYXRpb24gYWN0aW9ucyBhbmQgZGF0YWJhc2UgbWFuYWdlbWVudCB0YXNrcyB0aHJvdWdoIGFuIEVDMiBpbnN0YW5jZSBwcm9maWxlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNDdXN0b21JbnN0YW5jZVByb2ZpbGVSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU0N1c3RvbUluc3RhbmNlUHJvZmlsZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gUkRTIEN1c3RvbSBQcmV2aWV3IFNlcnZpY2UgUm9sZSBQb2xpY3kgKi9cbiAgICBwdWJsaWMgQW1hem9uUkRTQ3VzdG9tUHJldmlld1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU0N1c3RvbVByZXZpZXdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gUkRTIEN1c3RvbSB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uUkRTQ3VzdG9tU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUkRTQ3VzdG9tU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgZnVsbCBhY2Nlc3MgdG8gdXNlIHRoZSBSRFMgZGF0YSBBUElzLCBzZWNyZXQgc3RvcmUgQVBJcyBmb3IgUkRTIGRhdGFiYXNlIGNyZWRlbnRpYWxzLCBhbmQgREIgY29uc29sZSBxdWVyeSBtYW5hZ2VtZW50IEFQSXMgdG8gZXhlY3V0ZSBTUUwgc3RhdGVtZW50cyBvbiBBdXJvcmEgU2VydmVybGVzcyBjbHVzdGVycyBpbiB0aGUgQVdTIGFjY291bnQuICovXG4gICAgcHVibGljIEFtYXpvblJEU0RhdGFGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU0RhdGFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgUkRTIHRvIGFjY2VzcyBEaXJlY3RvcnkgU2VydmljZSBNYW5hZ2VkIEFEIG9uIGJlaGFsZiBvZiB0aGUgY3VzdG9tZXIgZm9yIGRvbWFpbi1qb2luZWQgU1FMIFNlcnZlciBEQiBpbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFtYXpvblJEU0RpcmVjdG9yeVNlcnZpY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUkRTRGlyZWN0b3J5U2VydmljZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBDbG91ZHdhdGNoIGZvciBSRFMgRW5oYW5jZWQgTW9uaXRvcmluZyAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNFbmhhbmNlZE1vbml0b3JpbmdSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU0VuaGFuY2VkTW9uaXRvcmluZ1JvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUkRTIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUkRTRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gUkRTIFBlcmZvcm1hbmNlIEluc2lnaHRzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNQZXJmb3JtYW5jZUluc2lnaHRzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNQZXJmb3JtYW5jZUluc2lnaHRzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFJlYWQtT25seSBwb2xpY3kgZm9yIFJEUyBQZXJmb3JtYW5jZSBJbnNpZ2h0cyAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNQZXJmb3JtYW5jZUluc2lnaHRzUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUkRTUGVyZm9ybWFuY2VJbnNpZ2h0c1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIFJEUyBQcmV2aWV3IFNlcnZpY2UgUm9sZSBQb2xpY3kgKi9cbiAgICBwdWJsaWMgQW1hem9uUkRTUHJldmlld1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU1ByZXZpZXdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFJEUyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblJEU1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBSRFMgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvblJEU1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gcnVuIFNRTCBjb21tYW5kcyB0byBjb3B5LCBsb2FkLCB1bmxvYWQsIHF1ZXJ5LCBhbmQgYW5hbHl6ZSBkYXRhIG9uIEFtYXpvbiBSZWRzaGlmdC4gVGhlIHBvbGljeSBhbHNvIGdyYW50cyBwZXJtaXNzaW9ucyB0byBydW4gc2VsZWN0IHN0YXRlbWVudHMgZm9yIHJlbGF0ZWQgc2VydmljZXMsIHN1Y2ggYXMgQW1hem9uIFMzLCBBbWF6b24gQ2xvdWRXYXRjaCBsb2dzLCBBbWF6b24gU2FnZU1ha2VyLCBvciBBV1MgR2x1ZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVkc2hpZnRBbGxDb21tYW5kc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUmVkc2hpZnRBbGxDb21tYW5kc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUmVkc2hpZnQgRGF0YSBBUElzLiBUaGlzIHBvbGljeSBhbHNvIGdyYW50cyBzY29wZWQgYWNjZXNzIHRvIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWRzaGlmdERhdGFGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJlZHNoaWZ0RGF0YUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUmVkc2hpZnQgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWRzaGlmdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUmVkc2hpZnRGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFtYXpvbiBSZWRzaGlmdCBRdWVyeSBFZGl0b3IgYW5kIHRvIHNhdmVkIHF1ZXJpZXMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJlZHNoaWZ0UXVlcnlFZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFtYXpvbiBSZWRzaGlmdCBRdWVyeSBFZGl0b3IgVjIgb3BlcmF0aW9ucyBhbmQgcmVzb3VyY2VzLiBUaGlzIHBvbGljeSBhbHNvIGdyYW50cyBhY2Nlc3MgdG8gb3RoZXIgcmVxdWlyZWQgc2VydmljZXMuIFRoaXMgaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gbGlzdCB0aGUgQW1hem9uIFJlZHNoaWZ0IGNsdXN0ZXJzLCByZWFkIGtleXMgYW5kIGFsaWFzZXMgaW4gQVdTIEtNUyBhbmQgbWFuYWdlIHRoZSBRdWVyeSBFZGl0b3IgVjIgc2VjcmV0cyBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yVjJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJlZHNoaWZ0UXVlcnlFZGl0b3JWMkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgdGhlIGFiaWxpdHkgdG8gd29yayB3aXRoIEFtYXpvbiBSZWRzaGlmdCBRdWVyeSBFZGl0b3IgVjIgd2l0aG91dCBzaGFyaW5nIHJlc291cmNlcy4gVGhlIGdyYW50ZWQgcHJpbmNpcGFsIGNhbiBvbmx5IHJlYWQsIHVwZGF0ZSBhbmQgZGVsZXRlIGl0cyBvd24gcmVzb3VyY2VzIGJ1dCBjYW5ub3Qgc2hhcmUgdGhlbS4gVGhpcyBwb2xpY3kgYWxzbyBncmFudHMgYWNjZXNzIHRvIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzLiBUaGlzIGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIGxpc3QgdGhlIEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVycyBhbmQgbWFuYWdlIHRoZSBRdWVyeSBFZGl0b3IgVjIgc2VjcmV0cyBvZiB0aGUgcHJpbmNpcGFsIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuICovXG4gICAgcHVibGljIEFtYXpvblJlZHNoaWZ0UXVlcnlFZGl0b3JWMk5vU2hhcmluZygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yVjJOb1NoYXJpbmcpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgdGhlIGFiaWxpdHkgdG8gd29yayB3aXRoIEFtYXpvbiBSZWRzaGlmdCBRdWVyeSBFZGl0b3IgVjIgd2l0aCBsaW1pdGVkIHNoYXJpbmcgb2YgcmVzb3VyY2VzLiBUaGUgZ3JhbnRlZCBwcmluY2lwYWwgY2FuIHJlYWQsIHdyaXRlIGFuZCBzaGFyZSBpdHMgb3duIHJlc291cmNlcy4gVGhlIGdyYW50ZWQgcHJpbmNpcGFsIGNhbiByZWFkIHRoZSByZXNvdXJjZXMgc2hhcmVkIHdpdGggaXRzIHRlYW0gYnV0IGNhbm5vdCB1cGRhdGUgdGhlbS4gVGhpcyBwb2xpY3kgYWxzbyBncmFudHMgYWNjZXNzIHRvIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzLiBUaGlzIGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIGxpc3QgdGhlIEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVycyBhbmQgbWFuYWdlIHRoZSBRdWVyeSBFZGl0b3IgVjIgc2VjcmV0cyBvZiB0aGUgcHJpbmNpcGFsIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuICovXG4gICAgcHVibGljIEFtYXpvblJlZHNoaWZ0UXVlcnlFZGl0b3JWMlJlYWRTaGFyaW5nKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJlZHNoaWZ0UXVlcnlFZGl0b3JWMlJlYWRTaGFyaW5nKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHRoZSBhYmlsaXR5IHRvIHdvcmsgd2l0aCBBbWF6b24gUmVkc2hpZnQgUXVlcnkgRWRpdG9yIFYyIHdpdGggc2hhcmluZyBvZiByZXNvdXJjZXMuIFRoZSBncmFudGVkIHByaW5jaXBhbCBjYW4gcmVhZCwgd3JpdGUgYW5kIHNoYXJlIGl0cyBvd24gcmVzb3VyY2VzLiBUaGUgZ3JhbnRlZCBwcmluY2lwYWwgY2FuIHJlYWQgYW5kIHVwZGF0ZSB0aGUgcmVzb3VyY2VzIHNoYXJlZCB3aXRoIGl0cyB0ZWFtLiBUaGlzIHBvbGljeSBhbHNvIGdyYW50cyBhY2Nlc3MgdG8gb3RoZXIgcmVxdWlyZWQgc2VydmljZXMuIFRoaXMgaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gbGlzdCB0aGUgQW1hem9uIFJlZHNoaWZ0IGNsdXN0ZXJzIGFuZCBtYW5hZ2UgdGhlIFF1ZXJ5IEVkaXRvciBWMiBzZWNyZXRzIG9mIHRoZSBwcmluY2lwYWwgaW4gQVdTIFNlY3JldHMgTWFuYWdlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVkc2hpZnRRdWVyeUVkaXRvclYyUmVhZFdyaXRlU2hhcmluZygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yVjJSZWFkV3JpdGVTaGFyaW5nKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gUmVkc2hpZnQgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWRzaGlmdFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJlZHNoaWZ0UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIFJlZHNoaWZ0IHRvIGNhbGwgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFtYXpvblJlZHNoaWZ0U2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUmVkc2hpZnRTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHNwZWNpZmllcyByZWtvZ25pdGlvbiBhbmQgczMgcGVybWlzc2lvbnMgcmVxdWlyZWQgYnkgQW1hem9uIFJla29nbml0aW9uIEN1c3RvbSBMYWJlbHMgZmVhdHVyZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVrb2duaXRpb25DdXN0b21MYWJlbHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJla29nbml0aW9uQ3VzdG9tTGFiZWxzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFjY2VzcyB0byBhbGwgQW1hem9uIFJla29nbml0aW9uIEFQSXMgKi9cbiAgICBwdWJsaWMgQW1hem9uUmVrb2duaXRpb25GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJla29nbml0aW9uRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFjY2VzcyB0byBhbGwgUmVhZCByZWtvZ25pdGlvbiBBUElzICovXG4gICAgcHVibGljIEFtYXpvblJla29nbml0aW9uUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUmVrb2duaXRpb25SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBSZWtvZ25pdGlvbiB0byBjYWxsIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVrb2duaXRpb25TZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWtvZ25pdGlvblNlcnZpY2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIFJvdXRlIDUzIEF1dG8gTmFtaW5nIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNBdXRvTmFtaW5nRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzQXV0b05hbWluZ0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIGFsbCBSb3V0ZSA1MyBBdXRvIE5hbWluZyBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzQXV0b05hbWluZ1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJvdXRlNTNBdXRvTmFtaW5nUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWdpc3RyYW50IGxldmVsIGFjY2VzcyB0byBSb3V0ZSA1MyBBdXRvIE5hbWluZyBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzQXV0b05hbWluZ1JlZ2lzdHJhbnRBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M0F1dG9OYW1pbmdSZWdpc3RyYW50QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIFJvdXRlNTMgRG9tYWlucyBhY3Rpb25zIGFuZCBDcmVhdGUgSG9zdGVkIFpvbmUgdG8gYWxsb3cgSG9zdGVkIFpvbmUgY3JlYXRpb24gYXMgcGFydCBvZiBkb21haW4gcmVnaXN0cmF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M0RvbWFpbnNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJvdXRlNTNEb21haW5zRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBSb3V0ZTUzIERvbWFpbnMgbGlzdCBhbmQgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M0RvbWFpbnNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzRG9tYWluc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIEFtYXpvbiBSb3V0ZSA1MyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJvdXRlNTNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBSb3V0ZSA1MyBQcm9maWxlIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M1Byb2ZpbGVzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUHJvZmlsZXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIFJvdXRlIDUzIFByb2ZpbGUgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzUHJvZmlsZXNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUHJvZmlsZXNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gYWxsIEFtYXpvbiBSb3V0ZSA1MyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUm91dGUgNTMgUmVjb3ZlcnkgQ2x1c3RlciAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzUmVjb3ZlcnlDbHVzdGVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUmVjb3ZlcnlDbHVzdGVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFJvdXRlIDUzIFJlY292ZXJ5IENsdXN0ZXIgKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M1JlY292ZXJ5Q2x1c3RlclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJvdXRlNTNSZWNvdmVyeUNsdXN0ZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBSb3V0ZSA1MyBSZWNvdmVyeSBDb250cm9sIENvbmZpZyAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzUmVjb3ZlcnlDb250cm9sQ29uZmlnRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUmVjb3ZlcnlDb250cm9sQ29uZmlnRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFJvdXRlIDUzIFJlY292ZXJ5IENvbnRyb2wgQ29uZmlnICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNSZWNvdmVyeUNvbnRyb2xDb25maWdSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUmVjb3ZlcnlDb250cm9sQ29uZmlnUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUm91dGUgNTMgUmVjb3ZlcnkgUmVhZGluZXNzICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNSZWNvdmVyeVJlYWRpbmVzc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1JlY292ZXJ5UmVhZGluZXNzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFJvdXRlIDUzIFJlY292ZXJ5IFJlYWRpbmVzcyAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzUmVjb3ZlcnlSZWFkaW5lc3NSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUmVjb3ZlcnlSZWFkaW5lc3NSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bGwgYWNjZXNzIHBvbGljeSBmb3IgUm91dGUgNTMgUmVzb2x2ZXIgKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M1Jlc29sdmVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUmVzb2x2ZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUmVhZCBvbmx5IHBvbGljeSBmb3IgUm91dGUgNTMgUmVzb2x2ZXIgKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M1Jlc29sdmVyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1Jlc29sdmVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgYnVja2V0cyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblMzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TM0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBV1MgTGFtYmRhIGZ1bmN0aW9ucyBwZXJtaXNzaW9ucyB0byBpbnRlcmFjdCB3aXRoIEFtYXpvbiBTMyBPYmplY3QgTGFtYmRhLiBBbHNvIGdyYW50cyBMYW1iZGEgcGVybWlzc2lvbnMgdG8gd3JpdGUgdG8gQ2xvdWRXYXRjaCBMb2dzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TM09iamVjdExhbWJkYUV4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUzNPYmplY3RMYW1iZGFFeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFMzIG9uIE91dHBvc3RzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUzNPdXRwb3N0c0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUzNPdXRwb3N0c0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBTMyBvbiBPdXRwb3N0cyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblMzT3V0cG9zdHNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TM091dHBvc3RzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFsbCBidWNrZXRzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUzNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TM1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIFMzIHRhYmxlIGJ1Y2tldHMuICovXG4gICAgcHVibGljIEFtYXpvblMzVGFibGVzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TM1RhYmxlc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIG1hbmFnZWQgcG9saWN5IGdyYW50cyBBV1MgTGFrZSBGb3JtYXRpb24gcGVybWlzc2lvbnMgdG8gYWN0IG9uIGFsbCB0YWJsZSBidWNrZXRzLCBuYW1lc3BhY2VzLCBhbmQgdGFibGVzIHdpdGhpbiB0aGUgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQW1hem9uUzNUYWJsZXNMYWtlRm9ybWF0aW9uU2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUzNUYWJsZXNMYWtlRm9ybWF0aW9uU2VydmljZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFsbCBTMyB0YWJsZSBidWNrZXRzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TM1RhYmxlc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblMzVGFibGVzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIHJvbGUgcG9saWN5IHVzZWQgYnkgdGhlIEFXUyBTZXJ2aWNlIENhdGFsb2cgc2VydmljZSB0byBwcm92aXNpb24gcHJvZHVjdHMgZnJvbSBBbWF6b24gU2FnZU1ha2VyIHBvcnRmb2xpbyBvZiBwcm9kdWN0cy4gR3JhbnRzIHBlcm1pc3Npb25zIHRvIGEgc2V0IG9mIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIENvZGVQaXBlbGluZSwgQ29kZUJ1aWxkLCBDb2RlQ29tbWl0LCBHbHVlLCBDbG91ZEZvcm1hdGlvbiwgZXRjLC4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyQWRtaW5TZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyQWRtaW5TZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgQW1hem9uIFNhZ2VNYWtlciBDYW52YXMgdG8gdXNlIEFJIHNlcnZpY2VzIHRvIHN1cHBvcnQgcmVhZHkgdG8gdXNlIEFJIHNvbHV0aW9ucy4gVGhpcyBwb2xpY3kgd2lsbCBhZGQgbW9yZSBtdXRhdGluZyBwZXJtaXNzaW9ucyBmb3Igc2VydmljZXMgYXMgQW1hem9uIFNhZ2VNYWtlciBDYW52YXMgYWRkcyBzdXBwb3J0LiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJDYW52YXNBSVNlcnZpY2VzQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNhbnZhc0FJU2VydmljZXNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gdXNlIEFtYXpvbiBCZWRyb2NrIGluIFNhZ2VNYWtlciBDYW52YXMgYnkgcHJvdmlkaW5nIGFjY2VzcyB0byBkb3duc3RyZWFtIHNlcnZpY2VzIHN1Y2ggYXMgUzMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckNhbnZhc0JlZHJvY2tBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyQ2FudmFzQmVkcm9ja0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBTYWdlTWFrZXIgcmVzb3VyY2VzIGFuZCBvcGVyYXRpb25zIGZvciBkYXRhIHByZXBhcmF0aW9uIGluIENhbnZhcy4gVGhlIHBvbGljeSBhbHNvIHByb3ZpZGVzIHNlbGVjdCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyAoZS5nLiwgUzMsIElBTSwgS01TLCBSRFMsIENsb3VkV2F0Y2ggTG9ncywgUmVkc2hpZnQsIEF0aGVuYSwgR2x1ZSwgRXZlbnRCcmlkZ2UsIFNlY3JldHMgTWFuYWdlcikuIFRoaXMgcG9saWN5IHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgQW1hem9uIFNhZ2VNYWtlciBEb21haW4vVXNlciBQcm9maWxlIGV4ZWN1dGlvbiByb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJDYW52YXNEYXRhUHJlcEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyQ2FudmFzRGF0YVByZXBGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBTYWdlTWFrZXIgQ2FudmFzIHRvIGNyZWF0ZSwgbWFuYWdlIGFuZCB2aWV3IGVuZHBvaW50IGRldGFpbHMgZm9yIGVuZHBvaW50cyBjcmVhdGVkIHRocm91Z2ggQ2FudmFzLiBBbGxvd3MgQW1hem9uIFNhZ2VNYWtlciBDYW52YXMgdG8gcmV0cmlldmUgZW5kcG9pbnQgaW52b2NhdGlvbiBtZXRyaWNzIGZyb20gQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyQ2FudmFzRGlyZWN0RGVwbG95QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNhbnZhc0RpcmVjdERlcGxveUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0byBBbWF6b24gRU1SIFNlcnZlcmxlc3MgZm9yIHNlcnZpY2VzIHN1Y2ggYXMgUzMsIHVzZWQgYnkgQW1hem9uIFNhZ2VNYWtlciBDYW52YXMgZm9yIGxhcmdlIGRhdGEgcHJvY2Vzc2luZy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyQ2FudmFzRU1SU2VydmVybGVzc0V4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyQ2FudmFzRU1SU2VydmVybGVzc0V4ZWN1dGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgY29tbW9ubHkgbmVlZGVkIHRvIHVzZSBTYWdlTWFrZXIgQ2FudmFzIHdpdGggQW1hem9uIEZvcmVjYXN0LiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJDYW52YXNGb3JlY2FzdEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJDYW52YXNGb3JlY2FzdEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBTYWdlTWFrZXIgQ2FudmFzIHJlc291cmNlcyBhbmQgb3BlcmF0aW9ucy4gVGhlIHBvbGljeSBhbHNvIHByb3ZpZGVzIHNlbGVjdCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyAoZS5nLiwgUzMsIElBTSwgVlBDLCBFQ1IsIENsb3VkV2F0Y2ggTG9ncywgUmVkc2hpZnQsIFNlY3JldHMgTWFuYWdlciwgYW5kIEZvcmVjYXN0KS4gVGhpcyBwb2xpY3kgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZSBBbWF6b24gU2FnZU1ha2VyIERvbWFpbi9Vc2VyIFByb2ZpbGUgZXhlY3V0aW9uIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckNhbnZhc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyQ2FudmFzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciBBbWF6b24gU2FnZU1ha2VyIENhbnZhcyB0byB1c2UgdGhlIFNhZ2VNYWtlciBEYXRhIFNjaWVuY2UgQXNzaXN0YW50IHNlcnZpY2UuIFRoZSBEYXRhIFNjaWVuY2UgQXNzaXN0YW50IGN1cnJlbnRseSB1c2VzIGJvdGggQW1hem9uIFNhZ2VNYWtlciBhbmQgQW1hem9uIFEgRGV2ZWxvcGVyIHRvIHByb2Nlc3MgdXNlciBwcm9tcHRzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJDYW52YXNTTURhdGFTY2llbmNlQXNzaXN0YW50QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNhbnZhc1NNRGF0YVNjaWVuY2VBc3Npc3RhbnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgY29tbW9ubHkgbmVlZGVkIHRvIHVzZSBBbWF6b24gU2FnZU1ha2VyIENsdXN0ZXIuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckNsdXN0ZXJJbnN0YW5jZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyQ2x1c3Rlckluc3RhbmNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIE1hbmFnZWQgcG9saWN5IGZvciBTZXJ2aWNlIExpbmtlZCBSb2xlIGZvciBBbWF6b24gU2FnZU1ha2VyIENvcmUgU2VydmljZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyQ29yZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNvcmVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIG5lY2Vzc2FyeSBmb3IgU2FnZU1ha2VyIEVkZ2UgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgYSBkZXZpY2UgZmxlZXQgZm9yIHRoZSBjdXN0b21lciB1c2luZyB0aGUgZGVmYXVsdCBjbG91ZCBjb25uZWN0aW9uLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJFZGdlRGV2aWNlRmxlZXRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyRWRnZURldmljZUZsZWV0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gZW5hYmxlIHRoZSBvZmZsaW5lIHN0b3JlIGZvciBhbiBBbWF6b24gU2FnZU1ha2VyIEZlYXR1cmVTdG9yZSBmZWF0dXJlIGdyb3VwLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJGZWF0dXJlU3RvcmVBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyRmVhdHVyZVN0b3JlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFNhZ2VNYWtlciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gQWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgKGUuZy4sIFMzLCBFQ1IsIENsb3VkV2F0Y2ggTG9ncykuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGUgYWNjZXNzIHRvIHNlcnZpY2VzIHRoYXQgYXJlIGNvbW1vbmx5IG5lZWRlZCB0byB1c2UgU2FnZU1ha2VyIGdlb3NwYXRpYWwuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckdlb3NwYXRpYWxFeGVjdXRpb25Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckdlb3NwYXRpYWxFeGVjdXRpb25Sb2xlKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFNhZ2VNYWtlciBHZW9zcGF0aWFsIHRocm91Z2ggdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyR2Vvc3BhdGlhbEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyR2Vvc3BhdGlhbEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIHNlcnZpY2VzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHJ1biBTYWdlTWFrZXIgR3JvdW5kVHJ1dGggTGFiZWxpbmcgam9iICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckdyb3VuZFRydXRoRXhlY3V0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckdyb3VuZFRydXRoRXhlY3V0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgcHJpdmlsZWdlcyByZXF1aXJlZCBmb3Igc2V0dGluZyB1cCBTYWdlTWFrZXIgSHlwZXJQb2Qgb2JzZXJ2YWJpbGl0eS4gSXQgZW5hYmxlcyBhY2Nlc3MgdG8gQW1hem9uIE1hbmFnZWQgUHJvbWV0aGV1cywgQW1hem9uIE1hbmFnZWQgR3JhZmFuYSBhbmQgRUtTIEFkZG9ucy4gVGhlIHBvbGljeSBhbHNvIGluY2x1ZGVzIGJyb2FkIGFjY2VzcyB0byBHcmFmYW5hIEhUVFAgQVBJcyB0aHJvdWdoIFNlcnZpY2VBY2NvdW50VG9rZW5zIGFjcm9zcyBhbGwgQW1hem9uIE1hbmFnZWQgR3JhZmFuYSB3b3Jrc3BhY2VzIGluIHlvdXIgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VySHlwZXJQb2RPYnNlcnZhYmlsaXR5QWRtaW5BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VySHlwZXJQb2RPYnNlcnZhYmlsaXR5QWRtaW5BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gQW1hem9uIFNhZ2VNYWtlciBIeXBlclBvZCB0byByZWxhdGVkIEFXUyBzZXJ2aWNlcyBzdWNoIGFzIEFtYXpvbiBFS1MsIEFtYXpvbiBDbG91ZFdhdGNoIGV0Yy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VySHlwZXJQb2RTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJIeXBlclBvZFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gc2V0IHVwIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgdHJhaW5pbmcgb3BlcmF0b3IuIEl0IGVuYWJsZXMgYWNjZXNzIHRvIEFtYXpvbiBTYWdlTWFrZXIgSHlwZXJQb2QgYW5kIEVLUyBhZGQtb25zLiBUaGUgcG9saWN5IGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIGRlc2NyaWJlIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgcmVzb3VyY2VzIGluIHlvdXIgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VySHlwZXJQb2RUcmFpbmluZ09wZXJhdG9yQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckh5cGVyUG9kVHJhaW5pbmdPcGVyYXRvckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBjcmVhdGUgQW1hem9uIEF1Z21lbnRlZCBBSSBGbG93RGVmaW5pdGlvbiByZXNvdXJjZXMgYWdhaW5zdCBhbnkgV29ya3RlYW0uICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlck1lY2hhbmljYWxUdXJrQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlck1lY2hhbmljYWxUdXJrQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBBV1MgbWFuYWdlZCBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIG5lZWRlZCB0byB1c2UgYWxsIEFtYXpvbiBTYWdlTWFrZXIgR292ZXJuYW5jZSBmZWF0dXJlcy4gVGhlIHBvbGljeSBhbHNvIHByb3ZpZGVzIHNlbGVjdCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyAoZS5nLiwgUzMsIEtNUykuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlck1vZGVsR292ZXJuYW5jZVVzZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJNb2RlbEdvdmVybmFuY2VVc2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIGlzIGEgbmV3IG1hbmFnZWQgcG9saWN5IGZvciBNb2RlbCBSZWdpc3RyeSBpbiBTYWdlbWFrZXIuIFRoaXMgcG9saWN5IGlzIGEgc3RhbmRhbG9uZSBwb2xpY3kgdGhhdCBjYW4gYmUgYXR0YWNoZWQgdG8gdGhlIHVzZXIgcm9sZSB0byBhY2Nlc3MgTW9kZWwgUmVnaXN0cnkgcmVsYXRlZCBmdW5jdGlvbmFsaXRpZXMgaW4gU2FnZW1ha2VyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJNb2RlbFJlZ2lzdHJ5RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJNb2RlbFJlZ2lzdHJ5RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIE1hbmFnZWQgcG9saWN5IGZvciBTZXJ2aWNlIExpbmtlZCBSb2xlIGZvciBBbWF6b24gU2FnZU1ha2VyIE5vdGVib29rcyAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJOb3RlYm9va3NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJOb3RlYm9va3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgQW1hem9uIFNhZ2VNYWtlciBwYXJ0bmVyIGFwcCB1c2VycyB0byBhY2Nlc3MgYXBwbGljYXRpb25zLCBsaXN0IGF2YWlsYWJsZSBhcHBsaWNhdGlvbnMsIGxhdW5jaCBhcHBsaWNhdGlvbiB3ZWIgVUlzLCBhbmQgY29ubmVjdCB2aWEgdGhlIGFwcGxpY2F0aW9uIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyUGFydG5lckFwcHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclBhcnRuZXJBcHBzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIEFQSUdhdGV3YXkgd2l0aGluIHRoZSBBV1MgU2VydmljZUNhdGFsb2cgcHJvdmlzaW9uZWQgcHJvZHVjdHMgZnJvbSBBbWF6b24gU2FnZU1ha2VyIHBvcnRmb2xpbyBvZiBwcm9kdWN0cy4gR3JhbnRzIHBlcm1pc3Npb25zIHRvIGEgc2V0IG9mIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIExhbWJkYSBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJQYXJ0bmVyU2VydmljZUNhdGFsb2dQcm9kdWN0c0FwaUdhdGV3YXlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJQYXJ0bmVyU2VydmljZUNhdGFsb2dQcm9kdWN0c0FwaUdhdGV3YXlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHdpdGhpbiB0aGUgQVdTIFNlcnZpY2VDYXRhbG9nIHByb3Zpc2lvbmVkIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHN1YnNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBMYW1iZGEsIEFQSUdhdGV3YXkgYW5kIG90aGVycy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyUGFydG5lclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNDbG91ZEZvcm1hdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclBhcnRuZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzQ2xvdWRGb3JtYXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIExhbWJkYSB3aXRoaW4gdGhlIEFXUyBTZXJ2aWNlQ2F0YWxvZyBwcm92aXNpb25lZCBwcm9kdWN0cyBmcm9tIEFtYXpvbiBTYWdlTWFrZXIgcG9ydGZvbGlvIG9mIHByb2R1Y3RzLiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYSBzZXQgb2YgcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgU2VjcmV0cyBNYW5hZ2VyIGFuZCBvdGhlcnMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclBhcnRuZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzTGFtYmRhU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyUGFydG5lclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNMYW1iZGFTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgQW1hem9uIE1hbmFnZWQgUG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyBjb21tb25seSBuZWVkZWQgZm9yIHVzZSB3aXRoIENhbGxiYWNrIHN0ZXBzIGFuZCBMYW1iZGEgc3RlcHMgaW4gU2FnZU1ha2VyIE1vZGVsIEJ1aWxkaW5nIFBpcGVsaW5lcy4gSXQgaXMgYWRkZWQgdG8gdGhlIEFtYXpvblNhZ2VNYWtlci1FeGVjdXRpb25Sb2xlIHRoYXQgY2FuIGJlIGNyZWF0ZWQgd2hlbiBzZXR0aW5nIHVwIFNhZ2VNYWtlciBTdHVkaW8uIEl0IGNhbiBhbHNvIGJlIGF0dGFjaGVkIHRvIGFueSBvdGhlciByb2xlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBhdXRob3Jpbmcgb3IgZXhlY3V0aW5nIHBpcGVsaW5lcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyUGlwZWxpbmVzSW50ZWdyYXRpb25zKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclBpcGVsaW5lc0ludGVncmF0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHdpbGwgYmUgdXNlZCBCeSBTYWdlTWFrZXIgVW5pZmllZCBTdHVkaW9zIHRvIGNyZWF0ZSBWUEMgcmVsYXRlZCByZXNvdXJjZXMgZm9yIFF1aWNrU2lnaHQgKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyUXVpY2tTaWdodFZQQ1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJRdWlja1NpZ2h0VlBDUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gU2FnZU1ha2VyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIEFQSUdhdGV3YXkgd2l0aGluIHRoZSBBV1MgU2VydmljZUNhdGFsb2cgcHJvdmlzaW9uZWQgcHJvZHVjdHMgZnJvbSBBbWF6b24gU2FnZU1ha2VyIHBvcnRmb2xpbyBvZiBwcm9kdWN0cy4gR3JhbnRzIHBlcm1pc3Npb25zIHRvIGEgc2V0IG9mIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIENsb3VkV2F0Y2ggTG9ncyBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzQXBpR2F0ZXdheVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNBcGlHYXRld2F5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIHJvbGUgcG9saWN5IHVzZWQgYnkgdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiB3aXRoaW4gdGhlIEFXUyBTZXJ2aWNlQ2F0YWxvZyBwcm92aXNpb25lZCBwcm9kdWN0cyBmcm9tIEFtYXpvbiBTYWdlTWFrZXIgcG9ydGZvbGlvIG9mIHByb2R1Y3RzLiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYSBzdWJzZXQgb2YgcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgU2FnZU1ha2VyIGFuZCBvdGhlcnMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNDbG91ZGZvcm1hdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNDbG91ZGZvcm1hdGlvblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSByb2xlIHBvbGljeSB1c2VkIGJ5IHRoZSBBV1MgQ29kZUJ1aWxkIHdpdGhpbiB0aGUgQVdTIFNlcnZpY2VDYXRhbG9nIHByb3Zpc2lvbmVkIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHN1YnNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBDb2RlUGlwZWxpbmUsIENvZGVCdWlsZCBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzQ29kZUJ1aWxkU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0NvZGVCdWlsZFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSByb2xlIHBvbGljeSB1c2VkIGJ5IHRoZSBBV1MgQ29kZVBpcGVsaW5lIHdpdGhpbiB0aGUgQVdTIFNlcnZpY2VDYXRhbG9nIHByb3Zpc2lvbmVkIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHN1YnNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBDb2RlUGlwZWxpbmUsIENvZGVCdWlsZCBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzQ29kZVBpcGVsaW5lU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0NvZGVQaXBlbGluZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSByb2xlIHBvbGljeSB1c2VkIGJ5IHRoZSBBV1MgQ2xvdWRXYXRjaCBFdmVudHMgd2l0aGluIHRoZSBBV1MgU2VydmljZUNhdGFsb2cgcHJvdmlzaW9uZWQgcHJvZHVjdHMgZnJvbSBBbWF6b24gU2FnZU1ha2VyIHBvcnRmb2xpbyBvZiBwcm9kdWN0cy4gR3JhbnRzIHBlcm1pc3Npb25zIHRvIGEgc3Vic2V0IG9mIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIENvZGVQaXBlbGluZSBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzRXZlbnRzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0V2ZW50c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSByb2xlIHBvbGljeSB1c2VkIGJ5IHRoZSBBV1MgRmlyZWhvc2Ugd2l0aGluIHRoZSBBV1MgU2VydmljZUNhdGFsb2cgcHJvdmlzaW9uZWQgcHJvZHVjdHMgZnJvbSBBbWF6b24gU2FnZU1ha2VyIHBvcnRmb2xpbyBvZiBwcm9kdWN0cy4gR3JhbnRzIHBlcm1pc3Npb25zIHRvIGEgc2V0IG9mIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIEZpcmVob3NlIGFuZCBvdGhlcnMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNGaXJlaG9zZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNGaXJlaG9zZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSByb2xlIHBvbGljeSB1c2VkIGJ5IHRoZSBBV1MgR2x1ZSB3aXRoaW4gdGhlIEFXUyBTZXJ2aWNlQ2F0YWxvZyBwcm92aXNpb25lZCBwcm9kdWN0cyBmcm9tIEFtYXpvbiBTYWdlTWFrZXIgcG9ydGZvbGlvIG9mIHByb2R1Y3RzLiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYSBzZXQgb2YgcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgR2x1ZSwgUzMgYW5kIG90aGVycy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0dsdWVTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzR2x1ZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSByb2xlIHBvbGljeSB1c2VkIGJ5IHRoZSBBV1MgTGFtYmRhIHdpdGhpbiB0aGUgQVdTIFNlcnZpY2VDYXRhbG9nIHByb3Zpc2lvbmVkIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBFQ1IsIFMzIGFuZCBvdGhlcnMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNMYW1iZGFTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzTGFtYmRhU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIEFtYXpvbiBNYW5hZ2VkIFBvbGljeSBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIFNhZ2VNYWtlciBUcmFpbmluZyBQbGFucy4gSXQgYWxsb3dzIHVzZXJzIHRvIGNyZWF0ZSBUcmFpbmluZyBQbGFucyBhbmQgUmVzZXJ2ZWQgQ2FwYWNpdGllcywgZGVzY3JpYmUgZXhpc3RpbmcgVHJhaW5pbmcgUGxhbnMsIGFuZCBwZXJmb3JtIHNlYXJjaCBhbmQgbGlzdGluZyBvcGVyYXRpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJUcmFpbmluZ1BsYW5DcmVhdGVBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyVHJhaW5pbmdQbGFuQ3JlYXRlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFNlY3VyaXR5IExha2UgYW5kIHJlbGF0ZWQgc2VydmljZXMgbmVlZGVkIHRvIGFkbWluaXN0ZXIgU2VjdXJpdHkgTGFrZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2VjdXJpdHlMYWtlQWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TZWN1cml0eUxha2VBZG1pbmlzdHJhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBbWF6b24gU2VjdXJpdHlMYWtlIG1ldGEgc3RvcmUgbWFuYWdlciBsYW1iZGEgd2hpY2ggYWxsb3dzIHRoZSBhY2Nlc3MgdG8gY2xvdWR3YXRjaCwgUzMsIEdsdWUgYW5kIFNRUy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2VjdXJpdHlMYWtlTWV0YXN0b3JlTWFuYWdlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TZWN1cml0eUxha2VNZXRhc3RvcmVNYW5hZ2VyKTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIFNlY3VyaXR5IExha2UgY3JlYXRlcyBJQU0gcm9sZXMgZm9yIHRoaXJkLXBhcnR5IGN1c3RvbSBzb3VyY2VzIHRvIHdyaXRlIGRhdGEgdG8gYSBkYXRhIGxha2UgYW5kIGZvciB0aGlyZC1wYXJ0eSBzdWJzY3JpYmVycyB0byBjb25zdW1lIGRhdGEgZnJvbSBhIGRhdGEgbGFrZSwgYW5kIHVzZXMgdGhpcyBwb2xpY3kgd2hlbiBjcmVhdGluZyB0aGVzZSByb2xlcyB0byBkZWZpbmUgdGhlIGJvdW5kYXJ5IG9mIHRoZWlyIHBlcm1pc3Npb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TZWN1cml0eUxha2VQZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNlY3VyaXR5TGFrZVBlcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gU0VTIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU0VTRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TRVNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gU0VTIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU0VTUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU0VTUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgU0VTIHRvIHB1Ymxpc2ggQW1hem9uIENsb3VkV2F0Y2ggYmFzaWMgbW9uaXRvcmluZyBtZXRyaWNzIG9uIGJlaGFsZiBvZiB5b3VyIFNFUyByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uU0VTU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU0VTU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gU05TIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU05TRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TTlNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gU05TIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU05TUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU05TUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgQW1hem9uIFNOUyBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvblNOU1JvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU05TUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBTUVMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TUVNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNRU0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBTUVMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TUVNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TUVNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byB2aWV3IGF1dG9tYXRpb24gZXhlY3V0aW9ucyBhbmQgc2VuZCBhcHByb3ZhbCBkZWNpc2lvbnMgdG8gYXV0b21hdGlvbiB3YWl0aW5nIGZvciBhcHByb3ZhbCAqL1xuICAgIHB1YmxpYyBBbWF6b25TU01BdXRvbWF0aW9uQXBwcm92ZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU1NNQXV0b21hdGlvbkFwcHJvdmVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIEVDMiBBdXRvbWF0aW9uIHNlcnZpY2UgdG8gZXhlY3V0ZSBhY3Rpdml0aWVzIGRlZmluZWQgd2l0aGluIEF1dG9tYXRpb24gZG9jdW1lbnRzICovXG4gICAgcHVibGljIEFtYXpvblNTTUF1dG9tYXRpb25Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNTTUF1dG9tYXRpb25Sb2xlKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIFNTTSBBZ2VudCB0byBhY2Nlc3MgRGlyZWN0b3J5IFNlcnZpY2Ugb24gYmVoYWxmIG9mIHRoZSBjdXN0b21lciBmb3IgZG9tYWluLWpvaW4gdGhlIG1hbmFnZWQgaW5zdGFuY2UuICovXG4gICAgcHVibGljIEFtYXpvblNTTURpcmVjdG9yeVNlcnZpY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU1NNRGlyZWN0b3J5U2VydmljZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBTU00uICovXG4gICAgcHVibGljIEFtYXpvblNTTUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU1NNRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqICBTZXJ2aWNlIFJvbGUgdG8gYmUgdXNlZCBmb3IgRUMyIE1haW50ZW5hbmNlIFdpbmRvdyAqL1xuICAgIHB1YmxpYyBBbWF6b25TU01NYWludGVuYW5jZVdpbmRvd1JvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU1NNTWFpbnRlbmFuY2VXaW5kb3dSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZW5hYmxlcyBBV1MgU3lzdGVtcyBNYW5hZ2VyIGZ1bmN0aW9uYWxpdHkgb24gRUMyIGluc3RhbmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU1NNTWFuYWdlZEVDMkluc3RhbmNlRGVmYXVsdFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TU01NYW5hZ2VkRUMySW5zdGFuY2VEZWZhdWx0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHBvbGljeSBmb3IgQW1hem9uIEVDMiBSb2xlIHRvIGVuYWJsZSBBV1MgU3lzdGVtcyBNYW5hZ2VyIHNlcnZpY2UgY29yZSBmdW5jdGlvbmFsaXR5LiAqL1xuICAgIHB1YmxpYyBBbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIGFjY2VzcyB0byBjaGlsZCBpbnN0YW5jZXMgZm9yIHBhdGNoIGFzc29jaWF0aW9uIG9wZXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgQW1hem9uU1NNUGF0Y2hBc3NvY2lhdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TU01QYXRjaEFzc29jaWF0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gU1NNLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TU01SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TU01SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBV1MgUmVzb3VyY2VzIG1hbmFnZWQgb3IgdXNlZCBieSBBbWF6b24gU1NNICovXG4gICAgcHVibGljIEFtYXpvblNTTVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNTTVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWNjZXNzIHRvIGFsbCBBbWF6b24gVGV4dHJhY3QgQVBJcyAqL1xuICAgIHB1YmxpYyBBbWF6b25UZXh0cmFjdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVGV4dHJhY3RGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFRleHRyYWN0IHRvIGNhbGwgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25UZXh0cmFjdFNlcnZpY2VSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblRleHRyYWN0U2VydmljZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBtYW5hZ2UgQW1hem9uIFRpbWVzdHJlYW0gdXNpbmcgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuIE5vdGUgdGhhdCB0aGlzIHBvbGljeSBhbHNvIGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgY2VydGFpbiBLTVMgb3BlcmF0aW9ucywgYW5kIG9wZXJhdGlvbnMgdG8gbWFuYWdlIHlvdXIgc2F2ZWQgcXVlcmllcy4gSWYgdXNpbmcgQ3VzdG9tZXIgbWFuYWdlZCBDTUssIHBsZWFzZSByZWZlciB0byBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIG5lZWRlZC4gKi9cbiAgICBwdWJsaWMgQW1hem9uVGltZXN0cmVhbUNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblRpbWVzdHJlYW1Db25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBUaW1lc3RyZWFtLiBOb3RlIHRoYXQgdGhpcyBwb2xpY3kgYWxzbyBncmFudHMgY2VydGFpbiBLTVMgb3BlcmF0aW9uIGFjY2Vzcy4gSWYgdXNpbmcgQ3VzdG9tZXIgbWFuYWdlZCBDTUssIHBsZWFzZSByZWZlciB0byBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIG5lZWRlZC4gKi9cbiAgICBwdWJsaWMgQW1hem9uVGltZXN0cmVhbUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVGltZXN0cmVhbUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBjcmVhdGUsIHVwZGF0ZSwgZGVsZXRlIGFuZCBsaXN0IEFtYXpvbiBUaW1lc3RyZWFtIEluZmx1eERCIGluc3RhbmNlcyBhbmQgY3JlYXRlIGFuZCBsaXN0IHBhcmFtZXRlciBncm91cHMuIFBsZWFzZSByZWZlciB0byBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIG5lZWRlZC4gKi9cbiAgICBwdWJsaWMgQW1hem9uVGltZXN0cmVhbUluZmx1eERCRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25UaW1lc3RyZWFtSW5mbHV4REJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIG1hbmFnZSBBbWF6b24gVGltZXN0cmVhbSBJbmZsdXhEQiBpbnN0YW5jZXMgYW5kIHBhcmFtZXRlciBncm91cHMgZXhjZXB0IG1hcmtldHBsYWNlIG9wZXJhdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvblRpbWVzdHJlYW1JbmZsdXhEQkZ1bGxBY2Nlc3NXaXRob3V0TWFya2V0cGxhY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVGltZXN0cmVhbUluZmx1eERCRnVsbEFjY2Vzc1dpdGhvdXRNYXJrZXRwbGFjZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIGNyZWF0ZSwgdXBkYXRlLCBkZWxldGUgYW5kIGxpc3QgQW1hem9uIFRpbWVzdHJlYW0gSW5mbHV4REIgaW5zdGFuY2VzIGFuZCBjcmVhdGUgYW5kIGxpc3QgcGFyYW1ldGVyIGdyb3Vwcy4gUGxlYXNlIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gZm9yIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbmVlZGVkLiAqL1xuICAgIHB1YmxpYyBBbWF6b25UaW1lc3RyZWFtSW5mbHV4REJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25UaW1lc3RyZWFtSW5mbHV4REJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFRpbWVzdHJlYW0uIFBvbGljeSBhbHNvIHByb3ZpZGVzIHBlcm1pc3Npb24gdG8gY2FuY2VsIGFueSBydW5uaW5nIHF1ZXJ5LiBJZiB1c2luZyBDdXN0b21lciBtYW5hZ2VkIENNSywgcGxlYXNlIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gZm9yIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbmVlZGVkLiAqL1xuICAgIHB1YmxpYyBBbWF6b25UaW1lc3RyZWFtUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVGltZXN0cmVhbVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFRyYW5zY3JpYmUgb3BlcmF0aW9ucyAqL1xuICAgIHB1YmxpYyBBbWF6b25UcmFuc2NyaWJlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25UcmFuc2NyaWJlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byByZWFkIG9ubHkgb3BlcmF0aW9uIGZvciBBbWF6b24gVHJhbnNjcmliZSAqL1xuICAgIHB1YmxpYyBBbWF6b25UcmFuc2NyaWJlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVHJhbnNjcmliZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gVmVyaWZpZWQgUGVybWlzc2lvbnMgKi9cbiAgICBwdWJsaWMgQW1hem9uVmVyaWZpZWRQZXJtaXNzaW9uc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVmVyaWZpZWRQZXJtaXNzaW9uc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBWZXJpZmllZCBQZXJtaXNzaW9ucyBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25WZXJpZmllZFBlcm1pc3Npb25zUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVmVyaWZpZWRQZXJtaXNzaW9uc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIGNyZWF0ZSBuZXR3b3JrIGludGVyZmFjZXMgYW5kIGF0dGFjaCB0aGVtIHRvIGNyb3NzLWFjY291bnQgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFtYXpvblZQQ0Nyb3NzQWNjb3VudE5ldHdvcmtJbnRlcmZhY2VPcGVyYXRpb25zKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblZQQ0Nyb3NzQWNjb3VudE5ldHdvcmtJbnRlcmZhY2VPcGVyYXRpb25zKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFZQQyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblZQQ0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVlBDRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGRlc2NyaWJlIEFXUyByZXNvdXJjZXMsIHJ1biBOZXR3b3JrIEFjY2VzcyBBbmFseXplciwgYW5kIGNyZWF0ZSBvciBkZWxldGUgdGFncyBvbiBOZXR3b3JrIEluc2lnaHRzIEFjY2VzcyBTY29wZSBhbmQgTmV0d29yayBJbnNpZ2h0cyBBY2Nlc3MgU2NvcGUgQW5hbHlzaXMuICovXG4gICAgcHVibGljIEFtYXpvblZQQ05ldHdvcmtBY2Nlc3NBbmFseXplckZ1bGxBY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVlBDTmV0d29ya0FjY2Vzc0FuYWx5emVyRnVsbEFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGRlc2NyaWJlIEFXUyByZXNvdXJjZXMsIHJ1biBSZWFjaGFiaWxpdHkgQW5hbHl6ZXIsIGFuZCBjcmVhdGUgb3IgZGVsZXRlIHRhZ3Mgb24gTmV0d29yayBJbnNpZ2h0cyBQYXRoIGFuZCBOZXR3b3JrIEluc2lnaHRzIEFuYWx5c2lzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25WUENSZWFjaGFiaWxpdHlBbmFseXplckZ1bGxBY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVlBDUmVhY2hhYmlsaXR5QW5hbHl6ZXJGdWxsQWNjZXNzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgdG8gdGhlIHJvbGUgSUFNUm9sZUZvclJlYWNoYWJpbGl0eUFuYWx5emVyQ3Jvc3NBY2NvdW50UmVzb3VyY2VBY2Nlc3MuIFRoaXMgcm9sZSBpcyBkZXBsb3llZCB0byB0aGUgbWVtYmVyIGFjY291bnRzIGluIGFuIG9yZ2FuaXphdGlvbiB3aGVuIHRoZSBtYW5hZ2VtZW50IGFjY291bnQgZW5hYmxlcyB0cnVzdGVkIGFjY2VzcyBmb3IgUmVhY2hhYmlsaXR5IEFuYWx5emVyLiBJdCBwcm92aWRlcyBwZXJtaXNzaW9ucyB0byB2aWV3IHJlc291cmNlcyBmcm9tIGFjcm9zcyB5b3VyIG9yZ2FuaXphdGlvbiB1c2luZyB0aGUgUmVhY2hhYmlsaXR5IEFuYWx5emVyIGNvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblZQQ1JlYWNoYWJpbGl0eUFuYWx5emVyUGF0aENvbXBvbmVudFJlYWRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVlBDUmVhY2hhYmlsaXR5QW5hbHl6ZXJQYXRoQ29tcG9uZW50UmVhZFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFZQQyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblZQQ1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblZQQ1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFdvcmtEb2NzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrRG9jc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya0RvY3NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gV29ya0RvY3MgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlICovXG4gICAgcHVibGljIEFtYXpvbldvcmtEb2NzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya0RvY3NSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBbWF6b24gV29ya01haWwgRXZlbnRzICovXG4gICAgcHVibGljIEFtYXpvbldvcmtNYWlsRXZlbnRzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya01haWxFdmVudHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIFdvcmtNYWlsLCBEaXJlY3RvcnkgU2VydmljZSwgU0VTLCBFQzIgYW5kIHJlYWQgYWNjZXNzIHRvIEtNUyBtZXRhZGF0YS4gKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya01haWxGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtNYWlsRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bGwgYWNjZXNzIHRvIHRoZSBXb3JrTWFpbCBNZXNzYWdlIEZsb3cgQVBJcyAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrTWFpbE1lc3NhZ2VGbG93RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrTWFpbE1lc3NhZ2VGbG93RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFJlYWQgb25seSBhY2Nlc3MgdG8gV29ya01haWwgbWVzc2FnZXMgZm9yIHRoZSBHZXRSYXdNZXNzYWdlQ29udGVudCBBUEkgKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya01haWxNZXNzYWdlRmxvd1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtNYWlsTWVzc2FnZUZsb3dSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gV29ya01haWwgYW5kIFNFUy4gKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya01haWxSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrTWFpbFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFtYXpvbiBXb3JrU3BhY2VzIGFkbWluaXN0cmF0aXZlIGFjdGlvbnMgdmlhIEFXUyBTREsgYW5kIENMSS4gKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya1NwYWNlc0FkbWluKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNBZG1pbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0b3IgYWNjZXNzIGZvciBwYWNrYWdpbmcgYW4gYXBwbGljYXRpb24gaW4gQW1hem9uIFdvcmtTcGFjZXMgQXBwbGljYXRpb24gTWFuYWdlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya1NwYWNlc0FwcGxpY2F0aW9uTWFuYWdlckFkbWluQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNBcHBsaWNhdGlvbk1hbmFnZXJBZG1pbkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgbWFuYWdlZCBwb2xpY3kgcHJvdmlkZXMgZnVsbCBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgUHJpdmF0ZSBDQSByZXNvdXJjZXMgaW4geW91ciBBV1MgYWNjb3VudCBmb3IgY2VydGlmaWNhdGUtYmFzZWQgYXV0aGVudGljYXRpb24uICovXG4gICAgcHVibGljIEFtYXpvbldvcmtzcGFjZXNQQ0FBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya3NwYWNlc1BDQUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIEFXUyBXb3JrU3BhY2VzIHNlcnZpY2UgYWNjZXNzIHRvIHJlcXVpcmVkIGN1c3RvbWVyIGFjY291bnQgcmVzb3VyY2VzIGZvciBsYXVuY2hpbmcgV29ya3NwYWNlcyBQb29scyAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrU3BhY2VzUG9vbFNlcnZpY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya1NwYWNlc1Bvb2xTZXJ2aWNlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gV29ya1NwYWNlcyBTZWN1cmUgQnJvd3NlciBhbmQgaXRzIGRlcGVuZGVuY2llcyB0aHJvdWdoIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLCBTREssIGFuZCBDTEkuICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNTZWN1cmVCcm93c2VyUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya1NwYWNlc1NlY3VyZUJyb3dzZXJSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBbWF6b24gV29ya1NwYWNlcyBiYWNrZW5kIHNlcnZpY2UgdG8gcGVyZm9ybSBXb3Jrc3BhY2UgU2VsZiBTZXJ2aWNlIGFjdGlvbnMgKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya1NwYWNlc1NlbGZTZXJ2aWNlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNTZWxmU2VydmljZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGN1c3RvbWVyIGFjY291bnQgYWNjZXNzIHRvIEFXUyBXb3JrU3BhY2VzIHNlcnZpY2UgZm9yIGxhdW5jaGluZyBhIFdvcmtzcGFjZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya1NwYWNlc1NlcnZpY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya1NwYWNlc1NlcnZpY2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gV29ya1NwYWNlcyBUaGluIENsaWVudCBhcyB3ZWxsIGFzIGxpbWl0ZWQgYWNjZXNzIHRvIHJlcXVpcmVkIHJlbGF0ZWQgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya1NwYWNlc1RoaW5DbGllbnRGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNUaGluQ2xpZW50RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBbWF6b24gV29ya1NwYWNlcyBUaGluIENsaWVudCBNb25pdG9yaW5nICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNUaGluQ2xpZW50TW9uaXRvcmluZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNUaGluQ2xpZW50TW9uaXRvcmluZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gV29ya1NwYWNlcyBUaGluIENsaWVudCBhbmQgaXRzIGRlcGVuZGVuY2llcyAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrU3BhY2VzVGhpbkNsaWVudFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNUaGluQ2xpZW50UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBXb3JrU3BhY2VzIFdlYiBhbmQgaXRzIGRlcGVuZGVuY2llcyB0aHJvdWdoIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLCBTREssIGFuZCBDTEkuICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNXZWJSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrU3BhY2VzV2ViUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIFdvcmtTcGFjZXMgV2ViICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNXZWJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrU3BhY2VzV2ViU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gWm9jYWxvLiAqL1xuICAgIHB1YmxpYyBBbWF6b25ab2NhbG9GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblpvY2Fsb0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBab2NhbG8gKi9cbiAgICBwdWJsaWMgQW1hem9uWm9jYWxvUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uWm9jYWxvUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBbXBsaWZ5IGZ1bGwgYWNjZXNzIHBlcm1pc3Npb25zIHRvIGRlcGxveSBBbXBsaWZ5IGJhY2tlbmQgcmVzb3VyY2VzIChBV1MgQXBwU3luYywgQW1hem9uIENvZ25pdG8sIEFtYXpvbiBTMyBhbmQgb3RoZXIgcmVsYXRlZCBzZXJ2aWNlcykgdmlhIHRoZSBBV1MgQ2xvdWQgRGV2ZWxvcG1lbnQgS2l0IChBV1MgQ0RLKSAqL1xuICAgIHB1YmxpYyBBbXBsaWZ5QmFja2VuZERlcGxveUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1wbGlmeUJhY2tlbmREZXBsb3lGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFQSSBHYXRld2F5IHRvIG1hbmFnZSBhc3NvY2lhdGVkIEFXUyBSZXNvdXJjZXMgb24gYmVoYWxmIG9mIHRoZSBjdXN0b21lci4gKi9cbiAgICBwdWJsaWMgQVBJR2F0ZXdheVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFQSUdhdGV3YXlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBcHBJbnRlZ3JhdGlvbnMgdG8gbWFuYWdlIEFwcEZsb3cgcmVzb3VyY2VzIGFuZCBwdWJsaXNoIENsb3VkV2F0Y2ggbWV0cmljIGRhdGEgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFwcEludGVncmF0aW9uc1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFwcEludGVncmF0aW9uc1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGVuYWJsZSBBcHBsaWNhdGlvbiBBdXRvc2NhbGluZyBmb3IgQW1hem9uIEFwcFN0cmVhbSAqL1xuICAgIHB1YmxpYyBBcHBsaWNhdGlvbkF1dG9TY2FsaW5nRm9yQW1hem9uQXBwU3RyZWFtQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFwcGxpY2F0aW9uQXV0b1NjYWxpbmdGb3JBbWF6b25BcHBTdHJlYW1BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQXBwbGljYXRpb24gRGlzY292ZXJ5IFNlcnZpY2UgQ29udGludW91cyBFeHBvcnQgZmVhdHVyZSAqL1xuICAgIHB1YmxpYyBBcHBsaWNhdGlvbkRpc2NvdmVyeVNlcnZpY2VDb250aW51b3VzRXhwb3J0U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXBwbGljYXRpb25EaXNjb3ZlcnlTZXJ2aWNlQ29udGludW91c0V4cG9ydFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBBcHBSdW5uZXIgTmV0d29ya2luZyB0byBtYW5hZ2UgcmVsYXRlZCBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBcHBSdW5uZXJOZXR3b3JraW5nU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXBwUnVubmVyTmV0d29ya2luZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBBcHBSdW5uZXIgdG8gbWFuYWdlIHJlbGF0ZWQgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQXBwUnVubmVyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXBwUnVubmVyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQXBwU3R1ZGlvIHRvIG1hbmFnZSBhc3NvY2lhdGVkIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFwcFN0dWRpb1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFwcFN0dWRpb1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBbWF6b24gQXVyb3JhIERTUUwgU2VydmljZSBMaW5rZWQgUm9sZSAqL1xuICAgIHB1YmxpYyBBdXJvcmFEc3FsU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXVyb3JhRHNxbFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQXV0byBTY2FsaW5nIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQXV0b1NjYWxpbmdDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BdXRvU2NhbGluZ0NvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBdXRvIFNjYWxpbmcgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBdXRvU2NhbGluZ0NvbnNvbGVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BdXRvU2NhbGluZ0NvbnNvbGVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEF1dG8gU2NhbGluZy4gKi9cbiAgICBwdWJsaWMgQXV0b1NjYWxpbmdGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkF1dG9TY2FsaW5nRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciB0aGUgQXV0b1NjYWxpbmcgTm90aWZpY2F0aW9uIEFjY2VzcyBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEF1dG9TY2FsaW5nTm90aWZpY2F0aW9uQWNjZXNzUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BdXRvU2NhbGluZ05vdGlmaWNhdGlvbkFjY2Vzc1JvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEF1dG8gU2NhbGluZy4gKi9cbiAgICBwdWJsaWMgQXV0b1NjYWxpbmdSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BdXRvU2NhbGluZ1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEF1dG8gU2NhbGluZyAqL1xuICAgIHB1YmxpYyBBdXRvU2NhbGluZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkF1dG9TY2FsaW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgQVdTIENvbmZpZyBzZXJ2aWNlIHJvbGUuIFByb3ZpZGVzIHBlcm1pc3Npb25zIHJlcXVpcmVkIGZvciBBV1MgQ29uZmlnIHRvIHRyYWNrIGNoYW5nZXMgdG8geW91ciBBV1MgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDb25maWdSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbmZpZ1JvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgdGhlIFNTTSBEaWFnbm9zaXMgUzMgYnVja2V0IGZvciBkaWFnbm9zaXMgYW5kIHJlbWVkaWF0aW9uIG9mIGlzc3Vlcy4gKi9cbiAgICBwdWJsaWMgQVdTU1NNQXV0b21hdGlvbkRpYWdub3Npc0J1Y2tldFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU01BdXRvbWF0aW9uRGlhZ25vc2lzQnVja2V0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBwZXJtaXNzaW9uIGZvciBEaWFnbm9zaW5nIGlzc3VlcyB3aXRoIFNTTSBzZXJ2aWNlcyBieSBleGVjdXRpbmcgYWN0aXZpdGllcyBkZWZpbmVkIHdpdGhpbiBBdXRvbWF0aW9uIERvY3VtZW50cywgcHJpbWFyaWx5IHVzZWQgZm9yIHJ1bm5pbmcgdGhlIEF1dG9tYXRpb24gZG9jdW1lbnRzIGluIGEgY3Jvc3MtYWNjb3VudCBjcm9zcy1yZWdpb24gc2V0dXAgYnkgdHJpZ2dlcmluZyBjaGlsZCBhdXRvbWF0aW9ucyB3aXRoaW4gbWVtYmVyIGFjY291bnRzLiAqL1xuICAgIHB1YmxpYyBBV1NTU01EaWFnbm9zaXNBdXRvbWF0aW9uQWRtaW5pc3RyYXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTTURpYWdub3Npc0F1dG9tYXRpb25BZG1pbmlzdHJhdGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHBlcm1pc3Npb24gZm9yIERpYWdub3NpbmcgaXNzdWVzIHdpdGggU1NNIHNlcnZpY2VzIGJ5IGV4ZWN1dGluZyBhY3Rpdml0aWVzIGRlZmluZWQgd2l0aGluIEF1dG9tYXRpb24gRG9jdW1lbnRzLCBwcmltYXJpbHkgdXNlZCBmb3IgcnVubmluZyB0aGUgQXV0b21hdGlvbiBkb2N1bWVudHMgaW4gYSB0YXJnZXQgYWNjb3VudC9yZWdpb24gc2V0dXAgYnkgZGlhZ25vc2luZyBTU00gc2VydmljZSBoZWFsdGggYWNyb3NzIGFsbCBub2Rlcy4gKi9cbiAgICBwdWJsaWMgQVdTU1NNRGlhZ25vc2lzQXV0b21hdGlvbkV4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NNRGlhZ25vc2lzQXV0b21hdGlvbkV4ZWN1dGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyBmb3Igb3BlcmF0aW9uYWwgYWNjb3VudHMgdG8gZGlhZ25vc2UgdW5tYW5hZ2VkIG5vZGVzIGJ5IHByb3ZpZGluZyBPcmdhbmlzYXRpb24gc3BlY2lmaWMgcGVybWlzc2lvbnMgcmVxdWlyZWQgYnkgU1NNIGF1dG9tYXRpb24gdG8gcHVsbCB0aGUgbGlzdCBvZiBtZW1iZXIgYWNjb3VudHMgd2l0aGluIGEgcm9vdCBvZiBhbiBPcmdhbmlzYXRpb24gdG8gdHJpZ2dlciBjcm9zcy1hY2NvdW50IGNyb3NzLXJlZ2lvbiBleGVjdXRpb24gYnkgYWxsb3dpbmcgYXNzdW1pbmcgRXhlY3V0aW9uIHJvbGVzIGluIHRhcmdldCBhY2NvdW50L3JlZ2lvbi4gKi9cbiAgICBwdWJsaWMgQVdTU1NNRGlhZ25vc2lzQXV0b21hdGlvbk9wZXJhdGlvbmFsQWNjb3VudEFkbWluaXN0cmF0aW9uUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU01EaWFnbm9zaXNBdXRvbWF0aW9uT3BlcmF0aW9uYWxBY2NvdW50QWRtaW5pc3RyYXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBwZXJtaXNzaW9uIGZvciBSZW1lZGlhdGluZyBpc3N1ZXMgd2l0aCBTU00gc2VydmljZXMgYnkgZXhlY3V0aW5nIGFjdGl2aXRpZXMgZGVmaW5lZCB3aXRoaW4gQXV0b21hdGlvbiBEb2N1bWVudHMsIHByaW1hcmlseSB1c2VkIGZvciBydW5uaW5nIHRoZSBBdXRvbWF0aW9uIGRvY3VtZW50cyBpbiBhIGNyb3NzLWFjY291bnQgY3Jvc3MtcmVnaW9uIHNldHVwIGJ5IHRyaWdnZXJpbmcgY2hpbGQgYXV0b21hdGlvbnMgd2l0aGluIG1lbWJlciBhY2NvdW50cy4gKi9cbiAgICBwdWJsaWMgQVdTU1NNUmVtZWRpYXRpb25BdXRvbWF0aW9uQWRtaW5pc3RyYXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTTVJlbWVkaWF0aW9uQXV0b21hdGlvbkFkbWluaXN0cmF0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciBSZW1lZGlhdGluZyBpc3N1ZXMgd2l0aCBTU00gc2VydmljZXMgYnkgZXhlY3V0aW5nIGFjdGl2aXRpZXMgZGVmaW5lZCB3aXRoaW4gQXV0b21hdGlvbiBEb2N1bWVudHMsIHByaW1hcmlseSB1c2VkIGZvciBydW5uaW5nIHRoZSBBdXRvbWF0aW9uIGRvY3VtZW50cyBpbiBhIHRhcmdldCBhY2NvdW50L3JlZ2lvbiBzZXR1cCBieSByZW1lZGlhdGluZyBTU00gc2VydmljZXMgaGVhbHRoIGFjcm9zcyBhbGwgbm9kZXMuICovXG4gICAgcHVibGljIEFXU1NTTVJlbWVkaWF0aW9uQXV0b21hdGlvbkV4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NNUmVtZWRpYXRpb25BdXRvbWF0aW9uRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciBvcGVyYXRpb25hbCBhY2NvdW50cyB0byBSZW1lZGlhdGUgdW5tYW5hZ2VkIG5vZGVzIGJ5IHByb3ZpZGluZyBPcmdhbmlzYXRpb24gc3BlY2lmaWMgcGVybWlzc2lvbnMgcmVxdWlyZWQgYnkgU1NNIGF1dG9tYXRpb24gdG8gcHVsbCB0aGUgbGlzdCBvZiBtZW1iZXIgYWNjb3VudHMgd2l0aGluIGEgcm9vdCBvZiBhbiBPcmdhbmlzYXRpb24gdG8gdHJpZ2dlciBjcm9zcy1hY2NvdW50IGNyb3NzLXJlZ2lvbiBleGVjdXRpb24gYnkgYWxsb3dpbmcgYXNzdW1pbmcgRXhlY3V0aW9uIHJvbGVzIGluIHRhcmdldCBhY2NvdW50L3JlZ2lvbi4gKi9cbiAgICBwdWJsaWMgQVdTU1NNUmVtZWRpYXRpb25BdXRvbWF0aW9uT3BlcmF0aW9uYWxBY2NvdW50QWRtaW5pc3RyYXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTTVJlbWVkaWF0aW9uQXV0b21hdGlvbk9wZXJhdGlvbmFsQWNjb3VudEFkbWluaXN0cmF0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB1c2VycyB0byBhY2Nlc3MgdGhlIEFjY291bnQgQWN0aXZpdHkgcGFnZS4gKi9cbiAgICBwdWJsaWMgQVdTQWNjb3VudEFjdGl2aXR5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FjY291bnRBY3Rpdml0eUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBBY2NvdW50IE1hbmFnZW1lbnQuICovXG4gICAgcHVibGljIEFXU0FjY291bnRNYW5hZ2VtZW50RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBY2NvdW50TWFuYWdlbWVudEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFXUyBBY2NvdW50IE1hbmFnZW1lbnQgKi9cbiAgICBwdWJsaWMgQVdTQWNjb3VudE1hbmFnZW1lbnRSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBY2NvdW50TWFuYWdlbWVudFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHVzZXJzIHRvIGFjY2VzcyB0aGUgQWNjb3VudCBVc2FnZSBSZXBvcnQgcGFnZS4gKi9cbiAgICBwdWJsaWMgQVdTQWNjb3VudFVzYWdlUmVwb3J0QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FjY291bnRVc2FnZVJlcG9ydEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyBmb3IgdGhlIERpc2NvdmVyeSBBZ2VudGxlc3MgQ29ubmVjdG9yIHRvIHJlZ2lzdGVyIHdpdGggQVdTIEFwcGxpY2F0aW9uIERpc2NvdmVyeSBTZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NBZ2VudGxlc3NEaXNjb3ZlcnlTZXJ2aWNlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FnZW50bGVzc0Rpc2NvdmVyeVNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIEFwcEZhYnJpYyBzZXJ2aWNlIGFuZCByZWFkIG9ubHkgYWNjZXNzIHRvIGRlcGVuZGVudCBzZXJ2aWNlcyBzdWNoIGFzIFMzLCBLaW5lc2lzLCBLTVMuICovXG4gICAgcHVibGljIEFXU0FwcEZhYnJpY0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwRmFicmljRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gdGhlIEFXUyBBcHBGYWJyaWMgKi9cbiAgICBwdWJsaWMgQVdTQXBwRmFicmljUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwRmFicmljUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBcHBGYWJyaWMgYWNjZXNzIHRvIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQVdTQXBwRmFicmljU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwRmFicmljU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBBcHBTdHJlYW0gYW5kIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdBcHBTdHJlYW1GbGVldFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nQXBwU3RyZWFtRmxlZXRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBDYXNzYW5kcmEgYW5kIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdDYXNzYW5kcmFUYWJsZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nQ2Fzc2FuZHJhVGFibGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBDb21wcmVoZW5kIGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nQ29tcHJlaGVuZEVuZHBvaW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdDb21wcmVoZW5kRW5kcG9pbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBBUElHYXRld2F5IGFuZCBDbG91ZFdhdGNoIGZvciBjdXN0b20gcmVzb3VyY2Ugc2NhbGluZyAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9TY2FsaW5nQ3VzdG9tUmVzb3VyY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvU2NhbGluZ0N1c3RvbVJlc291cmNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgRHluYW1vREIgYW5kIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdEeW5hbW9EQlRhYmxlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdEeW5hbW9EQlRhYmxlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgRUMyIFNwb3QgRmxlZXQgYW5kIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdFQzJTcG90RmxlZXRSZXF1ZXN0UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdFQzJTcG90RmxlZXRSZXF1ZXN0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgRUMyIENvbnRhaW5lciBTZXJ2aWNlIGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRUNTU2VydmljZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRUNTU2VydmljZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIEFtYXpvbiBFbGFzdGlDYWNoZSBhbmQgQW1hem9uIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdFbGFzdGlDYWNoZVJHUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdFbGFzdGlDYWNoZVJHUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgRWxhc3RpYyBNYXAgUmVkdWNlIGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRU1SSW5zdGFuY2VHcm91cFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRU1SSW5zdGFuY2VHcm91cFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIE1hbmFnZWQgU3RyZWFtaW5nIGZvciBBcGFjaGUgS2Fma2EgYW5kIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdLYWZrYUNsdXN0ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0thZmthQ2x1c3RlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIExhbWJkYSBhbmQgQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0xhbWJkYUNvbmN1cnJlbmN5UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdMYW1iZGFDb25jdXJyZW5jeVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIEFtYXpvbiBOZXB0dW5lIGFuZCBBbWF6b24gQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ05lcHR1bmVDbHVzdGVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdOZXB0dW5lQ2x1c3RlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIFJEUyBhbmQgQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ1JEU0NsdXN0ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ1JEU0NsdXN0ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBTYWdlTWFrZXIgYW5kIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdTYWdlTWFrZXJFbmRwb2ludFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nU2FnZU1ha2VyRW5kcG9pbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBBbWF6b24gV29ya1NwYWNlcyBhbmQgQW1hem9uIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdXb3JrU3BhY2VzUG9vbFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nV29ya1NwYWNlc1Bvb2xQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgZm9yIHRoZSBEaXNjb3ZlcnkgQWdlbnQgdG8gcmVnaXN0ZXIgd2l0aCBBV1MgQXBwbGljYXRpb24gRGlzY292ZXJ5IFNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uRGlzY292ZXJ5QWdlbnRBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25EaXNjb3ZlcnlBZ2VudEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBcHBsaWNhdGlvbiBEaXNjb3ZlcnkgU2VydmljZSBBZ2VudGxlc3MgQ29sbGVjdG9ycyB0byBhdXRvIHVwZGF0ZSwgcmVnaXN0ZXIsIGFuZCBjb21tdW5pY2F0ZSB3aXRoIEFwcGxpY2F0aW9uIERpc2NvdmVyeSBTZXJ2aWNlICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uRGlzY292ZXJ5QWdlbnRsZXNzQ29sbGVjdG9yQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uRGlzY292ZXJ5QWdlbnRsZXNzQ29sbGVjdG9yQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gdmlldyBhbmQgdGFnIENvbmZpZ3VyYXRpb24gSXRlbXMgbWFpbnRhaW5lZCBieSB0aGUgQVdTIEFwcGxpY2F0aW9uIERpc2NvdmVyeSBTZXJ2aWNlICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uRGlzY292ZXJ5U2VydmljZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25EaXNjb3ZlcnlTZXJ2aWNlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBpbnN0YWxsaW5nIHRoZSBBV1MgUmVwbGljYXRpb24gQWdlbnQsIHdoaWNoIGlzIHVzZWQgd2l0aCBBV1MgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgKE1HTikgdG8gbWlncmF0ZSBleHRlcm5hbCBzZXJ2ZXJzIHRvIEFXUy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzIHdob3NlIGNyZWRlbnRpYWxzIHlvdSBwcm92aWRlIHdoZW4gaW5zdGFsbGluZyB0aGUgQVdTIFJlcGxpY2F0aW9uIEFnZW50LiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkFnZW50SW5zdGFsbGF0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uTWlncmF0aW9uQWdlbnRJbnN0YWxsYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgaW5zdGFsbGluZyBhbmQgdXNpbmcgdGhlIEFXUyBSZXBsaWNhdGlvbiBBZ2VudCwgd2hpY2ggaXMgdXNlZCB3aXRoIEFXUyBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSAoTUdOKSB0byBtaWdyYXRlIGV4dGVybmFsIHNlcnZlcnMgdG8gQVdTLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMgd2hvc2UgY3JlZGVudGlhbHMgeW91IHByb3ZpZGUgd2hlbiBpbnN0YWxsaW5nIHRoZSBBV1MgUmVwbGljYXRpb24gQWdlbnQuICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uTWlncmF0aW9uQWdlbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25BZ2VudFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyB1c2luZyB0aGUgQVdTIFJlcGxpY2F0aW9uIEFnZW50LCB3aGljaCBpcyB1c2VkIHdpdGggQVdTIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChNR04pIHRvIG1pZ3JhdGUgZXh0ZXJuYWwgc2VydmVycyB0byBBV1MuIFdlIGRvIG5vdCByZWNvbW1lbmQgdGhhdCB5b3UgYXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkFnZW50UG9saWN5VjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25BZ2VudFBvbGljeVYyKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIHRoZSBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSAoTUdOKSBDb252ZXJzaW9uIFNlcnZlciwgd2hpY2ggYXJlIEVDMiBpbnN0YW5jZXMgbGF1bmNoZWQgYnkgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UsIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIE1HTiBzZXJ2aWNlLiBBbiBJQU0gcm9sZSB3aXRoIHRoaXMgcG9saWN5IGlzIGF0dGFjaGVkIChhcyBhbiBFQzIgSW5zdGFuY2UgUHJvZmlsZSkgYnkgTUdOIHRvIHRoZSBNR04gQ29udmVyc2lvbiBTZXJ2ZXJzLCB3aGljaCBhcmUgYXV0b21hdGljYWxseSBsYXVuY2hlZCBhbmQgdGVybWluYXRlZCBieSBNR04sIHdoZW4gbmVlZGVkLiBXZSBkbyBub3QgcmVjb21tZW5kIHRoYXQgeW91IGF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gTUdOIENvbnZlcnNpb24gU2VydmVycyBhcmUgdXNlZCBieSBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSB3aGVuIHVzZXJzIGNob29zZSB0byBsYXVuY2ggVGVzdCBvciBDdXRvdmVyIGluc3RhbmNlcyB1c2luZyB0aGUgTUdOIGNvbnNvbGUsIENMSSwgb3IgQVBJLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkNvbnZlcnNpb25TZXJ2ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25Db252ZXJzaW9uU2VydmVyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgQW1hem9uIEVDMiBvcGVyYXRpb25zIHJlcXVpcmVkIHRvIHVzZSBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSAoTUdOKSB0byBsYXVuY2ggdGhlIG1pZ3JhdGVkIHNlcnZlcnMgYXMgRUMyIGluc3RhbmNlcy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkVDMkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkVDMkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGFsbCBwdWJsaWMgQVBJcyBvZiBBV1MgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgKE1HTiksIGFzIHdlbGwgYXMgcGVybWlzc2lvbnMgdG8gcmVhZCBLTVMga2V5IGluZm9ybWF0aW9uLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uTWlncmF0aW9uRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgQVdTIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChNR04pIHRvIHNlbmQgbWV0YS1kYXRhIGFib3V0IHRoZSBwcm9ncmVzcyBvZiBzZXJ2ZXJzIGJlaW5nIG1pZ3JhdGVkIHVzaW5nIE1HTiB0byBBV1MgTWlncmF0aW9uIEh1YiAoTUdIKS4gTUdOIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhbiBJQU0gcm9sZSB3aXRoIHRoaXMgcG9saWN5IGF0dGFjaGVkLCBhbmQgYXNzdW1lcyB0aGlzIHJvbGUuIFdlIGRvIG5vdCByZWNvbW1lbmQgdGhhdCB5b3UgYXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbk1HSEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbk1HSEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGFsbCByZWFkLW9ubHkgcHVibGljIEFQSXMgb2YgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgKE1HTiksIGFzIHdlbGwgYXMgc29tZSByZWFkLW9ubHkgQVBJcyBvZiBvdGhlciBBV1Mgc2VydmljZXMgdGhhdCBhcmUgcmVxdWlyZWQgaW4gb3JkZXIgdG8gbWFrZSBmdWxsIHJlYWQtb25seSB1c2Ugb2YgdGhlIE1HTiBjb25zb2xlLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uTWlncmF0aW9uUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyB0aGUgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgKE1HTikgUmVwbGljYXRpb24gU2VydmVycywgd2hpY2ggYXJlIEVDMiBpbnN0YW5jZXMgbGF1bmNoZWQgYnkgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgLSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBNR04gc2VydmljZSwgYW5kIHRvIGNyZWF0ZSBFQlMgc25hcHNob3RzIGluIHlvdXIgQVdTIGFjY291bnQuIEFuIElBTSByb2xlIHdpdGggdGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgKGFzIGFuIEVDMiBJbnN0YW5jZSBQcm9maWxlKSBieSBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSB0byB0aGUgTUdOIFJlcGxpY2F0aW9uIFNlcnZlcnMgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgbGF1bmNoZWQgYW5kIHRlcm1pbmF0ZWQgYnkgTUdOLCBhcyBuZWVkZWQuIE1HTiBSZXBsaWNhdGlvbiBTZXJ2ZXJzIGFyZSB1c2VkIHRvIGZhY2lsaXRhdGUgZGF0YSByZXBsaWNhdGlvbiBmcm9tIHlvdXIgZXh0ZXJuYWwgc2VydmVycyB0byBBV1MsIGFzIHBhcnQgb2YgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIG1hbmFnZWQgdXNpbmcgTUdOLiBXZSBkbyBub3QgcmVjb21tZW5kIHRoYXQgeW91IGF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25SZXBsaWNhdGlvblNlcnZlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbk1pZ3JhdGlvblJlcGxpY2F0aW9uU2VydmVyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIGluc3RhbGxpbmcgYW5kIHVzaW5nIHRoZSBBV1MgUmVwbGljYXRpb24gQWdlbnQsIHdoaWNoIGlzIHVzZWQgYnkgQVdTIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChBV1MgTUdOKSB0byBtaWdyYXRlIHNvdXJjZSBzZXJ2ZXJzIHRoYXQgcnVuIG9uIEVDMiAoY3Jvc3MtUmVnaW9uIG9yIGNyb3NzLUFaKS4gQW4gSUFNIHJvbGUgd2l0aCB0aGlzIHBvbGljeSBzaG91bGQgYmUgYXR0YWNoZWQgKGFzIGFuIEVDMiBJbnN0YW5jZSBQcm9maWxlKSB0byB0aGUgRUMyIEluc3RhbmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25TZXJ2aWNlRWMySW5zdGFuY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25TZXJ2aWNlRWMySW5zdGFuY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIGFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uTWlncmF0aW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIGFjY2VzcyB0byBBbWF6b24gU1NNIG9wZXJhdGlvbnMgcmVxdWlyZWQgdG8gdXNlIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChNR04pIHRvIGV4ZWN1dGUgY3VzdG9tIHBvc3QgbWlncmF0aW9uIGNvbW1hbmQgU1NNIGRvY3VtZW50cy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvblNTTUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbk1pZ3JhdGlvblNTTUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBpbnN0YWxsaW5nIGFuZCB1c2luZyB0aGUgQVdTIFZDZW50ZXIgQ2xpZW50LCB3aGljaCBpcyB1c2VkIHdpdGggQVdTIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChNR04pIHRvIG1pZ3JhdGUgZXh0ZXJuYWwgc2VydmVycyB0byBBV1MuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcyB3aG9zZSBjcmVkZW50aWFscyB5b3UgcHJvdmlkZSB3aGVuIGluc3RhbGxpbmcgdGhlIEFXUyBWQ2VudGVyIENsaWVudC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25WQ2VudGVyQ2xpZW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uTWlncmF0aW9uVkNlbnRlckNsaWVudFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFwcCBNZXNoIEVudm95IHBvbGljeSBmb3IgYWNjZXNzaW5nIFZpcnR1YWwgTm9kZSBjb25maWd1cmF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBNZXNoRW52b3lBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwTWVzaEVudm95QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFXUyBBcHAgTWVzaCBBUElzIGFuZCBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0FwcE1lc2hGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcE1lc2hGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQXBwIE1lc2ggUHJldmlldyBFbnZveSBwb2xpY3kgZm9yIGFjY2Vzc2luZyBWaXJ0dWFsIE5vZGUgY29uZmlndXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTQXBwTWVzaFByZXZpZXdFbnZveUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBNZXNoUHJldmlld0Vudm95QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFXUyBBcHAgTWVzaCAqL1xuICAgIHB1YmxpYyBBV1NBcHBNZXNoUHJldmlld1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcE1lc2hQcmV2aWV3U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBBV1MgQXBwIE1lc2ggQVBJcyBhbmQgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBNZXNoUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwTWVzaFJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFXUyBBcHBNZXNoICovXG4gICAgcHVibGljIEFXU0FwcE1lc2hTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBNZXNoU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYWxsIEFwcCBSdW5uZXIgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTQXBwUnVubmVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBSdW5uZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIGxpc3QgYW5kIHZpZXcgZGV0YWlscyBhYm91dCBBcHAgUnVubmVyIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTQXBwUnVubmVyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwUnVubmVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgQXBwIFJ1bm5lciBzZXJ2aWNlIHBvbGljeSB0aGF0IGdyYW50cyByZWFkIHBlcm1pc3Npb25zIHRvIEFtYXpvbiBFQ1IgcmVzb3VyY2VzIGluIHRoZSBjdXN0b21lcidzIGFjY291bnQuIFVzZSBpdCBpbiBhIHJvbGUgdGhhdCBpcyBwYXNzZWQgdG8gQXBwIFJ1bm5lciB3aGVuIGNyZWF0aW5nIG9yIHVwZGF0aW5nIGFuIEFwcCBSdW5uZXIgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTQXBwUnVubmVyU2VydmljZVBvbGljeUZvckVDUkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBSdW5uZXJTZXJ2aWNlUG9saWN5Rm9yRUNSQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIHRoZSBBcHBTeW5jIHNlcnZpY2UsIHRob3VnaCBub3QgZW5vdWdoIHRvIGFjY2VzcyB2aWEgdGhlIGNvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0FwcFN5bmNBZG1pbmlzdHJhdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcFN5bmNBZG1pbmlzdHJhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBpbnZva2luZyBhY2Nlc3MgdG8gdGhlIEFwcFN5bmMgc2VydmljZSAtIGJvdGggdGhyb3VnaCB0aGUgY29uc29sZSBhbmQgaW5kZXBlbmRlbnRseSAqL1xuICAgIHB1YmxpYyBBV1NBcHBTeW5jSW52b2tlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBTeW5jSW52b2tlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBcHBTeW5jIHRvIHB1c2ggbG9ncyB0byB1c2VyJ3MgQ2xvdWRXYXRjaCBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBBV1NBcHBTeW5jUHVzaFRvQ2xvdWRXYXRjaExvZ3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwU3luY1B1c2hUb0Nsb3VkV2F0Y2hMb2dzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIGNyZWF0ZSwgdXBkYXRlLCBhbmQgcXVlcnkgdGhlIHNjaGVtYS4gKi9cbiAgICBwdWJsaWMgQVdTQXBwU3luY1NjaGVtYUF1dGhvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBTeW5jU2NoZW1hQXV0aG9yKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIHNlcnZpY2VzIGFuZCByZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFwcFN5bmMgKi9cbiAgICBwdWJsaWMgQVdTQXBwU3luY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcFN5bmNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgQXJ0aWZhY3QgcmVhZC1vbmx5IGFjY2VzcyB0byBvcGVyYXRpb25zIGluIEFXUyBPcmdhbml6YXRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NBcnRpZmFjdEFjY291bnRTeW5jKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FydGlmYWN0QWNjb3VudFN5bmMpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgZnVsbCBwZXJtaXNzaW9ucyB0byBsaXN0LCBkb3dubG9hZCwgYWNjZXB0LCBhbmQgdGVybWluYXRlIEFXUyBBcnRpZmFjdCBhZ3JlZW1lbnRzLiBJdCBhbHNvIGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIGxpc3QgYW5kIGVuYWJsZSBBV1Mgc2VydmljZSBhY2Nlc3MgaW4gdGhlIE9yZ2FuaXphdGlvbiBzZXJ2aWNlLCBhcyB3ZWxsIGFzIGRlc2NyaWJlIHRoZSBvcmdhbml6YXRpb24gZGV0YWlscy4gQWRkaXRpb25hbGx5LCB0aGUgcG9saWN5IHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGNoZWNrIGlmIHRoZSByZXF1aXJlZCBzZXJ2aWNlLWxpbmtlZCByb2xlIGV4aXN0cyBhbmQgY3JlYXRlcyBvbmUgaWYgaXQgZG9lc24ndCAqL1xuICAgIHB1YmxpYyBBV1NBcnRpZmFjdEFncmVlbWVudHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FydGlmYWN0QWdyZWVtZW50c0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcmVhZC1vbmx5IGFjY2VzcyB0byBsaXN0IHRoZSBBV1MgQXJ0aWZhY3Qgc2VydmljZSBhZ3JlZW1lbnRzIGFuZCB0byBkb3dubG9hZCB0aGUgYWNjZXB0ZWQgYWdyZWVtZW50cy4uIEl0IGFsc28gaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gbGlzdCBhcyB3ZWxsIGFzIGRlc2NyaWJlIHRoZSBvcmdhbml6YXRpb24gZGV0YWlscy4gQWRkaXRpb25hbGx5LCB0aGUgcG9saWN5IHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGNoZWNrIGlmIHRoZSByZXF1aXJlZCBzZXJ2aWNlLWxpbmtlZCByb2xlIGV4aXN0cy4gKi9cbiAgICBwdWJsaWMgQVdTQXJ0aWZhY3RBZ3JlZW1lbnRzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXJ0aWZhY3RBZ3JlZW1lbnRzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBBV1MgQXJ0aWZhY3Qgc2VydmljZSByZXBvcnRzLiAqL1xuICAgIHB1YmxpYyBBV1NBcnRpZmFjdFJlcG9ydHNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcnRpZmFjdFJlcG9ydHNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgQXJ0aWZhY3QgdG8gZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbiB2aWEgQVdTIE9yZ2FuaXphdGlvbnMgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTQXJ0aWZhY3RTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcnRpZmFjdFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIGVuYWJsZSBvciBkaXNhYmxlIEFXUyBBdWRpdCBNYW5hZ2VyLCB1cGRhdGUgc2V0dGluZ3MsIGFuZCBtYW5hZ2UgYXNzZXNzbWVudHMsIGNvbnRyb2xzLCBhbmQgZnJhbWV3b3JrcyAqL1xuICAgIHB1YmxpYyBBV1NBdWRpdE1hbmFnZXJBZG1pbmlzdHJhdG9yQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0F1ZGl0TWFuYWdlckFkbWluaXN0cmF0b3JBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQVdTIEF1ZGl0IE1hbmFnZXIgKi9cbiAgICBwdWJsaWMgQVdTQXVkaXRNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXVkaXRNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQVdTIEF1dG8gU2NhbGluZyB0byBwZXJpb2RpY2FsbHkgZm9yZWNhc3QgY2FwYWNpdHkgYW5kIGdlbmVyYXRlIHNjaGVkdWxlZCBzY2FsaW5nIGFjdGlvbnMgZm9yIEF1dG8gU2NhbGluZyBncm91cHMgaW4gYSBzY2FsaW5nIHBsYW4gKi9cbiAgICBwdWJsaWMgQVdTQXV0b1NjYWxpbmdQbGFuc0VDMkF1dG9TY2FsaW5nUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0F1dG9TY2FsaW5nUGxhbnNFQzJBdXRvU2NhbGluZ1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgdXNlcnMgdG8gY3JlYXRlIGNvbnRyb2xzIGFuZCBmcmFtZXdvcmtzIHRoYXQgZGVmaW5lIHRoZWlyIGV4cGVjdGF0aW9ucyBmb3IgQVdTIEJhY2t1cCByZXNvdXJjZXMgYW5kIGFjdGl2aXRpZXMsIGFuZCB0byBhdWRpdCBBV1MgQmFja3VwIHJlc291cmNlcyBhbmQgYWN0aXZpdGllcyBhZ2FpbnN0IHRoZWlyIGRlZmluZWQgY29udHJvbHMgYW5kIGZyYW1ld29ya3MuIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0byBBV1MgQ29uZmlnIGFuZCBzaW1pbGFyIHNlcnZpY2VzIHRvIGRlc2NyaWJlIHVzZXIgZXhwZWN0YXRpb25zIHBlcmZvcm0gdGhlIGF1ZGl0cy4gVGhpcyBwb2xpY3kgYWxzbyBncmFudHMgcGVybWlzc2lvbnMgdG8gZGVsaXZlciBhdWRpdCByZXBvcnRzIHRvIFMzIGFuZCBzaW1pbGFyIHNlcnZpY2VzLCBhbmQgZW5hYmxlcyB1c2VycyB0byBmaW5kIGFuZCBvcGVuIHRoZWlyIGF1ZGl0IHJlcG9ydHMuICovXG4gICAgcHVibGljIEFXU0JhY2t1cEF1ZGl0QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cEF1ZGl0QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIHRoZSBBV1MgQmFja2ludCBhZ2VudCB0byBjb21wbGV0ZSBiYWNrdXAgZGF0YSB0cmFuc2ZlciB3aXRoIEFXUyBCYWNrdXAgU3RvcmFnZSBwbGFuZS4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHJvbGVzIGFzc3VtZWQgYnkgRUMyIEluc3RhbmNlcyBydW5uaW5nIFNBUCBIQU5BIHdpdGggdGhlIEJhY2tpbnQgYWdlbnQuICovXG4gICAgcHVibGljIEFXU0JhY2t1cERhdGFUcmFuc2ZlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBEYXRhVHJhbnNmZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyBmb3IgYmFja3VwIGFkbWluaXN0cmF0b3JzLCBncmFudGluZyBmdWxsIGFjY2VzcyB0byBBV1MgQmFja3VwIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBjcmVhdGluZyBvciBlZGl0aW5nIGJhY2t1cCBwbGFucywgYXNzaWduaW5nIEFXUyByZXNvdXJjZXMgdG8gYmFja3VwIHBsYW5zLCBkZWxldGluZyBiYWNrdXBzLCBhbmQgcmVzdG9yaW5nIGJhY2t1cHMuICovXG4gICAgcHVibGljIEFXU0JhY2t1cEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEFXUyBCYWNrdXBHYXRld2F5IHBlcm1pc3Npb24gdG8gc3luYyB0aGUgbWV0YWRhdGEgb2YgVmlydHVhbCBNYWNoaW5lcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBHYXRld2F5U2VydmljZVJvbGVQb2xpY3lGb3JWaXJ0dWFsTWFjaGluZU1ldGFkYXRhU3luYygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBHYXRld2F5U2VydmljZVJvbGVQb2xpY3lGb3JWaXJ0dWFsTWFjaGluZU1ldGFkYXRhU3luYyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyB1c2VycyBwZXJtaXNzaW9ucyB0byBhc3NpZ24gQVdTIHJlc291cmNlcyB0byBiYWNrdXAgcGxhbnMsIGNyZWF0ZSBvbi1kZW1hbmQgYmFja3VwcywgYW5kIHJlc3RvcmUgYmFja3Vwcy4gVGhpcyBwb2xpY3kgZG9lcyBub3QgYWxsb3cgdGhlIHVzZXIgdG8gY3JlYXRlIG9yIGVkaXQgYmFja3VwIHBsYW5zIG9yIHRvIGRlbGV0ZSBzY2hlZHVsZWQgYmFja3VwcyBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBPcGVyYXRvckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBPcGVyYXRvckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIGZvciBiYWNrdXAgYWRtaW5pc3RhdG9ycyB3aG8gdXNlIGNyb3NzLWFjY291bnQgYmFja3VwIG1hbmFnZW1lbnQgdG8gbWFuYWdlIGJhY2t1cHMgZm9yIHRoZSBvcmdhbml6YXRpb24uICovXG4gICAgcHVibGljIEFXU0JhY2t1cE9yZ2FuaXphdGlvbkFkbWluQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cE9yZ2FuaXphdGlvbkFkbWluQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIEJhY2t1cCBwZXJtaXNzaW9uIHRvIHJlc3RvcmUgYSBiYWNrdXAgb2YgU0FQIEhBTkEgb24gQW1hem9uIEVDMiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBSZXN0b3JlQWNjZXNzRm9yU0FQSEFOQSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBSZXN0b3JlQWNjZXNzRm9yU0FQSEFOQSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBzZWFyY2ggb3BlcmF0b3Igcm9sZSBoYXMgYWNjZXNzIHRvIGNyZWF0ZSBiYWNrdXAgaW5kZXhlcywgY3JlYXRlIHNlYXJjaGVzIG9mIGJhY2t1cCBtZXRhZGF0YSB0aGF0IGhhcyBiZWVuIGluZGV4ZWQuIFRoaXMgcG9saWN5IGNvbnRhaW5zIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIHRoZXNlIHNlYXJjaCBvcGVyYXRvciBmdW5jdGlvbnMuICovXG4gICAgcHVibGljIEFXU0JhY2t1cFNlYXJjaE9wZXJhdG9yQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cFNlYXJjaE9wZXJhdG9yQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIEJhY2t1cCBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBiYWNrdXBzIG9uIHlvdXIgYmVoYWxmIGFjcm9zcyBBV1Mgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwU2VydmljZUxpbmtlZFJvbGVQb2xpY3lGb3JCYWNrdXAoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwU2VydmljZUxpbmtlZFJvbGVQb2xpY3lGb3JCYWNrdXApO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBV1MgQmFja3VwIHBlcm1pc3Npb24gdG8gY3JlYXRlIGJhY2t1cHMgb24geW91ciBiZWhhbGYgYWNyb3NzIEFXUyBzZXJ2aWNlcyAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBTZXJ2aWNlTGlua2VkUm9sZVBvbGljeUZvckJhY2t1cFRlc3QoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwU2VydmljZUxpbmtlZFJvbGVQb2xpY3lGb3JCYWNrdXBUZXN0KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIEJhY2t1cCBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBiYWNrdXBzIG9uIHlvdXIgYmVoYWxmIGFjcm9zcyBBV1Mgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JCYWNrdXAoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JCYWNrdXApO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgY29udGFpbmluZyBwZXJtaXNzaW9ucyBuZWNlc3NhcnkgZm9yIEFXUyBCYWNrdXAgdG8gaW5kZXggcmVjb3ZlcnkgcG9pbnRzLiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBTZXJ2aWNlUm9sZVBvbGljeUZvckluZGV4aW5nKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9ySW5kZXhpbmcpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgY29udGFpbmluZyBwZXJtaXNzaW9ucyBuZWNlc3NhcnkgZm9yIEFXUyBCYWNrdXAgdG8gcmVzdG9yZSBpbmRpdmlkdWFsIGl0ZW1zIGluIGEgcmVjb3ZlcnkgcG9pbnQgKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JJdGVtUmVzdG9yZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JJdGVtUmVzdG9yZXMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBV1MgQmFja3VwIHBlcm1pc3Npb24gdG8gcGVyZm9ybSByZXN0b3JlcyBvbiB5b3VyIGJlaGFsZiBhY3Jvc3MgQVdTIHNlcnZpY2VzLiBUaGlzIHBvbGljeSBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byBjcmVhdGUgYW5kIGRlbGV0ZSBBV1MgcmVzb3VyY2VzLCBzdWNoIGFzIEVCUyB2b2x1bWVzLCBSRFMgaW5zdGFuY2VzLCBhbmQgRUZTIGZpbGUgc3lzdGVtcywgd2hpY2ggYXJlIHBhcnQgb2YgdGhlIHJlc3RvcmUgcHJvY2Vzcy4gKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JSZXN0b3JlcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBTZXJ2aWNlUm9sZVBvbGljeUZvclJlc3RvcmVzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGNvbnRhaW5pbmcgcGVybWlzc2lvbnMgbmVjZXNzYXJ5IGZvciBBV1MgQmFja3VwIHRvIGJhY2t1cCBkYXRhIGluIGFueSBTMyBidWNrZXQuIFRoaXMgaW5jbHVkZXMgcmVhZCBhY2Nlc3MgdG8gYWxsIFMzIG9iamVjdHMgYW5kIGFueSBkZWNyeXB0IGFjY2VzcyBmb3IgYWxsIEtNUyBrZXlzLiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBTZXJ2aWNlUm9sZVBvbGljeUZvclMzQmFja3VwKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9yUzNCYWNrdXApO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgY29udGFpbmluZyBwZXJtaXNzaW9ucyBuZWNlc3NhcnkgZm9yIEFXUyBCYWNrdXAgdG8gcmVzdG9yZSBhIFMzIGJhY2t1cCB0byBhIGJ1Y2tldC4gVGhpcyBpbmNsdWRlcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zIHRvIGFsbCBTMyBidWNrZXRzLCBhbmQgcGVybWlzc2lvbnMgdG8gR2VuZXJhdGVEYXRhS2V5IGFuZCBEZXNjcmliZUtleSBmb3IgYWxsIEtNUyBrZXlzLiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBTZXJ2aWNlUm9sZVBvbGljeUZvclMzUmVzdG9yZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBTZXJ2aWNlUm9sZVBvbGljeUZvclMzUmVzdG9yZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIGZvciBBV1MgQmF0Y2ggcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NCYXRjaEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmF0Y2hGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGVuYWJsZSBDbG91ZFdhdGNoIEV2ZW50IFRhcmdldCBmb3IgQVdTIEJhdGNoIEpvYiBTdWJtaXNzaW9uICovXG4gICAgcHVibGljIEFXU0JhdGNoU2VydmljZUV2ZW50VGFyZ2V0Um9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYXRjaFNlcnZpY2VFdmVudFRhcmdldFJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIEFXUyBCYXRjaCBzZXJ2aWNlIHJvbGUgd2hpY2ggYWxsb3dzIGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBFQzIsIEF1dG9zY2FsaW5nLCBFQzIgQ29udGFpbmVyIHNlcnZpY2UgYW5kIENsb3Vkd2F0Y2ggTG9ncy4gKi9cbiAgICBwdWJsaWMgQVdTQmF0Y2hTZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYXRjaFNlcnZpY2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIGZvciBBV1MgQmF0Y2ggdG8gcXVldWUgYW5kIG1hbmFnZSBBbWF6b24gU2FnZU1ha2VyIHdvcmtsb2FkcyAqL1xuICAgIHB1YmxpYyBBV1NCYXRjaFNlcnZpY2VSb2xlUG9saWN5Rm9yU2FnZU1ha2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhdGNoU2VydmljZVJvbGVQb2xpY3lGb3JTYWdlTWFrZXIpO1xuICAgIH1cblxuICAgIC8qKiBBIHNlcnZpY2UgbGlua2VkIHJvbGUgdG8gcHJvdmlkZSBCaWxsaW5nIGFuZCBDb3N0IE1hbmFnZW1lbnQgRGF0YSBFeHBvcnRzIGFjY2VzcyB0byBBV1Mgc2VydmljZSBkYXRhIGZvciBleHBvcnRpbmcgdGhlIGRhdGEgdG8gYSB0YXJnZXQgbG9jYXRpb24sIHN1Y2ggYXMgQW1hem9uIFMzLCBvbiBiZWhhbGYgb2YgYSBjdXN0b21lci4gKi9cbiAgICBwdWJsaWMgQVdTQkNNRGF0YUV4cG9ydHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCQ01EYXRhRXhwb3J0c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVXNlIHRoZSBBV1NCaWxsaW5nQ29uZHVjdG9yRnVsbEFjY2VzcyBtYW5hZ2VkIHBvbGljeSB0byBhbGxvdyBjb21wbGV0ZSBhY2Nlc3MgdG8gQVdTIEJpbGxpbmcgQ29uZHVjdG9yIChBQkMpIGNvbnNvbGUgYW5kIEFQSXMuIFRoaXMgcG9saWN5IGFsbG93cyB1c2VycyB0byBsaXN0LCBjcmVhdGUgYW5kIGRlbGV0ZSBBQkMgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NCaWxsaW5nQ29uZHVjdG9yRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCaWxsaW5nQ29uZHVjdG9yRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFVzZSB0aGUgQVdTQmlsbGluZ0NvbmR1Y3RvclJlYWRPbmx5QWNjZXNzIG1hbmFnZWQgcG9saWN5IHRvIGFsbG93IHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIEJpbGxpbmcgQ29uZHVjdG9yIChBQkMpIGNvbnNvbGUgYW5kIEFQSXMuIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9uIHRvIHZpZXcgYW5kIGxpc3QgYWxsIEFCQyByZXNvdXJjZXMuIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIG9yIGRlbGV0ZSByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0JpbGxpbmdDb25kdWN0b3JSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCaWxsaW5nQ29uZHVjdG9yUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdXNlcnMgdG8gdmlldyBiaWxscyBvbiB0aGUgQmlsbGluZyBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NCaWxsaW5nUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmlsbGluZ1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGJpbGxpbmcgc2VydmljZSB0byB2YWxpZGF0ZSBhY2Nlc3MgdG8gYmlsbGluZyB2aWV3IGRhdGEgZm9yIGRlcml2ZWQgYmlsbGluZyB2aWV3cyAqL1xuICAgIHB1YmxpYyBBV1NCaWxsaW5nU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmlsbGluZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ2l2ZXMgcGVybWlzc2lvbnMgdG8gY29udHJvbCBBV1MgcmVzb3VyY2VzLiBGb3IgZXhhbXBsZSwgdG8gc3RhcnQgYW5kIHN0b3AgRUMyIG9yIFJEUyBpbnN0YW5jZXMgYnkgZXhlY3V0aW5nIEFXUyBTeXN0ZW1zIE1hbmFnZXIgKFNTTSkgc2NyaXB0cy4gKi9cbiAgICBwdWJsaWMgQVdTQnVkZ2V0c0FjdGlvbnNSb2xlUG9saWN5Rm9yUmVzb3VyY2VBZG1pbmlzdHJhdGlvbldpdGhTU00oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQnVkZ2V0c0FjdGlvbnNSb2xlUG9saWN5Rm9yUmVzb3VyY2VBZG1pbmlzdHJhdGlvbldpdGhTU00pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgQnVkZ2V0cyBBY3Rpb25zIGluY2x1ZGluZyB1c2luZyBCdWRnZXRzIEFjdGlvbnMgdG8gY29udHJvbCBzdGF0ZXMgb2YgcnVubmluZyBBV1MgcmVzb3VyY2VzIHZpYSBBV1MgTWFuYWdlbWVudCBDb25zb2xlICovXG4gICAgcHVibGljIEFXU0J1ZGdldHNBY3Rpb25zV2l0aEFXU1Jlc291cmNlQ29udHJvbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCdWRnZXRzQWN0aW9uc1dpdGhBV1NSZXNvdXJjZUNvbnRyb2xBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBCdWRnZXRzIENvbnNvbGUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NCdWRnZXRzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQnVkZ2V0c1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBJQU0gcG9saWN5IGdyYW50cyB1c2VycyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIEJ1Z0J1c3QgY29uc29sZSAqL1xuICAgIHB1YmxpYyBBV1NCdWdCdXN0RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCdWdCdXN0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgSUFNIHBvbGljeSBncmFudHMgdXNlcnMgYWNjZXNzIHRvIHBhcnRpY2lwYXRlIGluIEFXUyBCdWdCdXN0IGV2ZW50cyAqL1xuICAgIHB1YmxpYyBBV1NCdWdCdXN0UGxheWVyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0J1Z0J1c3RQbGF5ZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gQVdTIEJ1Z0J1c3QgdG8gYWNjZXNzIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBV1NCdWdCdXN0U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQnVnQnVzdFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgKEFDTSkgKi9cbiAgICBwdWJsaWMgQVdTQ2VydGlmaWNhdGVNYW5hZ2VyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDZXJ0aWZpY2F0ZU1hbmFnZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYXVkaXRvciBhY2Nlc3MgdG8gQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBQXVkaXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDZXJ0aWZpY2F0ZU1hbmFnZXJQcml2YXRlQ0FBdWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDZXJ0aWZpY2F0ZU1hbmFnZXJQcml2YXRlQ0FGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcHJpdmlsZWdlZCBjZXJ0aWZpY2F0ZSB1c2VyIGFjY2VzcyB0byBBV1MgQ2VydGlmaWNhdGUgTWFuYWdlciBQcml2YXRlIENlcnRpZmljYXRlIEF1dGhvcml0eSAqL1xuICAgIHB1YmxpYyBBV1NDZXJ0aWZpY2F0ZU1hbmFnZXJQcml2YXRlQ0FQcml2aWxlZ2VkVXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDZXJ0aWZpY2F0ZU1hbmFnZXJQcml2YXRlQ0FQcml2aWxlZ2VkVXNlcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBjZXJ0aWZpY2F0ZSB1c2VyIGFjY2VzcyB0byBBV1MgQ2VydGlmaWNhdGUgTWFuYWdlciBQcml2YXRlIENlcnRpZmljYXRlIEF1dGhvcml0eSAqL1xuICAgIHB1YmxpYyBBV1NDZXJ0aWZpY2F0ZU1hbmFnZXJQcml2YXRlQ0FVc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NlcnRpZmljYXRlTWFuYWdlclByaXZhdGVDQVVzZXIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyIChBQ00pLiAqL1xuICAgIHB1YmxpYyBBV1NDZXJ0aWZpY2F0ZU1hbmFnZXJSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDZXJ0aWZpY2F0ZU1hbmFnZXJSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBTZXJ2aWNlIExpbmtlZCBSb2xlIHVzZWQgYnkgQVdTIENoYXRib3QuICovXG4gICAgcHVibGljIEFXU0NoYXRib3RTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDaGF0Ym90U2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgZnVsbCBhY2Nlc3MgdG8gQVdTIENsZWFuIFJvb21zIHJlc291cmNlcyBhbmQgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIFNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDbGVhblJvb21zRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbGVhblJvb21zRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBmdWxsIGFjY2VzcyB0byBBV1MgQ2xlYW4gUm9vbXMgcmVzb3VyY2VzIGV4Y2VwdCBmb3IgcXVlcnlpbmcgaW4gYSBjb2xsYWJvcmF0aW9uIGFuZCBhY2Nlc3MgdG8gcmVsYXRlZCBBV1MgU2VydmljZXMuICovXG4gICAgcHVibGljIEFXU0NsZWFuUm9vbXNGdWxsQWNjZXNzTm9RdWVyeWluZygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbGVhblJvb21zRnVsbEFjY2Vzc05vUXVlcnlpbmcpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgZnVsbCBhY2Nlc3MgdG8gQVdTIENsZWFuIFJvb21zIE1MIHJlc291cmNlcyBhbmQgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIFNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDbGVhblJvb21zTUxGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NsZWFuUm9vbXNNTEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgQ2xlYW4gUm9vbXMgTUwgcmVzb3VyY2VzIGFuZCByZWFkLW9ubHkgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIENsZWFuIFJvb21zIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NDbGVhblJvb21zTUxSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbGVhblJvb21zTUxSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyByZWFkLW9ubHkgYWNjZXNzIHRvIEFXUyBDbGVhbiBSb29tcyByZXNvdXJjZXMgYW5kIHJlYWQtb25seSBhY2Nlc3MgdG8gcmVsYXRlZCBBV1MgR2x1ZSBhbmQgQW1hem9uIENsb3VkV2F0Y2ggTG9ncyByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0NsZWFuUm9vbXNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbGVhblJvb21zUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhZG1pbmlzdHJhdG9yIGFjY2VzcyB0byBBV1MgQ2xvdWQ5LiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZDlBZG1pbmlzdHJhdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkOUFkbWluaXN0cmF0b3IpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byBiZSBpbnZpdGVkIGludG8gQVdTIENsb3VkOSBzaGFyZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZDlFbnZpcm9ubWVudE1lbWJlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZDlFbnZpcm9ubWVudE1lbWJlcik7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UgTGlua2VkIFJvbGUgUG9saWN5IGZvciBBV1MgQ2xvdWQ5ICovXG4gICAgcHVibGljIEFXU0Nsb3VkOVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkOVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgd2lsbCBiZSB1c2VkIHRvIGF0dGFjaCBhIHJvbGUgb24gYSBJbnN0YW5jZVByb2ZpbGUgd2hpY2ggd2lsbCBhbGxvdyBDbG91ZDkgdG8gdXNlIHRoZSBTU00gU2Vzc2lvbiBNYW5hZ2VyIHRvIGNvbm5lY3QgdG8gdGhlIGluc3RhbmNlICovXG4gICAgcHVibGljIEFXU0Nsb3VkOVNTTUluc3RhbmNlUHJvZmlsZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZDlTU01JbnN0YW5jZVByb2ZpbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBBV1MgQ2xvdWQ5IGRldmVsb3BtZW50IGVudmlyb25tZW50cyBhbmQgdG8gbWFuYWdlIG93bmVkIGVudmlyb25tZW50cy4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWQ5VXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZDlVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENsb3VkRm9ybWF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZEZvcm1hdGlvbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRGb3JtYXRpb25GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBDbG91ZEZvcm1hdGlvbiB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0Nsb3VkRm9ybWF0aW9uUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRGb3JtYXRpb25SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBDbG91ZEZyb250IExvZ2dlciB3cml0ZSBwZXJtaXNzaW9ucyB0byBDbG91ZFdhdGNoIExvZ3MuICovXG4gICAgcHVibGljIEFXU0Nsb3VkRnJvbnRMb2dnZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRGcm9udExvZ2dlcik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBDbG91ZEZyb250IHRvIG1hbmFnZSBFQzIgRWxhc3RpYyBOZXR3b3JrIEludGVyZmFjZXMgYW5kIFNlY3VyaXR5IEdyb3VwcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWRGcm9udFZQQ09yaWdpblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkRnJvbnRWUENPcmlnaW5TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBDbG91ZEhTTSByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0Nsb3VkSFNNRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZEhTTUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFsbCBDbG91ZEhTTSByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0Nsb3VkSFNNUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRIU01SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciB0aGUgQVdTIENsb3VkSFNNIHNlcnZpY2Ugcm9sZS4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWRIU01Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkSFNNUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBV1MgQ2xvdWQgTWFwIGRpc2NvdmVyeSBBUEkuICovXG4gICAgcHVibGljIEFXU0Nsb3VkTWFwRGlzY292ZXJJbnN0YW5jZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZE1hcERpc2NvdmVySW5zdGFuY2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgQVdTIENsb3VkIE1hcCBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZE1hcEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRNYXBGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBhbGwgQVdTIENsb3VkIE1hcCBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZE1hcFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkTWFwUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWdpc3RyYW50IGxldmVsIGFjY2VzcyB0byBBV1MgQ2xvdWQgTWFwIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU0Nsb3VkTWFwUmVnaXN0ZXJJbnN0YW5jZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZE1hcFJlZ2lzdGVySW5zdGFuY2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgdXNpbmcgQVdTIENsb3VkU2hlbGwgd2l0aCBhbGwgZmVhdHVyZXMgKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWRTaGVsbEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRTaGVsbEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgQ2xvdWRUcmFpbC4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWRUcmFpbEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRUcmFpbEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBDbG91ZFRyYWlsLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZFRyYWlsUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRUcmFpbFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgdXNlZCBieSB0aGUgc2VydmljZS1saW5rZWQgcm9sZSBuYW1lZCBBV1NTZXJ2aWNlUm9sZUZvckNsb3VkV2F0Y2hBbGFybXNfQWN0aW9uU1NNSW5jaWRlbnRzLiBDbG91ZFdhdGNoIHVzZXMgdGhpcyBzZXJ2aWNlLWxpbmtlZCByb2xlIHRvIHBlcmZvcm0gQVdTIFN5c3RlbSBNYW5hZ2VyIEluY2lkZW50IE1hbmFnZXIgYWN0aW9ucyB3aGVuIGEgQ2xvdWRXYXRjaCBhbGFybSBnb2VzIGluIHRvIEFMQVJNIHN0YXRlLiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbiB0byBzdGFydCBpbmNpZGVudHMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0Nsb3VkV2F0Y2hBbGFybXNBY3Rpb25TU01JbmNpZGVudHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZFdhdGNoQWxhcm1zQWN0aW9uU1NNSW5jaWRlbnRzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgQ29kZUFydGlmYWN0IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZUFydGlmYWN0QWRtaW5BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZUFydGlmYWN0QWRtaW5BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBDb2RlQXJ0aWZhY3QgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlQXJ0aWZhY3RSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlQXJ0aWZhY3RSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDb2RlQnVpbGQgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiBBbHNvIGF0dGFjaCBBbWF6b25TM1JlYWRPbmx5QWNjZXNzIHRvIHByb3ZpZGUgYWNjZXNzIHRvIGRvd25sb2FkIGJ1aWxkIGFydGlmYWN0cywgYW5kIGF0dGFjaCBJQU1GdWxsQWNjZXNzIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHRoZSBzZXJ2aWNlIHJvbGUgZm9yIENvZGVCdWlsZC4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZUJ1aWxkQWRtaW5BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZUJ1aWxkQWRtaW5BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIENvZGVCdWlsZCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUsIGJ1dCBkb2VzIG5vdCBhbGxvdyBDb2RlQnVpbGQgcHJvamVjdCBhZG1pbmlzdHJhdGlvbi4gQWxzbyBhdHRhY2ggQW1hem9uUzNSZWFkT25seUFjY2VzcyB0byBwcm92aWRlIGFjY2VzcyB0byBkb3dubG9hZCBidWlsZCBhcnRpZmFjdHMuICovXG4gICAgcHVibGljIEFXU0NvZGVCdWlsZERldmVsb3BlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlQnVpbGREZXZlbG9wZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBDb2RlQnVpbGQgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiBBbHNvIGF0dGFjaCBBbWF6b25TM1JlYWRPbmx5QWNjZXNzIHRvIHByb3ZpZGUgYWNjZXNzIHRvIGRvd25sb2FkIGJ1aWxkIGFydGlmYWN0cy4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZUJ1aWxkUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZUJ1aWxkUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgQ29kZUNvbW1pdCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0NvZGVDb21taXRGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVDb21taXRGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENvZGVDb21taXQgcmVwb3NpdG9yaWVzLCBidXQgZG9lcyBub3QgYWxsb3cgcmVwb3NpdG9yeSBkZWxldGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZUNvbW1pdFBvd2VyVXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlQ29tbWl0UG93ZXJVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgQ29kZUNvbW1pdCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0NvZGVDb21taXRSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlQ29tbWl0UmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gcmVnaXN0ZXIgYW5kIGRlcGxveSBhIHJldmlzaW9uLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlRGVwbG95RGVwbG95ZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZURlcGxveURlcGxveWVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQ29kZURlcGxveSByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0NvZGVEZXBsb3lGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVEZXBsb3lGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBDb2RlRGVwbG95IHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZURlcGxveVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVEZXBsb3lSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIENvZGVEZXBsb3kgc2VydmljZSBhY2Nlc3MgdG8gZXhwYW5kIHRhZ3MgYW5kIGludGVyYWN0IHdpdGggQXV0byBTY2FsaW5nIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlRGVwbG95Um9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlRGVwbG95Um9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIENvZGVEZXBsb3kgc2VydmljZSBhY2Nlc3MgdG8gaW52b2tlIExhbWJkYSBmdW5jdGlvbiBvbiB5b3VyIGJlaGFsZiB0byBwZXJmb3JtIGJsdWUvZ3JlZW4gZGVwbG95bWVudCB0aHJvdWdoIENsb3VkRm9ybWF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlRGVwbG95Um9sZUZvckNsb3VkRm9ybWF0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVEZXBsb3lSb2xlRm9yQ2xvdWRGb3JtYXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBDb2RlRGVwbG95IHNlcnZpY2Ugd2lkZSBhY2Nlc3MgdG8gcGVyZm9ybSBhbiBFQ1MgYmx1ZS9ncmVlbiBkZXBsb3ltZW50IG9uIHlvdXIgYmVoYWxmLiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gc3VwcG9ydCBzZXJ2aWNlcywgc3VjaCBhcyAgZnVsbCBhY2Nlc3MgdG8gcmVhZCBhbGwgUzMgb2JqZWN0cywgaW52b2tlIGFsbCBMYW1iZGEgZnVuY3Rpb25zLCBwdWJsaXNoIHRvIGFsbCBTTlMgdG9waWNzIHdpdGhpbiB0aGUgYWNjb3VudCBhbmQgdXBkYXRlIGFsbCBFQ1Mgc2VydmljZXMuICovXG4gICAgcHVibGljIEFXU0NvZGVEZXBsb3lSb2xlRm9yRUNTKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVEZXBsb3lSb2xlRm9yRUNTKTtcbiAgICB9XG5cbiAgICAvKiogIFByb3ZpZGVzIENvZGVEZXBsb3kgc2VydmljZSBsaW1pdGVkIGFjY2VzcyB0byBwZXJmb3JtIGFuIEVDUyBibHVlL2dyZWVuIGRlcGxveW1lbnQgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0NvZGVEZXBsb3lSb2xlRm9yRUNTTGltaXRlZCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlRGVwbG95Um9sZUZvckVDU0xpbWl0ZWQpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBDb2RlRGVwbG95IHNlcnZpY2UgYWNjZXNzIHRvIHBlcmZvcm0gYSBMYW1iZGEgZGVwbG95bWVudCBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZURlcGxveVJvbGVGb3JMYW1iZGEoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZURlcGxveVJvbGVGb3JMYW1iZGEpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBDb2RlRGVwbG95IHNlcnZpY2UgbGltaXRlZCBhY2Nlc3MgdG8gcGVyZm9ybSBhIExhbWJkYSBkZXBsb3ltZW50IG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlRGVwbG95Um9sZUZvckxhbWJkYUxpbWl0ZWQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZURlcGxveVJvbGVGb3JMYW1iZGFMaW1pdGVkKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENvZGVQaXBlbGluZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0NvZGVQaXBlbGluZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZVBpcGVsaW5lRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIENvZGVQaXBlbGluZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0NvZGVQaXBlbGluZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVQaXBlbGluZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHZpZXcgYW5kIGFwcHJvdmUgbWFudWFsIGNoYW5nZXMgZm9yIGFsbCBwaXBlbGluZXMgKi9cbiAgICBwdWJsaWMgQVdTQ29kZVBpcGVsaW5lQXBwcm92ZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZVBpcGVsaW5lQXBwcm92ZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgZm9yIGN1c3RvbSBhY3Rpb25zIHRvIHBvbGwgZm9yIGpvYnMgZGV0YWlscyAoaW5jbHVkaW5nIHRlbXBvcmFyeSBjcmVkZW50aWFscykgYW5kIHJlcG9ydCBzdGF0dXMgdXBkYXRlcyB0byBBV1MgQ29kZVBpcGVsaW5lLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlUGlwZWxpbmVDdXN0b21BY3Rpb25BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZVBpcGVsaW5lQ3VzdG9tQWN0aW9uQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENvZGVTdGFyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZVN0YXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVTdGFyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgQ29kZVN0YXIgTm90aWZpY2F0aW9ucyB0byBhY2Nlc3MgQW1hem9uIENsb3VkV2F0Y2ggRXZlbnRzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFXU0NvZGVTdGFyTm90aWZpY2F0aW9uc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVTdGFyTm90aWZpY2F0aW9uc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRE8gTk9UIFVTRSAtICBBV1MgQ29kZVN0YXIgU2VydmljZSBSb2xlIFBvbGljeSB3aGljaCBncmFudHMgYWRtaW5pc3RyYXRpdmUgcHJpdmlsZWdlcyBpbiBvcmRlciBmb3IgQ29kZVN0YXIgdG8gbWFuYWdlIElBTSBhbmQgb3RoZXIgc2VydmljZSByZXNvdXJjZXMgb24gYmVoYWxmIG9mIHRoZSBjdXN0b21lci4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZVN0YXJTZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlU3RhclNlcnZpY2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogRGVuaWVzIGFjY2VzcyB0byBjZXJ0YWluIGFjdGlvbnMsIGFwcGxpZWQgYnkgdGhlIEFXUyB0ZWFtIGluIHRoZSBldmVudCB0aGF0IGFuIElBTSB1c2VyJ3MgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGNvbXByb21pc2VkIG9yIGV4cG9zZWQgcHVibGljbHkuICBEbyBOT1QgcmVtb3ZlIHRoaXMgcG9saWN5LiAgSW5zdGVhZCwgcGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmllZCBpbiB0aGUgZW1haWwgc2VudCB0byB5b3UgcmVnYXJkaW5nIHRoaXMgZXZlbnQuICovXG4gICAgcHVibGljIEFXU0NvbXByb21pc2VkS2V5UXVhcmFudGluZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb21wcm9taXNlZEtleVF1YXJhbnRpbmUpO1xuICAgIH1cblxuICAgIC8qKiBEZW5pZXMgYWNjZXNzIHRvIGNlcnRhaW4gYWN0aW9ucywgYXBwbGllZCBieSB0aGUgQVdTIHRlYW0gaW4gdGhlIGV2ZW50IHRoYXQgYW4gSUFNIHVzZXIncyBjcmVkZW50aWFscyBoYXZlIGJlZW4gY29tcHJvbWlzZWQgb3IgZXhwb3NlZCBwdWJsaWNseS4gRG8gTk9UIHJlbW92ZSB0aGlzIHBvbGljeS4gSW5zdGVhZCwgcGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmllZCBpbiB0aGUgc3VwcG9ydCBjYXNlIGNyZWF0ZWQgZm9yIHlvdSByZWdhcmRpbmcgdGhpcyBldmVudC4gKi9cbiAgICBwdWJsaWMgQVdTQ29tcHJvbWlzZWRLZXlRdWFyYW50aW5lVjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29tcHJvbWlzZWRLZXlRdWFyYW50aW5lVjIpO1xuICAgIH1cblxuICAgIC8qKiBEZW5pZXMgYWNjZXNzIHRvIGNlcnRhaW4gYWN0aW9ucywgYXBwbGllZCBieSBBV1MgaW4gdGhlIGV2ZW50IHRoYXQgYW4gSUFNIHVzZXIncyBjcmVkZW50aWFscyBoYXZlIGJlZW4gY29tcHJvbWlzZWQgb3IgZXhwb3NlZCBwdWJsaWNseS4gVGhlIHBvbGljeSBhaW1zIHRvIGxpbWl0IHRoZSBwb3RlbnRpYWwgZGFtYWdlIHRoYXQgbWF5IGJlIGNhdXNlZCBieSBmcmF1ZC1yZWxhdGVkIGFjdGl2aXR5IGxlYWRpbmcgdG8gdW5hdXRob3JpemVkIGNoYXJnZXMsIHdoaWxlIG5vdCBpbXBhY3RpbmcgdGhlIGV4aXN0aW5nIHJlc291cmNlcy4gRG8gTk9UIHJlbW92ZSB0aGlzIHBvbGljeS4gSW5zdGVhZCwgcGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmllZCBpbiB0aGUgc3VwcG9ydCBjYXNlIGNyZWF0ZWQgZm9yIHlvdSByZWdhcmRpbmcgdGhpcyBldmVudC4gKi9cbiAgICBwdWJsaWMgQVdTQ29tcHJvbWlzZWRLZXlRdWFyYW50aW5lVjMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29tcHJvbWlzZWRLZXlRdWFyYW50aW5lVjMpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQ29uZmlnIHRvIGNhbGwgQVdTIHNlcnZpY2VzIGFuZCBkZXBsb3kgY29uZmlnIHJlc291cmNlcyBhY3Jvc3Mgb3JnYW5pemF0aW9uICovXG4gICAgcHVibGljIEFXU0NvbmZpZ011bHRpQWNjb3VudFNldHVwUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbmZpZ011bHRpQWNjb3VudFNldHVwUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBDb25maWcgdG8gcmVtZWRpYXRlIG5vbmNvbXBsaWFudCByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0NvbmZpZ1JlbWVkaWF0aW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29uZmlnUmVtZWRpYXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgQ29uZmlnIHRvIGNhbGwgcmVhZC1vbmx5IEFXUyBPcmdhbml6YXRpb25zIEFQSXMgKi9cbiAgICBwdWJsaWMgQVdTQ29uZmlnUm9sZUZvck9yZ2FuaXphdGlvbnMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29uZmlnUm9sZUZvck9yZ2FuaXphdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgYW4gQVdTIExhbWJkYSBmdW5jdGlvbiB0byBhY2Nlc3MgdGhlIEFXUyBDb25maWcgQVBJIGFuZCB0aGUgY29uZmlndXJhdGlvbiBzbmFwc2hvdHMgdGhhdCBBV1MgQ29uZmlnIGRlbGl2ZXJzIHBlcmlvZGljYWxseSB0byBBbWF6b24gUzMuIFRoaXMgYWNjZXNzIGlzIHJlcXVpcmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGV2YWx1YXRlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBmb3IgY3VzdG9tIENvbmZpZyBydWxlcy4gKi9cbiAgICBwdWJsaWMgQVdTQ29uZmlnUnVsZXNFeGVjdXRpb25Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbmZpZ1J1bGVzRXhlY3V0aW9uUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBDb25maWcgdG8gY2FsbCBBV1Mgc2VydmljZXMgYW5kIGNvbGxlY3QgcmVzb3VyY2UgY29uZmlndXJhdGlvbnMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0NvbmZpZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbmZpZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHVzZSBBV1MgQ29uZmlnLCBpbmNsdWRpbmcgc2VhcmNoaW5nIGJ5IHRhZ3Mgb24gcmVzb3VyY2VzLCBhbmQgcmVhZGluZyBhbGwgdGFncy4gVGhpcyBkb2VzIG5vdCBwcm92aWRlIHBlcm1pc3Npb24gdG8gY29uZmlndXJlIEFXUyBDb25maWcsIHdoaWNoIHJlcXVpcmVzIGFkbWluaXN0cmF0aXZlIHByaXZpbGVnZXMuICovXG4gICAgcHVibGljIEFXU0NvbmZpZ1VzZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29uZmlnVXNlckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYnJvYWQgcmVhZC93cml0ZSBhY2Nlc3MgdG8gQUxMIEVDMiBvYmplY3RzLCByZWFkL3dyaXRlIGFjY2VzcyB0byBTMyBidWNrZXRzIHN0YXJ0aW5nIHdpdGggJ2ltcG9ydC10by1lYzItJywgYW5kIHRoZSBhYmlsaXR5IHRvIGxpc3QgYWxsIFMzIGJ1Y2tldHMsIGZvciB0aGUgQVdTIENvbm5lY3RvciB0byBpbXBvcnQgVk1zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NDb25uZWN0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29ubmVjdG9yKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBDb250cm9sIFRvd2VyIHRvIGNhbGwgQVdTIHNlcnZpY2VzIHRoYXQgcHJvdmlkZSBhdXRvbWF0ZWQgYWNjb3VudCBjb25maWd1cmF0aW9uIGFuZCBjZW50cmFsaXplZCBnb3Zlcm5hbmNlIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NDb250cm9sVG93ZXJBY2NvdW50U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29udHJvbFRvd2VyQWNjb3VudFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gbWFuYWdlIHRoZSBJQU0gSWRlbnRpdHkgQ2VudGVyIChJZEMpIHJlc291cmNlcyBpbiB0aGUgbWVtYmVyIGFjY291bnRzIGVucm9sbGVkIHdpdGggQVdTIENvbnRyb2wgVG93ZXIuIFRoZSBwb2xpY3kgaXMgYXR0YWNoZWQgdG8gdGhlIEFXU0NvbnRyb2xUb3dlckFkbWluIHJvbGUgb25seSBpZiB0aGUgY3VzdG9tZXIgaGFzIG9wdGVkLWludG8gSUFNIElkQyBpbnRlZ3JhdGlvbiBpbiB0aGVpciBBV1MgQ29udHJvbCBUb3dlciBMYW5kaW5nIFpvbmUuICovXG4gICAgcHVibGljIEFXU0NvbnRyb2xUb3dlcklkZW50aXR5Q2VudGVyTWFuYWdlbWVudFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb250cm9sVG93ZXJJZGVudGl0eUNlbnRlck1hbmFnZW1lbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyBtYW5hZ2VkIG9yIHVzZWQgYnkgQVdTIENvbnRyb2wgVG93ZXIgKi9cbiAgICBwdWJsaWMgQVdTQ29udHJvbFRvd2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29udHJvbFRvd2VyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gdG8gZGVzY3JpYmUgdGhlIG9yZ2FuaXphdGlvbiBvZiB0aGUgYWNjb3VudCwgY3JlYXRlIFMzIGJ1Y2tldHMgZm9yIHRoZSBNQVAgcHJvZ3JhbSBhbmQgYXBwbHkgdGFncyB0byBpdCwgY3JlYXRlIGEgQ29zdCBhbmQgVXNhZ2UgUmVwb3J0LCBhbmQgZGVzY3JpYmUgQ29zdCBhbmQgVXNhZ2UgUmVwb3J0IGRlZmluaXRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NDb3N0QW5kVXNhZ2VSZXBvcnRBdXRvbWF0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nvc3RBbmRVc2FnZVJlcG9ydEF1dG9tYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHaXZlcyBEYXRhIEdyYW50IG93bmVycyBhY2Nlc3MgdG8gQVdTIERhdGEgRXhjaGFuZ2UgYWN0aW9ucyB1c2luZyB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhRXhjaGFuZ2VEYXRhR3JhbnRPd25lckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YUV4Y2hhbmdlRGF0YUdyYW50T3duZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR2l2ZXMgRGF0YSBHcmFudCByZWNlaXZlciBhY2Nlc3MgdG8gQVdTIERhdGEgRXhjaGFuZ2UgYWN0aW9ucyB1c2luZyB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhRXhjaGFuZ2VEYXRhR3JhbnRSZWNlaXZlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YUV4Y2hhbmdlRGF0YUdyYW50UmVjZWl2ZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFXUyBEYXRhIEV4Y2hhbmdlIGFuZCBBV1MgTWFya2V0cGxhY2UgYWN0aW9ucyB1c2luZyB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiBJdCBhbHNvIHByb3ZpZGVzIHNlbGVjdCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyBuZWVkZWQgdG8gdGFrZSBmdWxsIGFkdmFudGFnZSBvZiBBV1MgRGF0YSBFeGNoYW5nZS4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YUV4Y2hhbmdlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhRXhjaGFuZ2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGRhdGEgcHJvdmlkZXIgYWNjZXNzIHRvIEFXUyBEYXRhIEV4Y2hhbmdlIGFuZCBBV1MgTWFya2V0cGxhY2UgYWN0aW9ucyB1c2luZyB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiBJdCBhbHNvIHByb3ZpZGVzIHNlbGVjdCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyBuZWVkZWQgdG8gdGFrZSBmdWxsIGFkdmFudGFnZSBvZiBBV1MgRGF0YSBFeGNoYW5nZS4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YUV4Y2hhbmdlUHJvdmlkZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFFeGNoYW5nZVByb3ZpZGVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyByZWFkLW9ubHkgYWNjZXNzIHRvIEFXUyBEYXRhIEV4Y2hhbmdlIGFuZCBBV1MgTWFya2V0cGxhY2UgYWN0aW9ucyB1c2luZyB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhRXhjaGFuZ2VSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhRXhjaGFuZ2VSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgRGF0YSBFeGNoYW5nZSB0byBhY2Nlc3MgQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFXUyBEYXRhIEV4Y2hhbmdlIGZvciBsaWNlbnNlIG1hbmFnZW1lbnQuICovXG4gICAgcHVibGljIEFXU0RhdGFFeGNoYW5nZVNlcnZpY2VSb2xlUG9saWN5Rm9yTGljZW5zZU1hbmFnZW1lbnQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YUV4Y2hhbmdlU2VydmljZVJvbGVQb2xpY3lGb3JMaWNlbnNlTWFuYWdlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgRGF0YSBFeGNoYW5nZSB0byByZWFkIGRhdGEgYWJvdXQgeW91ciBBV1MgT3JnYW5pemF0aW9uIHRvIGRldGVybWluZSBlbGlnaWJpbGl0eSBmb3IgQVdTIERhdGEgRXhjaGFuZ2UgZGF0YSBncmFudHMgbGljZW5zZSBkaXN0cmlidXRpb24uICovXG4gICAgcHVibGljIEFXU0RhdGFFeGNoYW5nZVNlcnZpY2VSb2xlUG9saWN5Rm9yT3JnYW5pemF0aW9uRGlzY292ZXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFFeGNoYW5nZVNlcnZpY2VSb2xlUG9saWN5Rm9yT3JnYW5pemF0aW9uRGlzY292ZXJ5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGRhdGEgc3Vic2NyaWJlciBhY2Nlc3MgdG8gQVdTIERhdGEgRXhjaGFuZ2UgYW5kIEFXUyBNYXJrZXRwbGFjZSBhY3Rpb25zIHVzaW5nIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCBTREsuIEl0IGFsc28gcHJvdmlkZXMgc2VsZWN0IGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIG5lZWRlZCB0byB0YWtlIGZ1bGwgYWR2YW50YWdlIG9mIEFXUyBEYXRhIEV4Y2hhbmdlLiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhRXhjaGFuZ2VTdWJzY3JpYmVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhRXhjaGFuZ2VTdWJzY3JpYmVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIHRvIEFXUyBEYXRhIExpZmVjeWNsZSBNYW5hZ2VyIHRvIHRha2UgYWN0aW9ucyBvbiBBV1MgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFXU0RhdGFMaWZlY3ljbGVNYW5hZ2VyU2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YUxpZmVjeWNsZU1hbmFnZXJTZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIHRvIEFXUyBEYXRhIExpZmVjeWNsZSBNYW5hZ2VyIHRvIHRha2UgYWN0aW9ucyBvbiBBV1MgcmVzb3VyY2VzIGZvciBBTUkgTWFuYWdlbWVudCAqL1xuICAgIHB1YmxpYyBBV1NEYXRhTGlmZWN5Y2xlTWFuYWdlclNlcnZpY2VSb2xlRm9yQU1JTWFuYWdlbWVudCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhTGlmZWN5Y2xlTWFuYWdlclNlcnZpY2VSb2xlRm9yQU1JTWFuYWdlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEFtYXpvbiBEYXRhIExpZmVjeWNsZSBNYW5hZ2VyIHBlcm1pc3Npb24gdG8gcGVyZm9ybSB0aGUgU3lzdGVtcyBNYW5hZ2VyIGFjdGlvbnMgcmVxdWlyZWQgdG8gcnVuIHByZSBhbmQgcG9zdCBzY3JpcHRzIG9uIGFsbCBBbWF6b24gRUMyIGluc3RhbmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YUxpZmVjeWNsZU1hbmFnZXJTU01GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFMaWZlY3ljbGVNYW5hZ2VyU1NNRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIERhdGEgUGlwZWxpbmUsIGxpc3QgYWNjZXNzIGZvciBTMywgRHluYW1vREIsIFJlZHNoaWZ0LCBSRFMsIFNOUywgYW5kIElBTSByb2xlcywgYW5kIHBhc3NSb2xlIGFjY2VzcyBmb3IgZGVmYXVsdCBSb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YVBpcGVsaW5lRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhUGlwZWxpbmVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gRGF0YSBQaXBlbGluZSwgbGlzdCBhY2Nlc3MgZm9yIFMzLCBEeW5hbW9EQiwgUmVkc2hpZnQsIFJEUywgU05TLCBhbmQgSUFNIHJvbGVzLCBhbmQgcGFzc1JvbGUgYWNjZXNzIGZvciBkZWZhdWx0IFJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhUGlwZWxpbmVQb3dlclVzZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YVBpcGVsaW5lUG93ZXJVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIERhdGFTeW5jIERpc2NvdmVyeSB0byBpbnRlZ3JhdGUgd2l0aCBvdGhlciBBV1Mgc2VydmljZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0RhdGFTeW5jRGlzY292ZXJ5U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YVN5bmNEaXNjb3ZlcnlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBEYXRhU3luYyBhbmQgbWluaW1hbCBhY2Nlc3MgdG8gaXRzIGRlcGVuZGVuY2llcyAqL1xuICAgIHB1YmxpYyBBV1NEYXRhU3luY0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YVN5bmNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgRGF0YVN5bmMgKi9cbiAgICBwdWJsaWMgQVdTRGF0YVN5bmNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhU3luY1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIERhdGFTeW5jIHRvIGludGVncmF0ZSB3aXRoIG90aGVyIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhU3luY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFTeW5jU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBV1MgRGVhZGxpbmUgQ2xvdWQgd29ya2VycyB3aXRoIGFjY2VzcyB0byBydW4gdGFza3Mgb24gYSBmYXJtLiAqL1xuICAgIHB1YmxpYyBBV1NEZWFkbGluZUNsb3VkRmxlZXRXb3JrZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVhZGxpbmVDbG91ZEZsZWV0V29ya2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdXNlciB3b3Jrc3RhdGlvbiBhY2Nlc3MgdG8gQVdTIERlYWRsaW5lIENsb3VkIGZhcm1zIHdpdGggbGltaXRlZCBSZWFkLU9ubHkgcGVybWlzc2lvbnMgdG8gY2FsbCBvdGhlciBuZWNlc3Nhcnkgc2VydmljZXMuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB0aGUgdXNlciByb2xlIGFzc29jaWF0ZWQgd2l0aCB5b3VyIHN0dWRpby4gKi9cbiAgICBwdWJsaWMgQVdTRGVhZGxpbmVDbG91ZFVzZXJBY2Nlc3NGYXJtcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWFkbGluZUNsb3VkVXNlckFjY2Vzc0Zhcm1zKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdXNlciB3b3Jrc3RhdGlvbiBhY2Nlc3MgdG8gQVdTIERlYWRsaW5lIENsb3VkIGZsZWV0cyB3aXRoIGxpbWl0ZWQgUmVhZC1Pbmx5IHBlcm1pc3Npb25zIHRvIGNhbGwgb3RoZXIgbmVjZXNzYXJ5IHNlcnZpY2VzLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8gdGhlIHVzZXIgcm9sZSBhc3NvY2lhdGVkIHdpdGggeW91ciBzdHVkaW8uICovXG4gICAgcHVibGljIEFXU0RlYWRsaW5lQ2xvdWRVc2VyQWNjZXNzRmxlZXRzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlYWRsaW5lQ2xvdWRVc2VyQWNjZXNzRmxlZXRzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdXNlciB3b3Jrc3RhdGlvbiBhY2Nlc3MgdG8gQVdTIERlYWRsaW5lIENsb3VkIGpvYnMgd2l0aCBsaW1pdGVkIFJlYWQtT25seSBwZXJtaXNzaW9ucyB0byBjYWxsIG90aGVyIG5lY2Vzc2FyeSBzZXJ2aWNlcy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHRoZSB1c2VyIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHlvdXIgc3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBBV1NEZWFkbGluZUNsb3VkVXNlckFjY2Vzc0pvYnMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVhZGxpbmVDbG91ZFVzZXJBY2Nlc3NKb2JzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdXNlciB3b3Jrc3RhdGlvbiBhY2Nlc3MgdG8gQVdTIERlYWRsaW5lIENsb3VkIHF1ZXVlcyB3aXRoIGxpbWl0ZWQgUmVhZC1Pbmx5IHBlcm1pc3Npb25zIHRvIGNhbGwgb3RoZXIgbmVjZXNzYXJ5IHNlcnZpY2VzLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8gdGhlIHVzZXIgcm9sZSBhc3NvY2lhdGVkIHdpdGggeW91ciBzdHVkaW8uICovXG4gICAgcHVibGljIEFXU0RlYWRsaW5lQ2xvdWRVc2VyQWNjZXNzUXVldWVzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlYWRsaW5lQ2xvdWRVc2VyQWNjZXNzUXVldWVzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIGZvciBBV1MgRGVhZGxpbmUgQ2xvdWQgd29ya2VyIGhvc3RzIHRvIGpvaW4gYSBmbGVldCBpbiBhIGZhcm0uICovXG4gICAgcHVibGljIEFXU0RlYWRsaW5lQ2xvdWRXb3JrZXJIb3N0KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlYWRsaW5lQ2xvdWRXb3JrZXJIb3N0KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgc3BlY2lmaWVzIHBlcm1pc3Npb25zIHJlcXVpcmVkIGJ5IERlZXBMZW5zIEFkbWluaXN0cmF0aXZlIGxhbWJkYSBmdW5jdGlvbnMgdGhhdCBydW4gb24gYSBEZWVwTGVucyBkZXZpY2UgKi9cbiAgICBwdWJsaWMgQVdTRGVlcExlbnNMYW1iZGFGdW5jdGlvbkFjY2Vzc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWVwTGVuc0xhbWJkYUZ1bmN0aW9uQWNjZXNzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIEFXUyBEZWVwTGVucyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzLCByZXNvdXJjZXMgYW5kIHJvbGVzIG5lZWRlZCBieSBEZWVwTGVucyBhbmQgaXRzIGRlcGVuZGVuY2llcyBpbmNsdWRpbmcgSW9ULCBTMywgR3JlZW5HcmFzcyBhbmQgQVdTIExhbWJkYS4gKi9cbiAgICBwdWJsaWMgQVdTRGVlcExlbnNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWVwTGVuc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRGVlcFJhY2VyIGFkbWluIGFjY2VzcyB0byBhbGwgYWN0aW9ucyBpbmNsdWRpbmcgdG9nZ2xpbmcgYmV0d2VlbiBtdWx0aXVzZXIgYW5kIHNpbmdsZSB1c2VyIG1vZGUuICovXG4gICAgcHVibGljIEFXU0RlZXBSYWNlckFjY291bnRBZG1pbkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWVwUmFjZXJBY2NvdW50QWRtaW5BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQ2xvdWRGb3JtYXRpb24gdG8gY3JlYXRlIGFuZCBtYW5hZ2UgQVdTIHN0YWNrcyBhbmQgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NEZWVwUmFjZXJDbG91ZEZvcm1hdGlvbkFjY2Vzc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWVwUmFjZXJDbG91ZEZvcm1hdGlvbkFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIERlZXBSYWNlciBNdWx0aVVzZXIgRGVmYXVsdCB1c2VyIGFjY2VzcyB0byB1c2UgZGVlcHJhY2VyIGluIG11bHRpLXVzZXIgbW9kZSAqL1xuICAgIHB1YmxpYyBBV1NEZWVwUmFjZXJEZWZhdWx0TXVsdGlVc2VyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlZXBSYWNlckRlZmF1bHRNdWx0aVVzZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRGVlcFJhY2VyLiBBbHNvIHByb3ZpZGVzIHNlbGVjdCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyAoZS5nLiwgUzMpLiAqL1xuICAgIHB1YmxpYyBBV1NEZWVwUmFjZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlZXBSYWNlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgUm9ib01ha2VyIHRvIGNyZWF0ZSByZXF1aXJlZCByZXNvdXJjZXMgYW5kIGNhbGwgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NEZWVwUmFjZXJSb2JvTWFrZXJBY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVlcFJhY2VyUm9ib01ha2VyQWNjZXNzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIERlZXBSYWNlciB0byBjcmVhdGUgcmVxdWlyZWQgcmVzb3VyY2VzIGFuZCBjYWxsIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRGVlcFJhY2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVlcFJhY2VyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBEZW55IGFsbCBhY2Nlc3MuICovXG4gICAgcHVibGljIEFXU0RlbnlBbGwoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVueUFsbCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBBV1MgRGV2aWNlIEZhcm0gb3BlcmF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTRGV2aWNlRmFybUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGV2aWNlRmFybUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudCBwZXJtaXNzaW9ucyB0byBBV1MgRGV2aWNlIEZhcm0gdG8gY2FsbCBFQzIgTmV0d29yayBBUElzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NEZXZpY2VGYXJtU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGV2aWNlRmFybVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnQgcGVybWlzc2lvbnMgdG8gQVdTIERldmljZSBGYXJtIHRvIGNhbGwgRUMyIEFQSXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0RldmljZUZhcm1UZXN0R3JpZFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RldmljZUZhcm1UZXN0R3JpZFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIERpcmVjdCBDb25uZWN0IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTRGlyZWN0Q29ubmVjdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGlyZWN0Q29ubmVjdEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBEaXJlY3QgQ29ubmVjdCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0RpcmVjdENvbm5lY3RSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEaXJlY3RDb25uZWN0UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBV1MgRGlyZWN0IENvbm5lY3QgcGVybWlzc2lvbiB0byBjcmVhdGUgYW5kIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NEaXJlY3RDb25uZWN0U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGlyZWN0Q29ubmVjdFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIERpcmVjdG9yeSBTZXJ2aWNlIERhdGEuICovXG4gICAgcHVibGljIEFXU0RpcmVjdG9yeVNlcnZpY2VEYXRhRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEaXJlY3RvcnlTZXJ2aWNlRGF0YUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFXUyBEaXJlY3RvcnkgU2VydmljZSBEYXRhICovXG4gICAgcHVibGljIEFXU0RpcmVjdG9yeVNlcnZpY2VEYXRhUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGlyZWN0b3J5U2VydmljZURhdGFSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBEaXJlY3RvcnkgU2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTRGlyZWN0b3J5U2VydmljZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGlyZWN0b3J5U2VydmljZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBEaXJlY3RvcnkgU2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTRGlyZWN0b3J5U2VydmljZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RpcmVjdG9yeVNlcnZpY2VSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgdGhlIERpcmVjdG9yeSBTZXJ2aWNlIFNlcnZpY2UgTGlua2VkIFJvbGUgKi9cbiAgICBwdWJsaWMgQVdTRGlyZWN0b3J5U2VydmljZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RpcmVjdG9yeVNlcnZpY2VTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHdyaXRlIGFjY2VzcyB0byBBV1MgcmVzb3VyY2VzIHJlcXVpcmVkIGZvciBBV1MgRGlzY292ZXJ5IENvbnRpbnVvdXMgRXhwb3J0ICovXG4gICAgcHVibGljIEFXU0Rpc2NvdmVyeUNvbnRpbnVvdXNFeHBvcnRGaXJlaG9zZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEaXNjb3ZlcnlDb250aW51b3VzRXhwb3J0RmlyZWhvc2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgRE1TIEZsZWV0IEFkdmlzb3IgdG8gbWFuYWdlIENsb3VkV2F0Y2ggbWV0cmljcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRE1TRmxlZXRBZHZpc29yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRE1TRmxlZXRBZHZpc29yU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgQVdTIERNUyBTZXJ2ZXJsZXNzIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIERNUyByZXNvdXJjZXMgaW4geW91ciBhY2NvdW50IG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFXU0RNU1NlcnZlcmxlc3NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NETVNTZXJ2ZXJsZXNzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgRUMyIENhcGFjaXR5IE1hbmFnZXIgdG8gbWFuYWdlIGNhcGFjaXR5IHJlc291cmNlcyBhbmQgaW50ZWdyYXRlIHdpdGggQVdTIE9yZ2FuaXphdGlvbnMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0VDMkNhcGFjaXR5TWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VDMkNhcGFjaXR5TWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEVDMiBDYXBhY2l0eVJlc2VydmF0aW9uIEZsZWV0IHNlcnZpY2UgdG8gbWFuYWdlIENhcGFjaXR5IFJlc2VydmF0aW9ucyAqL1xuICAgIHB1YmxpYyBBV1NFQzJDYXBhY2l0eVJlc2VydmF0aW9uRmxlZXRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VDMkNhcGFjaXR5UmVzZXJ2YXRpb25GbGVldFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgRUMyIEZsZWV0IHRvIGxhdW5jaCBhbmQgbWFuYWdlIGluc3RhbmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTRUMyRmxlZXRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFQzJGbGVldFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEVDMiBTcG90IEZsZWV0IHRvIGxhdW5jaCBhbmQgbWFuYWdlIHNwb3QgZmxlZXQgaW5zdGFuY2VzICovXG4gICAgcHVibGljIEFXU0VDMlNwb3RGbGVldFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VDMlNwb3RGbGVldFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEVDMiBTcG90IHRvIGxhdW5jaCBhbmQgbWFuYWdlIHNwb3QgaW5zdGFuY2VzICovXG4gICAgcHVibGljIEFXU0VDMlNwb3RTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFQzJTcG90U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyBhdHRhY2hlZCB0byB0aGUgSUFNIHJvbGUgdGhhdCdzIGF0dGFjaGVkIHRvIHlvdXIgQW1hem9uIEVDMiBXaW5kb3dzIEluc3RhbmNlcyB0byBlbmFibGUgdGhlIEFtYXpvbiBFQzIgVlNTIHNvbHV0aW9uIHRvIGNyZWF0ZSBhbmQgYWRkIHRhZ3MgdG8gQW1hem9uIE1hY2hpbmUgSW1hZ2VzIChBTUkpIGFuZCBFQlMgU25hcHNob3RzLiAqL1xuICAgIHB1YmxpYyBBV1NFQzJWc3NTbmFwc2hvdFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFQzJWc3NTbmFwc2hvdFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBzZXJ2aWNlcyBhbmQgcmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBV1MgRUNSIHB1bGwgdGhyb3VnaCBjYWNoZSAqL1xuICAgIHB1YmxpYyBBV1NFQ1JQdWxsVGhyb3VnaENhY2hlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRUNSUHVsbFRocm91Z2hDYWNoZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSB0aGUgaW5zdGFuY2UgaW4geW91ciBjdXN0b20gcGxhdGZvcm0gYnVpbGRlciBlbnZpcm9ubWVudCBwZXJtaXNzaW9uIHRvIGxhdW5jaCBFQzIgaW5zdGFuY2UsIGNyZWF0ZSBFQlMgc25hcHNob3QgYW5kIEFNSSwgc3RyZWFtIGxvZ3MgdG8gQW1hem9uIENsb3VkV2F0Y2ggTG9ncywgYW5kIHN0b3JlIGFydGlmYWN0cyBpbiBBbWF6b24gUzMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtDdXN0b21QbGF0Zm9ybWZvckVDMlJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa0N1c3RvbVBsYXRmb3JtZm9yRUMyUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBFbGFzdGljIEJlYW5zdGFsayBTZXJ2aWNlIHBvbGljeSBmb3IgSGVhbHRoIE1vbml0b3Jpbmcgc3lzdGVtICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtFbmhhbmNlZEhlYWx0aCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrRW5oYW5jZWRIZWFsdGgpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgRWxhc3RpYyBCZWFuc3RhbGsgU2VydmljZSBSb2xlIHBvbGljeSB0aGF0IGdyYW50cyBsaW1pdGVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSB5b3VyIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZiBmb3IgbWFpbnRlbmFuY2UgcHVycG9zZXMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtNYWludGVuYW5jZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrTWFpbnRlbmFuY2UpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyBmb3IgdGhlIEFXUyBFbGFzdGljIEJlYW5zdGFsayBzZXJ2aWNlIHJvbGUgdXNlZCB0byBwZXJmb3JtIG1hbmFnZWQgdXBkYXRlcyBvZiBFbGFzdGljIEJlYW5zdGFsayBlbnZpcm9ubWVudHMuIFRoaXMgcG9saWN5IHNob3VsZCBub3QgYmUgYXR0YWNoZWQgdG8gb3RoZXIgdXNlcnMgb3Igcm9sZXMuIFRoZSBwb2xpY3kgZ3JhbnRzIGJyb2FkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHJlc291cmNlcyBhY3Jvc3MgYSBudW1iZXIgb2YgQVdTIHNlcnZpY2VzIGluY2x1ZGluZyBBdXRvU2NhbGluZywgRUMyLCBFQ1MsIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgYW5kIENsb3VkRm9ybWF0aW9uLiAgVGhpcyBwb2xpY3kgYWxzbyBhbGxvd3MgcGFzc2luZyBvZiBhbnkgSUFNIHJvbGUgdXNhYmxlIHdpdGggdGhvc2Ugc2VydmljZXMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtNYW5hZ2VkVXBkYXRlc0N1c3RvbWVyUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrTWFuYWdlZFVwZGF0ZXNDdXN0b21lclJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgRWxhc3RpYyBCZWFuc3RhbGsgU2VydmljZSBSb2xlIHBvbGljeSB0aGF0IGdyYW50cyBsaW1pdGVkIHBlcm1pc3Npb25zIHRvIG1hbmFnZWQgdXBkYXRlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0JlYW5zdGFsa01hbmFnZWRVcGRhdGVzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa01hbmFnZWRVcGRhdGVzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHRoZSBpbnN0YW5jZXMgaW4geW91ciBtdWx0aWNvbnRhaW5lciBEb2NrZXIgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHVzZSB0aGUgQW1hem9uIEVDMiBDb250YWluZXIgU2VydmljZSB0byBtYW5hZ2UgY29udGFpbmVyIGRlcGxveW1lbnQgdGFza3MuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtNdWx0aWNvbnRhaW5lckRvY2tlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrTXVsdGljb250YWluZXJEb2NrZXIpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcmVhZC1vbmx5IHBlcm1pc3Npb25zLiBFeHBsaWNpdGx5IGFsbG93cyBvcGVyYXRvcnMgdG8gZ2FpbiBkaXJlY3QgYWNjZXNzIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IHJlc291cmNlcyByZWxhdGVkIHRvIEFXUyBFbGFzdGljIEJlYW5zdGFsayBhcHBsaWNhdGlvbnMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBBV1NFbGFzdGljQmVhbnN0YWxrUm9sZUNvcmUgKEVsYXN0aWMgQmVhbnN0YWxrIG9wZXJhdGlvbnMgcm9sZSkgQWxsb3dzIGNvcmUgb3BlcmF0aW9uIG9mIGEgd2ViIHNlcnZpY2UgZW52aXJvbm1lbnQuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtSb2xlQ29yZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrUm9sZUNvcmUpO1xuICAgIH1cblxuICAgIC8qKiAoRWxhc3RpYyBCZWFuc3RhbGsgb3BlcmF0aW9ucyByb2xlKSBBbGxvd3MgYW4gZW52aXJvbm1lbnQgdG8gbWFuYWdlIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MgbG9nIGdyb3Vwcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVDV0woKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVDV0wpO1xuICAgIH1cblxuICAgIC8qKiAoRWxhc3RpYyBCZWFuc3RhbGsgb3BlcmF0aW9ucyByb2xlKSBBbGxvd3MgYSBtdWx0aWNvbnRhaW5lciBEb2NrZXIgZW52aXJvbm1lbnQgdG8gbWFuYWdlIEFtYXpvbiBFQ1MgY2x1c3RlcnMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtSb2xlRUNTKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtSb2xlRUNTKTtcbiAgICB9XG5cbiAgICAvKiogKEVsYXN0aWMgQmVhbnN0YWxrIG9wZXJhdGlvbnMgcm9sZSkgQWxsb3dzIGFuIGVudmlyb25tZW50IHRvIGludGVncmF0ZSBhbiBBbWF6b24gUkRTIGluc3RhbmNlLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrUm9sZVJEUygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrUm9sZVJEUyk7XG4gICAgfVxuXG4gICAgLyoqIChFbGFzdGljIEJlYW5zdGFsayBvcGVyYXRpb25zIHJvbGUpIEFsbG93cyBhbiBlbnZpcm9ubWVudCB0byBlbmFibGUgQW1hem9uIFNOUyB0b3BpYyBpbnRlZ3JhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVTTlMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVTTlMpO1xuICAgIH1cblxuICAgIC8qKiAoRWxhc3RpYyBCZWFuc3RhbGsgb3BlcmF0aW9ucyByb2xlKSBBbGxvd3MgYSB3b3JrZXIgZW52aXJvbm1lbnQgdGllciB0byBjcmVhdGUgYW4gQW1hem9uIER5bmFtb0RCIHRhYmxlIGFuZCBhbiBBbWF6b24gU1FTIHF1ZXVlLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrUm9sZVdvcmtlclRpZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVXb3JrZXJUaWVyKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgb24gYSBkZXByZWNhdGlvbiBwYXRoLiBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgZ3VpZGFuY2U6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljYmVhbnN0YWxrL2xhdGVzdC9kZy9pYW0tc2VydmljZXJvbGUuaHRtbC4gQVdTIEVsYXN0aWMgQmVhbnN0YWxrIFNlcnZpY2Ugcm9sZSBwb2xpY3kgd2hpY2ggZ3JhbnRzIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSAmIG1hbmFnZSByZXNvdXJjZXMgKGkuZS46IEF1dG9TY2FsaW5nLCBFQzIsIFMzLCBDbG91ZEZvcm1hdGlvbiwgRUxCLCBldGMuKSBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0JlYW5zdGFsa1NlcnZpY2UoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa1NlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgRWxhc3RpYyBCZWFuc3RhbGsgU2VydmljZSBMaW5rZWQgUm9sZSBwb2xpY3kgd2hpY2ggZ3JhbnRzIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSAmIG1hbmFnZSByZXNvdXJjZXMgKGkuZS46IEF1dG9TY2FsaW5nLCBFQzIsIFMzLCBDbG91ZEZvcm1hdGlvbiwgRUxCLCBldGMuKSBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0JlYW5zdGFsa1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgdGhlIGluc3RhbmNlcyBpbiB5b3VyIHdlYiBzZXJ2ZXIgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHVwbG9hZCBsb2cgZmlsZXMgdG8gQW1hem9uIFMzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrV2ViVGllcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrV2ViVGllcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgdGhlIGluc3RhbmNlcyBpbiB5b3VyIHdvcmtlciBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdXBsb2FkIGxvZyBmaWxlcyB0byBBbWF6b24gUzMsIHRvIHVzZSBBbWF6b24gU1FTIHRvIG1vbml0b3IgeW91ciBhcHBsaWNhdGlvbidzIGpvYiBxdWV1ZSwgdG8gdXNlIEFtYXpvbiBEeW5hbW9EQiB0byBwZXJmb3JtIGxlYWRlciBlbGVjdGlvbiwgYW5kIHRvIEFtYXpvbiBDbG91ZFdhdGNoIHRvIHB1Ymxpc2ggbWV0cmljcyBmb3IgaGVhbHRoIG1vbml0b3JpbmcuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtXb3JrZXJUaWVyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtXb3JrZXJUaWVyKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIGluc3RhbGxpbmcgdGhlIEFXUyBSZXBsaWNhdGlvbiBBZ2VudCwgd2hpY2ggaXMgdXNlZCB3aXRoIEFXUyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChEUlMpIHRvIHJlY292ZXIgZXh0ZXJuYWwgc2VydmVycyB0byBBV1MuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcyB3aG9zZSBjcmVkZW50aWFscyB5b3UgcHJvdmlkZSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBzdGVwIG9mIHRoZSBBV1MgUmVwbGljYXRpb24gQWdlbnQuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5QWdlbnRJbnN0YWxsYXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlBZ2VudEluc3RhbGxhdGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyB1c2luZyB0aGUgQVdTIFJlcGxpY2F0aW9uIEFnZW50LCB3aGljaCBpcyB1c2VkIHdpdGggQVdTIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgKERSUykgdG8gcmVjb3ZlciBzb3VyY2Ugc2VydmVycyB0byBBV1MuIFdlIGRvIG5vdCByZWNvbW1lbmQgdGhhdCB5b3UgYXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUFnZW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5QWdlbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgcHVibGljIEFQSXMgb2YgQVdTIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgKERSUyksIGFzIHdlbGwgYXMgcGVybWlzc2lvbnMgdG8gcmVhZCBLTVMga2V5LCBMaWNlbnNlIE1hbmFnZXIsIFJlc291cmNlIEdyb3VwcywgRWxhc3RpYyBMb2FkIEJhbGFuY2luZywgSUFNLCBhbmQgRUMyIGluZm9ybWF0aW9uLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5Q29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBwdWJsaWMgQVBJcyBvZiBBV1MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoQVdTIERSUyksIGFzIHdlbGwgYXMgYWxsIHB1YmxpYyBBUElzIGluIG90aGVyIEFXUyBzZXJ2aWNlcyB1c2VkIGJ5IEFXUyBEUlMgQ29uc29sZS4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgdXNlcnMgb3Igcm9sZXMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5Q29uc29sZUZ1bGxBY2Nlc3NWMigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUNvbnNvbGVGdWxsQWNjZXNzVjIpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyBhdHRhY2hlZCB0byB0aGUgQVdTIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgQ29udmVyc2lvbiBzZXJ2ZXIncyBpbnN0YW5jZSByb2xlLiBUaGlzIHBvbGljeSBhbGxvd3MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSBDb252ZXJzaW9uIFNlcnZlcnMsIHdoaWNoIGFyZSBFQzIgaW5zdGFuY2VzIGxhdW5jaGVkIGJ5IEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnksIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIERSUyBzZXJ2aWNlLiBBbiBJQU0gcm9sZSB3aXRoIHRoaXMgcG9saWN5IGlzIGF0dGFjaGVkIChhcyBhbiBFQzIgSW5zdGFuY2UgUHJvZmlsZSkgYnkgRFJTIHRvIHRoZSBEUlMgQ29udmVyc2lvbiBTZXJ2ZXJzLCB3aGljaCBhcmUgYXV0b21hdGljYWxseSBsYXVuY2hlZCBhbmQgdGVybWluYXRlZCBieSBEUlMsIHdoZW4gbmVlZGVkLiBXZSBkbyBub3QgcmVjb21tZW5kIHRoYXQgeW91IGF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gRFJTIENvbnZlcnNpb24gU2VydmVycyBhcmUgdXNlZCBieSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IHdoZW4gdXNlcnMgY2hvb3NlIHRvIHJlY292ZXIgc291cmNlIHNlcnZlcnMgdXNpbmcgdGhlIERSUyBjb25zb2xlLCBDTEksIG9yIEFQSS4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlDb252ZXJzaW9uU2VydmVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5Q29udmVyc2lvblNlcnZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBBV1MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSB0byBzdXBwb3J0IGNyb3NzLWFjY291bnQgcmVwbGljYXRpb24gYW5kIGNyb3NzLWFjY291bnQgZmFpbGJhY2suICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5Q3Jvc3NBY2NvdW50UmVwbGljYXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlDcm9zc0FjY291bnRSZXBsaWNhdGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBpbnN0YWxsaW5nIGFuZCB1c2luZyB0aGUgQVdTIFJlcGxpY2F0aW9uIEFnZW50LCB3aGljaCBpcyB1c2VkIGJ5IEFXUyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChEUlMpIHRvIHJlY292ZXIgc291cmNlIHNlcnZlcnMgdGhhdCBydW4gb24gRUMyIChjcm9zcy1yZWdpb24gb3IgY3Jvc3MtQVopLiBBbiBJQU0gcm9sZSB3aXRoIHRoaXMgcG9saWN5IHNob3VsZCBiZSBhdHRhY2hlZCAoYXMgYW4gRUMyIEluc3RhbmNlIFByb2ZpbGUpIHRvIHRoZSBFQzIgSW5zdGFuY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUVjMkluc3RhbmNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5RWMySW5zdGFuY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBZb3UgY2FuIGF0dGFjaCB0aGUgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlGYWlsYmFja0luc3RhbGxhdGlvblBvbGljeSBwb2xpY3kgdG8geW91ciBJQU0gaWRlbnRpdGllcy4gIFRoaXMgcG9saWN5IGFsbG93cyBpbnN0YWxsaW5nIHRoZSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IEZhaWxiYWNrIENsaWVudCwgd2hpY2ggaXMgdXNlZCB0byBmYWlsYmFjayBSZWNvdmVyeSBJbnN0YW5jZXMgYmFjayB0byB5b3VyIG9yaWdpbmFsIHNvdXJjZSBpbmZyYXN0cnVjdHVyZS4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzIHdob3NlIGNyZWRlbnRpYWxzIHlvdSBwcm92aWRlIHdoZW4gcnVubmluZyB0aGUgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSBGYWlsYmFjayBDbGllbnQuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5RmFpbGJhY2tJbnN0YWxsYXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlGYWlsYmFja0luc3RhbGxhdGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyB1c2luZyB0aGUgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSBGYWlsYmFjayBDbGllbnQsIHdoaWNoIGlzIHVzZWQgdG8gZmFpbGJhY2sgUmVjb3ZlcnkgSW5zdGFuY2VzIGJhY2sgdG8geW91ciBvcmlnaW5hbCBzb3VyY2UgaW5mcmFzdHJ1Y3R1cmUuIFdlIGRvIG5vdCByZWNvbW1lbmQgdGhhdCB5b3UgYXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUZhaWxiYWNrUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5RmFpbGJhY2tQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgeW91IHRvIHVzZSBBbWF6b24gU1NNIGFuZCBhZGRpdGlvbmFsIHNlcnZpY2VzIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHJ1biBwb3N0LWxhdW5jaCBhY3Rpb25zIGluIEFXUyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChBV1MgRFJTKS4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHJvbGVzIG9yIHVzZXJzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUxhdW5jaEFjdGlvbnNQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlMYXVuY2hBY3Rpb25zUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIEFXUyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChEUlMpIHRvIHN1cHBvcnQgbmV0d29yayByZXBsaWNhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlOZXR3b3JrUmVwbGljYXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlOZXR3b3JrUmVwbGljYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBZb3UgY2FuIGF0dGFjaCB0aGUgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlSZWFkT25seUFjY2VzcyBwb2xpY3kgdG8geW91ciBJQU0gaWRlbnRpdGllcy4gIFRoaXMgcG9saWN5IHByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGFsbCByZWFkLW9ubHkgcHVibGljIEFQSXMgb2YgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSwgYXMgd2VsbCBhcyBzb21lIHJlYWQtb25seSBBUElzIG9mIG90aGVyIEFXUyBzZXJ2aWNlcyB0aGF0IGFyZSByZXF1aXJlZCBpbiBvcmRlciB0byBtYWtlIGZ1bGwgcmVhZC1vbmx5IHVzZSBvZiB0aGUgRFJTIGNvbnNvbGUuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgdG8gdGhlIGluc3RhbmNlIHJvbGUgb2YgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSdzIFJlY292ZXJ5IEluc3RhbmNlLiAgVGhpcyBwb2xpY3kgYWxsb3dzIHRoZSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChEUlMpIFJlY292ZXJ5IEluc3RhbmNlLCB3aGljaCBhcmUgRUMyIGluc3RhbmNlcyBsYXVuY2hlZCBieSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IC0gdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgRFJTIHNlcnZpY2UsIGFuZCB0byBiZSBhYmxlIHRvIGZhaWxiYWNrIHRvIHRoZWlyIG9yaWdpbmFsIHNvdXJjZSBpbmZyYXN0cnVjdHVyZS4gQW4gSUFNIHJvbGUgd2l0aCB0aGlzIHBvbGljeSBpcyBhdHRhY2hlZCAoYXMgYW4gRUMyIEluc3RhbmNlIFByb2ZpbGUpIGJ5IEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgdG8gdGhlIERSUyBSZWNvdmVyeSBJbnN0YW5jZXMuIFdlIGRvIG5vdCByZWNvbW1lbmQgdGhhdCB5b3UgYXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeVJlY292ZXJ5SW5zdGFuY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlSZWNvdmVyeUluc3RhbmNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgdG8gdGhlIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgUmVwbGljYXRpb24gc2VydmVyJ3MgaW5zdGFuY2Ugcm9sZS4gVGhpcyBwb2xpY3kgYWxsb3dzIHRoZSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChEUlMpIFJlcGxpY2F0aW9uIFNlcnZlcnMsIHdoaWNoIGFyZSBFQzIgaW5zdGFuY2VzIGxhdW5jaGVkIGJ5IEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgLSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBEUlMgc2VydmljZSwgYW5kIHRvIGNyZWF0ZSBFQlMgc25hcHNob3RzIGluIHlvdXIgQVdTIGFjY291bnQuIEFuIElBTSByb2xlIHdpdGggdGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgKGFzIGFuIEVDMiBJbnN0YW5jZSBQcm9maWxlKSBieSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IHRvIHRoZSBEUlMgUmVwbGljYXRpb24gU2VydmVycyB3aGljaCBhcmUgYXV0b21hdGljYWxseSBsYXVuY2hlZCBhbmQgdGVybWluYXRlZCBieSBEUlMsIGFzIG5lZWRlZC4gRFJTIFJlcGxpY2F0aW9uIFNlcnZlcnMgYXJlIHVzZWQgdG8gZmFjaWxpdGF0ZSBkYXRhIHJlcGxpY2F0aW9uIGZyb20geW91ciBleHRlcm5hbCBzZXJ2ZXJzIHRvIEFXUywgYXMgcGFydCBvZiB0aGUgcmVjb3ZlcnkgcHJvY2VzcyBtYW5hZ2VkIGJ5IERSUy4gV2UgZG8gbm90IHJlY29tbWVuZCB0aGF0IHlvdSBhdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5UmVwbGljYXRpb25TZXJ2ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlSZXBsaWNhdGlvblNlcnZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IHRvIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSByZXNvdXJjZXMgc3VjaCBhcyBzb3VyY2Ugc2VydmVycyBhbmQgam9icy4gSXQgYWxzbyBhbGxvd3MgY3JlYXRpbmcgYSBjb252ZXJ0ZWQgc25hcHNob3QgYW5kIHNoYXJpbmcgdGhhdCBFQlMgc25hcHNob3Qgd2l0aCBhIHNwZWNpZmljIGFjY291bnQuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5U3RhZ2luZ0FjY291bnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlTdGFnaW5nQWNjb3VudFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIHVzZWQgYnkgQVdTIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgKERSUykgdG8gcmVjb3ZlciBzb3VyY2Ugc2VydmVycyBpbnRvIGEgc2VwYXJhdGUgdGFyZ2V0IGFjY291bnQgYW5kIHRvIGFsbG93IGZhaWxpbmcgYmFjay4gV2UgZG8gbm90IHJlY29tbWVuZCB0aGF0IHlvdSBhdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5U3RhZ2luZ0FjY291bnRQb2xpY3lWMigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeVN0YWdpbmdBY2NvdW50UG9saWN5VjIpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIExpbmtlZCBSb2xlIFBvbGljeSBmb3IgQVdTIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgQ29udHJvbCBQbGFuZSAtIENsYXNzaWMgKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0xvYWRCYWxhbmNpbmdDbGFzc2ljU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0xvYWRCYWxhbmNpbmdDbGFzc2ljU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIExpbmtlZCBSb2xlIFBvbGljeSBmb3IgQVdTIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgQ29udHJvbCBQbGFuZSAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljTG9hZEJhbGFuY2luZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNMb2FkQmFsYW5jaW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhQ29ubmVjdCByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0VsZW1lbnRhbE1lZGlhQ29ubmVjdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFDb25uZWN0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIEVsZW1lbnRhbCBNZWRpYUNvbm5lY3QgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYUNvbm5lY3RSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYUNvbm5lY3RSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBFbGVtZW50YWwgTWVkaWFDb252ZXJ0IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYUNvbnZlcnRGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsZW1lbnRhbE1lZGlhQ29udmVydEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBFbGVtZW50YWwgTWVkaWFDb252ZXJ0IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYUNvbnZlcnRSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYUNvbnZlcnRSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBFbGVtZW50YWwgTWVkaWFMaXZlIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYUxpdmVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsZW1lbnRhbE1lZGlhTGl2ZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBFbGVtZW50YWwgTWVkaWFMaXZlIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYUxpdmVSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYUxpdmVSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBFbGVtZW50YWwgTWVkaWFQYWNrYWdlIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYVBhY2thZ2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsZW1lbnRhbE1lZGlhUGFja2FnZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBFbGVtZW50YWwgTWVkaWFQYWNrYWdlIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYVBhY2thZ2VSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYVBhY2thZ2VSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBFbGVtZW50YWwgTWVkaWFQYWNrYWdlVjIgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYVBhY2thZ2VWMkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFQYWNrYWdlVjJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhUGFja2FnZVYyIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFQYWNrYWdlVjJSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYVBhY2thZ2VWMlJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gYWxsIE1lZGlhU3RvcmUgQVBJcyAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYVN0b3JlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYVN0b3JlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBwZXJtaXNzaW9ucyBmb3IgTWVkaWFTdG9yZSBBUElzICovXG4gICAgcHVibGljIEFXU0VsZW1lbnRhbE1lZGlhU3RvcmVSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYVN0b3JlUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhVGFpbG9yIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYVRhaWxvckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFUYWlsb3JGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhVGFpbG9yIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYVRhaWxvclJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsZW1lbnRhbE1lZGlhVGFpbG9yUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIGVuaGFuY2VkIGNsYXNzaWMgbmV0d29ya2luZyBtYW5hZ2VtZW50IGZlYXR1cmUuICovXG4gICAgcHVibGljIEFXU0VuaGFuY2VkQ2xhc3NpY05ldHdvcmtpbmdNYW5nZW1lbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRW5oYW5jZWRDbGFzc2ljTmV0d29ya2luZ01hbmdlbWVudFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGNvbnNvbGUgZnVsbCBhY2Nlc3MgdG8gQVdTIEVudGl0eSBSZXNvbHV0aW9uIGFuZCByZWxhdGVkIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NFbnRpdHlSZXNvbHV0aW9uQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRW50aXR5UmVzb2x1dGlvbkNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgRW50aXR5IFJlc29sdXRpb24gdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NFbnRpdHlSZXNvbHV0aW9uQ29uc29sZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VudGl0eVJlc29sdXRpb25Db25zb2xlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgdGhlIEZhdWx0IEluamVjdGlvbiBTaW11bGF0b3IgU2VydmljZSBwZXJtaXNzaW9uIGluIEVDMiBhbmQgb3RoZXIgcmVxdWlyZWQgc2VydmljZXMgdG8gcGVyZm9ybSBGSVMgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTRmF1bHRJbmplY3Rpb25TaW11bGF0b3JFQzJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRmF1bHRJbmplY3Rpb25TaW11bGF0b3JFQzJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgdGhlIEZhdWx0IEluamVjdGlvbiBTaW11bGF0b3IgU2VydmljZSBwZXJtaXNzaW9uIGluIEVDUyBhbmQgb3RoZXIgcmVxdWlyZWQgc2VydmljZXMgdG8gcGVyZm9ybSBGSVMgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTRmF1bHRJbmplY3Rpb25TaW11bGF0b3JFQ1NBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRmF1bHRJbmplY3Rpb25TaW11bGF0b3JFQ1NBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgdGhlIEZhdWx0IEluamVjdGlvbiBTaW11bGF0b3IgU2VydmljZSBwZXJtaXNzaW9uIGluIEVLUyBhbmQgb3RoZXIgcmVxdWlyZWQgc2VydmljZXMgdG8gcGVyZm9ybSBGSVMgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTRmF1bHRJbmplY3Rpb25TaW11bGF0b3JFS1NBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRmF1bHRJbmplY3Rpb25TaW11bGF0b3JFS1NBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgdGhlIEZhdWx0IEluamVjdGlvbiBTaW11bGF0b3IgU2VydmljZSBwZXJtaXNzaW9uIGluIEVDMiBuZXR3b3JraW5nIGFuZCBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcyB0byBwZXJmb3JtIEZJUyBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NGYXVsdEluamVjdGlvblNpbXVsYXRvck5ldHdvcmtBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRmF1bHRJbmplY3Rpb25TaW11bGF0b3JOZXR3b3JrQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHRoZSBGYXVsdCBJbmplY3Rpb24gU2ltdWxhdG9yIFNlcnZpY2UgcGVybWlzc2lvbiBpbiBSRFMgYW5kIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzIHRvIHBlcmZvcm0gRklTIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yUkRTQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yUkRTQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHRoZSBGYXVsdCBJbmplY3Rpb24gU2ltdWxhdG9yIFNlcnZpY2UgcGVybWlzc2lvbiBpbiBTU00gYW5kIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzIHRvIHBlcmZvcm0gRklTIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yU1NNQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yU1NNQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGVuYWJsZSBhY2Nlc3MgdG8gQVdTIFNlcnZpY2UgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIEZpblNwYWNlICovXG4gICAgcHVibGljIEFXU0ZpblNwYWNlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRmluU3BhY2VTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bGwgYWNjZXNzIGZvciBBV1MgRk0gQWRtaW5pc3RyYXRvciAqL1xuICAgIHB1YmxpYyBBV1NGTUFkbWluRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NGTUFkbWluRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFJlYWQgb25seSBhY2Nlc3MgZm9yIEFXUyBGTSBBZG1pbmlzdHJhdG9yIHRoYXQgYWxsb3dzIG1vbml0b3JpbmcgQVdTIEZNIG9wZXJhdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTRk1BZG1pblJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZNQWRtaW5SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIFdBRiBhY3Rpb25zIGZvciBBV1MgRmlyZXdhbGwgTWFuYWdlciBtZW1iZXIgYWNjb3VudHMgKi9cbiAgICBwdWJsaWMgQVdTRk1NZW1iZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NGTU1lbWJlclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogTWFuYWdlZCBwb2xpY3kgZm9yIEFXUyBGb3IgV29yZHByZXNzIFBsdWdpbiAqL1xuICAgIHB1YmxpYyBBV1NGb3JXb3JkUHJlc3NQbHVnaW5Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRm9yV29yZFByZXNzUGx1Z2luUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHdoaWNoIGFsbG93cyBBV1MgQ29kZSBDb25uZWN0aW9ucyB0byBzeW5jIGNvbnRlbnQgZnJvbSB5b3VyIGdpdCByZXBvc2l0b3J5ICovXG4gICAgcHVibGljIEFXU0dpdFN5bmNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHaXRTeW5jU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQVdTIEdsb2JhbCBBY2NlbGVyYXRvciB0byBtYW5hZ2UgRUMyIEVsYXN0aWMgTmV0d29yayBJbnRlcmZhY2VzIGFuZCBTZWN1cml0eSBHcm91cHMuICovXG4gICAgcHVibGljIEFXU0dsb2JhbEFjY2VsZXJhdG9yU0xSUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dsb2JhbEFjY2VsZXJhdG9yU0xSUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIEdsdWUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlICovXG4gICAgcHVibGljIEFXU0dsdWVDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHbHVlQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgR2x1ZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIGFjY2VzcyB0byBzYWdlbWFrZXIgbm90ZWJvb2sgaW5zdGFuY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NHbHVlQ29uc29sZVNhZ2VNYWtlck5vdGVib29rRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHbHVlQ29uc29sZVNhZ2VNYWtlck5vdGVib29rRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBHbHVlIERhdGFCcmV3IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gQWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgKGUuZy4sIFMzLCBLTVMsIEdsdWUpLiAqL1xuICAgIHB1YmxpYyBBd3NHbHVlRGF0YUJyZXdGdWxsQWNjZXNzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkF3c0dsdWVEYXRhQnJld0Z1bGxBY2Nlc3NQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbiB0byBnbHVlIHRvIHBlcmZvcm0gYWN0aW9uIG9uIHVzZXIncyBnbHVlIGRhdGEgY2F0YWxvZywgdGhpcyBwb2xpY3kgYWxzbyBwcm92aWRlcyBwZXJtaXNzaW9uIHRvIGVjMiBhY3Rpb25zIHRvIGFsbG93IGdsdWUgdG8gY3JlYXRlIEVOSSB0byBjb25uZWN0IHRvIHJlc291cmNlcyBpbiB0aGUgVlBDLCBhbHNvIGFsbG93IGdsdWUgdG8gYWNjZXNzIHJlZ2lzdGVyZWQgZGF0YSBpbiBsYWtlZm9ybWF0aW9uIGFuZCBwZXJtaXNzaW9uIHRvIGFjY2VzcyB1c2VyJ3MgY2xvdWR3YXRjaCAqL1xuICAgIHB1YmxpYyBBV1NHbHVlRGF0YUJyZXdTZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHbHVlRGF0YUJyZXdTZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBV1MgR2x1ZSBTY2hlbWEgUmVnaXN0cnkgU2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NHbHVlU2NoZW1hUmVnaXN0cnlGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dsdWVTY2hlbWFSZWdpc3RyeUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkb25seSBhY2Nlc3MgdG8gdGhlIEFXUyBHbHVlIFNjaGVtYSBSZWdpc3RyeSBTZXJ2aWNlICovXG4gICAgcHVibGljIEFXU0dsdWVTY2hlbWFSZWdpc3RyeVJlYWRvbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dsdWVTY2hlbWFSZWdpc3RyeVJlYWRvbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBV1MgR2x1ZSBzZXJ2aWNlIHJvbGUgd2hpY2ggYWxsb3dzIGN1c3RvbWVyIHRvIG1hbmFnZSBub3RlYm9vayBzZXJ2ZXIgKi9cbiAgICBwdWJsaWMgQVdTR2x1ZVNlcnZpY2VOb3RlYm9va1JvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR2x1ZVNlcnZpY2VOb3RlYm9va1JvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIEFXUyBHbHVlIHNlcnZpY2Ugcm9sZSB3aGljaCBhbGxvd3MgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIEVDMiwgUzMsIGFuZCBDbG91ZHdhdGNoIExvZ3MgKi9cbiAgICBwdWJsaWMgQVdTR2x1ZVNlcnZpY2VSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dsdWVTZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3dzIHVzZXJzIHRvIGNyZWF0ZSBhbmQgdXNlIG9ubHkgdGhlIG5vdGVib29rIHNlc3Npb25zIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlci4gVGhpcyBwb2xpY3kgYWxzbyBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byBleHBsaWNpdGx5IGFsbG93IHVzZXJzIHRvIHBhc3MgYSByZXN0cmljdGVkIEdsdWUgc2Vzc2lvbiByb2xlLiAqL1xuICAgIHB1YmxpYyBBd3NHbHVlU2Vzc2lvblVzZXJSZXN0cmljdGVkTm90ZWJvb2tQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXdzR2x1ZVNlc3Npb25Vc2VyUmVzdHJpY3RlZE5vdGVib29rUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIEFXUyBHbHVlIHJlc291cmNlcyBleGNlcHQgZm9yIHNlc3Npb25zLiBBbGxvd3MgdXNlcnMgdG8gY3JlYXRlIGFuZCB1c2Ugb25seSB0aGUgbm90ZWJvb2sgc2Vzc2lvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyLiBUaGlzIHBvbGljeSBhbHNvIGluY2x1ZGVzIG90aGVyIHBlcm1pc3Npb25zIG5lZWRlZCBieSBBV1MgR2x1ZSB0byBtYW5hZ2UgR2x1ZSByZXNvdXJjZXMgaW4gb3RoZXIgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBd3NHbHVlU2Vzc2lvblVzZXJSZXN0cmljdGVkTm90ZWJvb2tTZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Bd3NHbHVlU2Vzc2lvblVzZXJSZXN0cmljdGVkTm90ZWJvb2tTZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3dzIHVzZXJzIHRvIGNyZWF0ZSBhbmQgdXNlIG9ubHkgdGhlIGludGVyYWN0aXZlIHNlc3Npb25zIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlci4gVGhpcyBwb2xpY3kgYWxzbyBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byBleHBsaWNpdGx5IGFsbG93IHVzZXJzIHRvIHBhc3MgYSByZXN0cmljdGVkIEdsdWUgc2Vzc2lvbiByb2xlLiAqL1xuICAgIHB1YmxpYyBBd3NHbHVlU2Vzc2lvblVzZXJSZXN0cmljdGVkUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkF3c0dsdWVTZXNzaW9uVXNlclJlc3RyaWN0ZWRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgQVdTIEdsdWUgcmVzb3VyY2VzIGV4Y2VwdCBmb3Igc2Vzc2lvbnMuIEFsbG93cyB1c2VycyB0byBjcmVhdGUgYW5kIHVzZSBvbmx5IHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9ucyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIuIFRoaXMgcG9saWN5IGFsc28gaW5jbHVkZXMgb3RoZXIgcGVybWlzc2lvbnMgbmVlZGVkIGJ5IEFXUyBHbHVlIHRvIG1hbmFnZSBHbHVlIHJlc291cmNlcyBpbiBvdGhlciBBV1Mgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQXdzR2x1ZVNlc3Npb25Vc2VyUmVzdHJpY3RlZFNlcnZpY2VSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkF3c0dsdWVTZXNzaW9uVXNlclJlc3RyaWN0ZWRTZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB3aXRoaW4gQW1hem9uIEdyYWZhbmEgdG8gY3JlYXRlIGFuZCBtYW5hZ2Ugd29ya3NwYWNlcyBmb3IgdGhlIGVudGlyZSBvcmdhbml6YXRpb24uICovXG4gICAgcHVibGljIEFXU0dyYWZhbmFBY2NvdW50QWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHcmFmYW5hQWNjb3VudEFkbWluaXN0cmF0b3IpO1xuICAgIH1cblxuICAgIC8qKiBBY2Nlc3MgdG8gcmVhZCBvbmx5IG9wZXJhdGlvbnMgaW4gQW1hem9uIEdyYWZhbmEuICovXG4gICAgcHVibGljIEFXU0dyYWZhbmFDb25zb2xlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR3JhZmFuYUNvbnNvbGVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIG9ubHkgdGhlIGFiaWxpdHkgdG8gdXBkYXRlIHVzZXIgYW5kIGdyb3VwIHBlcm1pc3Npb25zIGZvciBBV1MgR3JhZmFuYSB3b3Jrc3BhY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NHcmFmYW5hV29ya3NwYWNlUGVybWlzc2lvbk1hbmFnZW1lbnQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR3JhZmFuYVdvcmtzcGFjZVBlcm1pc3Npb25NYW5hZ2VtZW50KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWJpbGl0eSB0byB1cGRhdGUgSUFNIElkZW50aXR5IENlbnRlciAoSWRDKSB1c2VyIGFuZCBncm91cCBwZXJtaXNzaW9ucyBmb3IgQW1hem9uIE1hbmFnZWQgR3JhZmFuYSB3b3Jrc3BhY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NHcmFmYW5hV29ya3NwYWNlUGVybWlzc2lvbk1hbmFnZW1lbnRWMigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHcmFmYW5hV29ya3NwYWNlUGVybWlzc2lvbk1hbmFnZW1lbnRWMik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdpdmVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBV1MgR3JlZW5ncmFzcyBjb25maWd1cmF0aW9uLCBtYW5hZ2VtZW50IGFuZCBkZXBsb3ltZW50IGFjdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTR3JlZW5ncmFzc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR3JlZW5ncmFzc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBnaXZlcyByZWFkIG9ubHkgYWNjZXNzIHRvIHRoZSBBV1MgR3JlZW5ncmFzcyBjb25maWd1cmF0aW9uLCBtYW5hZ2VtZW50IGFuZCBkZXBsb3ltZW50IGFjdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTR3JlZW5ncmFzc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dyZWVuZ3Jhc3NSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgQVdTIEdyZWVuZ3Jhc3Mgc2VydmljZSByb2xlIHdoaWNoIGFsbG93cyBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgQVdTIExhbWJkYSBhbmQgQVdTIElvVCB0aGluZyBzaGFkb3dzLiAqL1xuICAgIHB1YmxpYyBBV1NHcmVlbmdyYXNzUmVzb3VyY2VBY2Nlc3NSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dyZWVuZ3Jhc3NSZXNvdXJjZUFjY2Vzc1JvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgRGF0YWZsb3cgRW5kcG9pbnQgSW5zdGFuY2UgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBBV1MgR3JvdW5kIFN0YXRpb24gQWdlbnQgKi9cbiAgICBwdWJsaWMgQVdTR3JvdW5kU3RhdGlvbkFnZW50SW5zdGFuY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR3JvdW5kU3RhdGlvbkFnZW50SW5zdGFuY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIEhlYWx0aCB0byBlbmFibGUgdGhlIEhlYWx0aCBldmVudCBwcm9jZXNzb3IgZmVhdHVyZS4gKi9cbiAgICBwdWJsaWMgQVdTSGVhbHRoRXZlbnRQcm9jZXNzb3JTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NIZWFsdGhFdmVudFByb2Nlc3NvclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBV1MgSGVhbHRoIEFwaXMgYW5kIE5vdGlmaWNhdGlvbnMgYW5kIHRoZSBQZXJzb25hbCBIZWFsdGggRGFzaGJvYXJkICovXG4gICAgcHVibGljIEFXU0hlYWx0aEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSGVhbHRoRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBIZWFsdGggSW1hZ2luZyBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NIZWFsdGhJbWFnaW5nRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NIZWFsdGhJbWFnaW5nRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIEhlYWx0aCBJbWFnaW5nIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU0hlYWx0aEltYWdpbmdSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NIZWFsdGhJbWFnaW5nUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgbGlzdCBvZiBhY3Rpb25zIHRoYXQgYXJlIGFsbG93ZWQgZm9yIHJvbGVzIGFzc3VtZWQgd2l0aCB0aGUgSUFNIElkZW50aXR5IENlbnRlciBpZGVudGl0eSBjb250ZXh0LiBBV1MgU2VjdXJpdHkgVG9rZW4gU2VydmljZSAoQVdTIFNUUykgYXV0b21hdGljYWxseSBhdHRhY2hlcyB0aGlzIHBvbGljeSB0byBhc3N1bWVkIHJvbGVzLiBUaGUgaWRlbnRpdHkgY29udGV4dCBpcyBwYXNzZWQgYXMgUHJvdmlkZWRDb250ZXh0LiAqL1xuICAgIHB1YmxpYyBBV1NJQU1JZGVudGl0eUNlbnRlckFsbG93TGlzdEZvcklkZW50aXR5Q29udGV4dCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJQU1JZGVudGl0eUNlbnRlckFsbG93TGlzdEZvcklkZW50aXR5Q29udGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyB0byB0aGUgSWRlbnRpdHkgU3luYyBzZXJ2aWNlICovXG4gICAgcHVibGljIEFXU0lkZW50aXR5U3luY0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSWRlbnRpdHlTeW5jRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFJlYWQgb25seSBhY2Nlc3MgdG8gdGhlIElkZW50aXR5IFN5bmMgc2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NJZGVudGl0eVN5bmNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJZGVudGl0eVN5bmNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBBV1MgSW1hZ2UgQnVpbGRlciBhY3Rpb25zIGFuZCByZXNvdXJjZSBzY29wZWQgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NJbWFnZUJ1aWxkZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ltYWdlQnVpbGRlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFsbCBBV1MgSW1hZ2UgQnVpbGRlciBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NJbWFnZUJ1aWxkZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJbWFnZUJ1aWxkZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byB0aGUgam9icyBjcmVhdGVkIHVuZGVyIHRoZSBBV1MgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQVdTSW1wb3J0RXhwb3J0RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJbXBvcnRFeHBvcnRGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgam9icyBjcmVhdGVkIHVuZGVyIHRoZSBBV1MgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQVdTSW1wb3J0RXhwb3J0UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW1wb3J0RXhwb3J0UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgSW5jaWRlbnQgTWFuYWdlciBwZXJtaXNzaW9ucyB0byBjYWxsIG90aGVyIEFXUyBzZXJ2aWNlcyBhcyBhIHBhcnQgb2YgbWFuYWdpbmcgYW4gaW5jaWRlbnQuICovXG4gICAgcHVibGljIEFXU0luY2lkZW50TWFuYWdlckluY2lkZW50QWNjZXNzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW5jaWRlbnRNYW5hZ2VySW5jaWRlbnRBY2Nlc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0byBzdGFydCwgdmlldywgYW5kIHVwZGF0ZSBpbmNpZGVudHMgd2l0aCBmdWxsIGFjY2VzcyB0byBjdXN0b20gdGltZWxpbmUgZXZlbnRzICYgcmVsYXRlZCBpdGVtcy4gQXNzaWduIHRoaXMgcG9saWN5IHRvIHVzZXJzIHdobyB3aWxsIGNyZWF0ZSBhbmQgcmVzb2x2ZSBpbmNpZGVudHMuICovXG4gICAgcHVibGljIEFXU0luY2lkZW50TWFuYWdlclJlc29sdmVyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0luY2lkZW50TWFuYWdlclJlc29sdmVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIEluY2lkZW50IE1hbmFnZXIgcGVybWlzc2lvbiB0byBtYW5hZ2UgaW5jaWRlbnQgcmVjb3JkcyBhbmQgcmVsYXRlZCByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0luY2lkZW50TWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0luY2lkZW50TWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gSW9UIEFuYWx5dGljcy4gKi9cbiAgICBwdWJsaWMgQVdTSW9UQW5hbHl0aWNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RBbmFseXRpY3NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBJb1QgQW5hbHl0aWNzLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RBbmFseXRpY3NSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RBbmFseXRpY3NSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdpdmVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBV1MgSW9UIGNvbmZpZ3VyYXRpb24gYWN0aW9ucyAqL1xuICAgIHB1YmxpYyBBV1NJb1RDb25maWdBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UQ29uZmlnQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ2l2ZXMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgQVdTIElvVCBjb25maWd1cmF0aW9uIGFjdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTSW9UQ29uZmlnUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UQ29uZmlnUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBnaXZlcyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIElvVCBtZXNzYWdpbmcgYWN0aW9ucyAqL1xuICAgIHB1YmxpYyBBV1NJb1REYXRhQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVERhdGFBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB3cml0ZSBhY2Nlc3MgdG8gSW9UIHRoaW5nIGdyb3VwcyBhbmQgcmVhZCBhY2Nlc3MgdG8gSW9UIENlcnRpZmljYXRlcyBmb3IgZXhlY3V0aW9uIG9mIEFERF9USElOR1NfVE9fVEhJTkdfR1JPVVAgbWl0aWdhdGlvbiBhY3Rpb24gKi9cbiAgICBwdWJsaWMgQVdTSW9URGV2aWNlRGVmZW5kZXJBZGRUaGluZ3NUb1RoaW5nR3JvdXBNaXRpZ2F0aW9uQWN0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVERldmljZURlZmVuZGVyQWRkVGhpbmdzVG9UaGluZ0dyb3VwTWl0aWdhdGlvbkFjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgYWNjZXNzIGZvciBJb1QgYW5kIHJlbGF0ZWQgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFXU0lvVERldmljZURlZmVuZGVyQXVkaXQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9URGV2aWNlRGVmZW5kZXJBdWRpdCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyBmb3IgZW5hYmxpbmcgSW9UIGxvZ2dpbmcgZm9yIGV4ZWN1dGlvbiBvZiBFTkFCTEVfSU9UX0xPR0dJTkcgbWl0aWdhdGlvbiBhY3Rpb24gKi9cbiAgICBwdWJsaWMgQVdTSW9URGV2aWNlRGVmZW5kZXJFbmFibGVJb1RMb2dnaW5nTWl0aWdhdGlvbkFjdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1REZXZpY2VEZWZlbmRlckVuYWJsZUlvVExvZ2dpbmdNaXRpZ2F0aW9uQWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbWVzc2FnZXMgcHVibGlzaCBhY2Nlc3MgdG8gU05TIHRvcGljIGZvciBleGVjdXRpb24gb2YgUFVCTElTSF9GSU5ESU5HX1RPX1NOUyBtaXRpZ2F0aW9uIGFjdGlvbiAqL1xuICAgIHB1YmxpYyBBV1NJb1REZXZpY2VEZWZlbmRlclB1Ymxpc2hGaW5kaW5nc1RvU05TTWl0aWdhdGlvbkFjdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1REZXZpY2VEZWZlbmRlclB1Ymxpc2hGaW5kaW5nc1RvU05TTWl0aWdhdGlvbkFjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHdyaXRlIGFjY2VzcyB0byBJb1QgcG9saWNpZXMgZm9yIGV4ZWN1dGlvbiBvZiBSRVBMQUNFX0RFRkFVTFRfUE9MSUNZX1ZFUlNJT04gbWl0aWdhdGlvbiBhY3Rpb24gKi9cbiAgICBwdWJsaWMgQVdTSW9URGV2aWNlRGVmZW5kZXJSZXBsYWNlRGVmYXVsdFBvbGljeU1pdGlnYXRpb25BY3Rpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9URGV2aWNlRGVmZW5kZXJSZXBsYWNlRGVmYXVsdFBvbGljeU1pdGlnYXRpb25BY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB3cml0ZSBhY2Nlc3MgdG8gSW9UIENBIGNlcnRpZmljYXRlcyBmb3IgZXhlY3V0aW9uIG9mICBVUERBVEVfQ0FfQ0VSVElGSUNBVEUgbWl0aWdhdGlvbiBhY3Rpb24gKi9cbiAgICBwdWJsaWMgQVdTSW9URGV2aWNlRGVmZW5kZXJVcGRhdGVDQUNlcnRNaXRpZ2F0aW9uQWN0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVERldmljZURlZmVuZGVyVXBkYXRlQ0FDZXJ0TWl0aWdhdGlvbkFjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHdyaXRlIGFjY2VzcyB0byBJb1QgY2VydGlmaWNhdGVzIGZvciBleGVjdXRpb24gb2YgVVBEQVRFX0RFVklDRV9DRVJUSUZJQ0FURSBtaXRpZ2F0aW9uIGFjdGlvbiAqL1xuICAgIHB1YmxpYyBBV1NJb1REZXZpY2VEZWZlbmRlclVwZGF0ZURldmljZUNlcnRNaXRpZ2F0aW9uQWN0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVERldmljZURlZmVuZGVyVXBkYXRlRGV2aWNlQ2VydE1pdGlnYXRpb25BY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIElvVCBEZXZpY2UgVGVzdGVyIHRvIHJ1biB0aGUgRnJlZVJUT1MgcXVhbGlmaWNhdGlvbiBzdWl0ZSBieSBhbGxvd2luZyBhY2Nlc3MgdG8gc2VydmljZXMgaW5jbHVkaW5nIElvVCwgUzMsIGFuZCBJQU0gKi9cbiAgICBwdWJsaWMgQVdTSW9URGV2aWNlVGVzdGVyRm9yRnJlZVJUT1NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVERldmljZVRlc3RlckZvckZyZWVSVE9TRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgSW9UIERldmljZSBUZXN0ZXIgdG8gcnVuIHRoZSBBV1MgR3JlZW5ncmFzcyBxdWFsaWZpY2F0aW9uIHN1aXRlIGJ5IGFsbG93aW5nIGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBMYW1iZGEsIElvVCwgQVBJIEdhdGV3YXksIElBTSAqL1xuICAgIHB1YmxpYyBBV1NJb1REZXZpY2VUZXN0ZXJGb3JHcmVlbmdyYXNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1REZXZpY2VUZXN0ZXJGb3JHcmVlbmdyYXNzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIElvVCBFdmVudHMuICovXG4gICAgcHVibGljIEFXU0lvVEV2ZW50c0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9URXZlbnRzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gSW9UIEV2ZW50cy4gKi9cbiAgICBwdWJsaWMgQVdTSW9URXZlbnRzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9URXZlbnRzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBGZWRlcmF0aW9uIGFjY2VzcyBmb3IgSW9UIEZsZWV0IEh1YiBhcHBsaWNhdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTSW9URmxlZXRIdWJGZWRlcmF0aW9uQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVEZsZWV0SHViRmVkZXJhdGlvbkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byBBV1MgUmVzb3VyY2VzIGFuZCBtZXRhRGF0YSB1c2VkIG9yIG1hbmFnZWQgYnkgQVdTSW9URmxlZXR3aXNlIGZvciBhdXhpbGlhcnkgZmVhdHVyZXMgKi9cbiAgICBwdWJsaWMgQVdTSW9URmxlZXR3aXNlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9URmxlZXR3aXNlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBnaXZlcyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIElvVCBjb25maWd1cmF0aW9uIGFuZCBtZXNzYWdpbmcgYWN0aW9ucyAqL1xuICAgIHB1YmxpYyBBV1NJb1RGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgY3JlYXRpb24gb2YgQW1hem9uIENsb3VkV2F0Y2ggTG9nIGdyb3VwcyBhbmQgc3RyZWFtaW5nIGxvZ3MgdG8gdGhlIGdyb3VwcyAqL1xuICAgIHB1YmxpYyBBV1NJb1RMb2dnaW5nKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVExvZ2dpbmcpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBtYW5hZ2VkIGludGVncmF0aW9ucyBmb3IgQVdTIElvVCBEZXZpY2UgTWFuYWdlbWVudCBhbmQgcmVsYXRlZCBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTSW9UTWFuYWdlZEludGVncmF0aW9uc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UTWFuYWdlZEludGVncmF0aW9uc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBtYW5hZ2VkIGludGVncmF0aW9ucyBmb3IgQVdTIElvVCBEZXZpY2UgTWFuYWdlbWVudCBwZXJtaXNzaW9uIHRvIHB1Ymxpc2ggbG9ncyBhbmQgbWV0cmljcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTSW9UTWFuYWdlZEludGVncmF0aW9uc1JvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UTWFuYWdlZEludGVncmF0aW9uc1JvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgYWNjZXNzIHRvIGNyZWF0ZSBBV1MgSW9UIEpvYiBhbmQgZGVzY3JpYmUgdGhlIEFXUyBjb2RlIHNpZ25lciBqb2IgKi9cbiAgICBwdWJsaWMgQVdTSW9UT1RBVXBkYXRlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVE9UQVVwZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBhY2Nlc3MgdG8gYWxsIEFXUyBzZXJ2aWNlcyBzdXBwb3J0ZWQgaW4gQVdTIElvVCBSdWxlIEFjdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTSW9UUnVsZUFjdGlvbnMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UUnVsZUFjdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBtYW5hZ2UgQVdTIElvVCBTaXRlV2lzZSB1c2luZyB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gTm90ZSB0aGlzIHBvbGljeSBhbHNvIGdyYW50cyBhY2Nlc3MgdG8gY3JlYXRlIGFuZCBsaXN0IGRhdGEgc3RvcmVzIHVzZWQgd2l0aCBBV1MgSW9UIFNpdGVXaXNlIChlLmcuIEFXUyBJb1QgQW5hbHl0aWNzKSwgYWNjZXNzIHRvIGxpc3QgYW5kIHZpZXcgQVdTIElvVCBHcmVlbmdyYXNzIHJlc291cmNlcywgbGlzdCBhbmQgbW9kaWZ5IEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0cywgcmV0cmlldmUgQVdTIElvVCB0aGluZyBzaGFkb3dzLCBsaXN0IHJlc291cmNlcyB3aXRoIHNwZWNpZmljIHRhZ3MsIGFuZCBjcmVhdGUgYW5kIHVzZSBhIHNlcnZpY2UtbGlua2VkIHJvbGUgZm9yIEFXUyBJb1QgU2l0ZVdpc2UuICovXG4gICAgcHVibGljIEFXU0lvVFNpdGVXaXNlQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UU2l0ZVdpc2VDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIElvVCBTaXRlV2lzZS4gKi9cbiAgICBwdWJsaWMgQVdTSW9UU2l0ZVdpc2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFNpdGVXaXNlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgQVdTIElvVCBTaXRlV2lzZSBhc3NldHMgYW5kIGFzc2V0IGRhdGEsIGNyZWF0ZSBBV1MgSW9UIFNpdGVXaXNlIE1vbml0b3IgcmVzb3VyY2VzLCBhbmQgbGlzdCBBV1MgU1NPIHVzZXJzLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RTaXRlV2lzZU1vbml0b3JQb3J0YWxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UU2l0ZVdpc2VNb25pdG9yUG9ydGFsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyByb2xlIGdyYW50cyBBV1MgSW9UIFNpdGVXaXNlIG1vbml0b3IgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHlvdXIgQVdTIElvVCBTaXRlV2lzZSBhc3NldHMgJiBhc3NldCBwcm9wZXJ0aWVzLCBhbmQgY3JlYXRlIEFXUyBJb1QgU2l0ZXdpc2UgcHJvamVjdHMsIGRhc2hib2FyZHMgJiBhY2Nlc3MgcG9saWNpZXMgdGhyb3VnaCBBV1MgSW9UIFNpdGVXaXNlIHBvcnRhbHMuICovXG4gICAgcHVibGljIEFXU0lvVFNpdGVXaXNlTW9uaXRvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFNpdGVXaXNlTW9uaXRvclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBJb1QgU2l0ZVdpc2UuICovXG4gICAgcHVibGljIEFXU0lvVFNpdGVXaXNlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UU2l0ZVdpc2VSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyB1c2VycyB0byByZWdpc3RlciB0aGluZ3MgYXQgYnVsayB1c2luZyBBV1MgSW9UIFN0YXJ0VGhpbmdSZWdpc3RyYXRpb25UYXNrIEFQSSAqL1xuICAgIHB1YmxpYyBBV1NJb1RUaGluZ3NSZWdpc3RyYXRpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UVGhpbmdzUmVnaXN0cmF0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBJb1QgVHdpbk1ha2VyIHRvIGNhbGwgb3RoZXIgQVdTIHNlcnZpY2VzIGFuZCB0byBzeW5jIHRoZWlyIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTSW9UVHdpbk1ha2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UVHdpbk1ha2VyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIGFzc29jaWF0ZWQgaWRlbnRpdHkgZGF0YSBhY2Nlc3MgdG8gQVdTIElvVCBXaXJlbGVzcyBkZXZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RXaXJlbGVzc0RhdGFBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UV2lyZWxlc3NEYXRhQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBhc3NvY2lhdGVkIGlkZW50aXR5IGZ1bGwgYWNjZXNzIHRvIGFsbCBBV1MgSW9UIFdpcmVsZXNzIG9wZXJhdGlvbnMuICovXG4gICAgcHVibGljIEFXU0lvVFdpcmVsZXNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RXaXJlbGVzc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBJb1QgV2lyZWxlc3MgZnVsbCBhY2Nlc3MgdG8gcHVibGlzaCB0byBJb1QgUnVsZXMgRW5naW5lIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RXaXJlbGVzc0Z1bGxQdWJsaXNoQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFdpcmVsZXNzRnVsbFB1Ymxpc2hBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIGFzc29jaWF0ZWQgaWRlbnRpdHkgYWNjZXNzIHRvIGNyZWF0ZSwgbGlzdCBhbmQgZGVzY3JpYmUgSW9UIENlcnRpZmljYXRlcyAqL1xuICAgIHB1YmxpYyBBV1NJb1RXaXJlbGVzc0dhdGV3YXlDZXJ0TWFuYWdlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RXaXJlbGVzc0dhdGV3YXlDZXJ0TWFuYWdlcik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB0aGUgYXNzb2NpYXRlZCBpZGVudGl0eSB0byBjcmVhdGUgQW1hem9uIENsb3VkV2F0Y2ggTG9ncyBncm91cHMgYW5kIHN0cmVhbSBsb2dzIHRvIHRoZSBncm91cHMuICovXG4gICAgcHVibGljIEFXU0lvVFdpcmVsZXNzTG9nZ2luZygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RXaXJlbGVzc0xvZ2dpbmcpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIGFzc29jaWF0ZWQgaWRlbnRpdHkgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgSW9UIHdpcmVsZXNzLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RXaXJlbGVzc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFdpcmVsZXNzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgVlBDIElQIEFkZHJlc3MgTWFuYWdlciB0byBhY2Nlc3MgVlBDIHJlc291cmNlcyBhbmQgaW50ZWdyYXRlIHdpdGggQVdTIE9yZ2FuaXphdGlvbnMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0lQQU1TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJUEFNU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBVc2VkIGJ5IEFXUyBJUSB0byBleGVjdXRlIHBheW1lbnQgcmVxdWVzdHMgb24gYmVoYWxmIG9mIGEgY3VzdG9tZXIgKi9cbiAgICBwdWJsaWMgQVdTSVFDb250cmFjdFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lRQ29udHJhY3RTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBJUSAqL1xuICAgIHB1YmxpYyBBV1NJUUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSVFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBJUSB0byBtYW5hZ2UgdGhlIHJvbGUgYXNzdW1lZCBieSBBV1MgSVEgZXhwZXJ0cy4gKi9cbiAgICBwdWJsaWMgQVdTSVFQZXJtaXNzaW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSVFQZXJtaXNzaW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1Mgc2VydmljZXMgYW5kIHJlc291cmNlcyByZXF1aXJlZCBmb3IgQVdTIEtNUyBjdXN0b20ga2V5IHN0b3JlcyAqL1xuICAgIHB1YmxpYyBBV1NLZXlNYW5hZ2VtZW50U2VydmljZUN1c3RvbUtleVN0b3Jlc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0tleU1hbmFnZW1lbnRTZXJ2aWNlQ3VzdG9tS2V5U3RvcmVzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIEFXUyBLTVMgdG8gc3luY2hyb25pemUgdGhlIHNoYXJlZCBwcm9wZXJ0aWVzIG9mIG11bHRpLVJlZ2lvbiBrZXlzLiAqL1xuICAgIHB1YmxpYyBBV1NLZXlNYW5hZ2VtZW50U2VydmljZU11bHRpUmVnaW9uS2V5c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0tleU1hbmFnZW1lbnRTZXJ2aWNlTXVsdGlSZWdpb25LZXlzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykuICovXG4gICAgcHVibGljIEFXU0tleU1hbmFnZW1lbnRTZXJ2aWNlUG93ZXJVc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0tleU1hbmFnZW1lbnRTZXJ2aWNlUG93ZXJVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgY3Jvc3MgYWNjb3VudCBhY2Nlc3MgdG8gR2x1ZSByZXNvdXJjZXMgdmlhIExha2UgRm9ybWF0aW9uLiBBbHNvIGdyYW50cyByZWFkIGFjY2VzcyB0byBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcyBzdWNoIGFzIG9yZ2FuaXphdGlvbnMgYW5kIHJlc291cmNlIGFjY2VzcyBtYW5hZ2VyICovXG4gICAgcHVibGljIEFXU0xha2VGb3JtYXRpb25Dcm9zc0FjY291bnRNYW5hZ2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xha2VGb3JtYXRpb25Dcm9zc0FjY291bnRNYW5hZ2VyKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBBV1MgTGFrZSBGb3JtYXRpb24gYW5kIHJlbGF0ZWQgc2VydmljZXMsIHN1Y2ggYXMgQVdTIEdsdWUsIHRvIG1hbmFnZSBkYXRhIGxha2VzICovXG4gICAgcHVibGljIEFXU0xha2VGb3JtYXRpb25EYXRhQWRtaW4oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGFrZUZvcm1hdGlvbkRhdGFBZG1pbik7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyB0byBBV1MgTGFtYmRhIHNlcnZpY2UsIEFXUyBMYW1iZGEgY29uc29sZSBmZWF0dXJlcywgYW5kIG90aGVyIHJlbGF0ZWQgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgTGFtYmRhIHNlcnZpY2UsIEFXUyBMYW1iZGEgY29uc29sZSBmZWF0dXJlcywgYW5kIG90aGVyIHJlbGF0ZWQgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHdyaXRlIHBlcm1pc3Npb25zIHRvIENsb3VkV2F0Y2ggTG9ncy4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGxpc3QgYW5kIHJlYWQgYWNjZXNzIHRvIER5bmFtb0RCIHN0cmVhbXMgYW5kIHdyaXRlIHBlcm1pc3Npb25zIHRvIENsb3VkV2F0Y2ggbG9ncy4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhRHluYW1vREJFeGVjdXRpb25Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYUR5bmFtb0RCRXhlY3V0aW9uUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIG1pbmltdW0gcGVybWlzc2lvbnMgZm9yIGEgTGFtYmRhIGZ1bmN0aW9uIHRvIG1hbmFnZSBFTklzIChjcmVhdGUsIGRlc2NyaWJlLCBkZWxldGUpIHVzZWQgYnkgYSBWUEMtZW5hYmxlZCBMYW1iZGEgRnVuY3Rpb24uICovXG4gICAgcHVibGljIEFXU0xhbWJkYUVOSU1hbmFnZW1lbnRBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGFtYmRhRU5JTWFuYWdlbWVudEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIFB1dCwgR2V0IGFjY2VzcyB0byBTMyBhbmQgZnVsbCBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBMb2dzLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFFeGVjdXRlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYUV4ZWN1dGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIGFjY2VzcyB0byBEeW5hbW9EQiBTdHJlYW1zLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFJbnZvY2F0aW9uRHluYW1vREIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGFtYmRhSW52b2NhdGlvbkR5bmFtb0RCKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbGlzdCBhbmQgcmVhZCBhY2Nlc3MgdG8gS2luZXNpcyBzdHJlYW1zIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0byBDbG91ZFdhdGNoIGxvZ3MuICovXG4gICAgcHVibGljIEFXU0xhbWJkYUtpbmVzaXNFeGVjdXRpb25Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYUtpbmVzaXNFeGVjdXRpb25Sb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gYWNjZXNzIE1TSyBDbHVzdGVyIHdpdGhpbiBhIFZQQywgbWFuYWdlIEVOSXMgKGNyZWF0ZSwgZGVzY3JpYmUsIGRlbGV0ZSkgaW4gdGhlIFZQQyBhbmQgd3JpdGUgcGVybWlzc2lvbnMgdG8gQ2xvdWRXYXRjaCBMb2dzLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFNU0tFeGVjdXRpb25Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYU1TS0V4ZWN1dGlvblJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgTGFtYmRhIFJlcGxpY2F0b3IgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIHJlcGxpY2F0ZSBmdW5jdGlvbnMgYWNyb3NzIHJlZ2lvbnMgKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhUmVwbGljYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFSZXBsaWNhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIEFXUyBMYW1iZGEgc2VydmljZSByb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWNlaXZlIG1lc3NhZ2UsIGRlbGV0ZSBtZXNzYWdlLCBhbmQgcmVhZCBhdHRyaWJ1dGUgYWNjZXNzIHRvIFNRUyBxdWV1ZXMsIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0byBDbG91ZFdhdGNoIGxvZ3MuICovXG4gICAgcHVibGljIEFXU0xhbWJkYVNRU1F1ZXVlRXhlY3V0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFTUVNRdWV1ZUV4ZWN1dGlvblJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBtaW5pbXVtIHBlcm1pc3Npb25zIGZvciBhIExhbWJkYSBmdW5jdGlvbiB0byBleGVjdXRlIHdoaWxlIGFjY2Vzc2luZyBhIHJlc291cmNlIHdpdGhpbiBhIFZQQyAtIGNyZWF0ZSwgZGVzY3JpYmUsIGRlbGV0ZSBuZXR3b3JrIGludGVyZmFjZXMgYW5kIHdyaXRlIHBlcm1pc3Npb25zIHRvIENsb3VkV2F0Y2ggTG9ncy4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhVlBDQWNjZXNzRXhlY3V0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFWUENBY2Nlc3NFeGVjdXRpb25Sb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gYWxsb3cgYWNjZXNzIHRvIHRoZSBBV1MgTGljZW5zZSBNYW5hZ2VyIEFQSSBhY3Rpb25zIHJlcXVpcmVkIHRvIGNvbnN1bWUgdXBvbiBsaWNlbnNlcyB0aGF0IHRoZSB1c2VyIGhhcyBlbnRpdGxlbWVudHMuICovXG4gICAgcHVibGljIEFXU0xpY2Vuc2VNYW5hZ2VyQ29uc3VtcHRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGljZW5zZU1hbmFnZXJDb25zdW1wdGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgTGljZW5zZSBNYW5hZ2VyIExpbnV4IFN1YnNjcmlwdGlvbnMgU2VydmljZSB0byBtYW5hZ2UgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NMaWNlbnNlTWFuYWdlckxpbnV4U3Vic2NyaXB0aW9uc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xpY2Vuc2VNYW5hZ2VyTGludXhTdWJzY3JpcHRpb25zU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgTGljZW5zZSBNYW5hZ2VyIHNlcnZpY2UgbWFzdGVyIGFjY291bnQgcm9sZSBwb2xpY3kgKi9cbiAgICBwdWJsaWMgQVdTTGljZW5zZU1hbmFnZXJNYXN0ZXJBY2NvdW50Um9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMaWNlbnNlTWFuYWdlck1hc3RlckFjY291bnRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQVdTIExpY2Vuc2UgTWFuYWdlciBzZXJ2aWNlIG1lbWJlciBhY2NvdW50IHJvbGUgcG9saWN5ICovXG4gICAgcHVibGljIEFXU0xpY2Vuc2VNYW5hZ2VyTWVtYmVyQWNjb3VudFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGljZW5zZU1hbmFnZXJNZW1iZXJBY2NvdW50Um9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBMaWNlbnNlIE1hbmFnZXIgc2VydmljZSBkZWZhdWx0IHJvbGUgcG9saWN5ICovXG4gICAgcHVibGljIEFXU0xpY2Vuc2VNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGljZW5zZU1hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgTGljZW5zZSBNYW5hZ2VyIFVzZXIgU3Vic2NyaXB0aW9ucyBTZXJ2aWNlIHRvIG1hbmFnZSByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0xpY2Vuc2VNYW5hZ2VyVXNlclN1YnNjcmlwdGlvbnNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMaWNlbnNlTWFuYWdlclVzZXJTdWJzY3JpcHRpb25zU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIE0yIHRvIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NNMlNlcnZpY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTTJTZXJ2aWNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBNYW5hZ2VkIFNlcnZpY2VzIHRvIHJlYWQgdGhlIHZhbHVlcyBvZiB0aGUgdGFncyBvbiBBV1MgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFXU01hbmFnZWRTZXJ2aWNlc0NvbnRhY3RzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFuYWdlZFNlcnZpY2VzQ29udGFjdHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBNYW5hZ2VkIFNlcnZpY2VzIC0gcG9saWN5IHRvIG1hbmFnZSBkZXRlY3RpdmUgY29udHJvbHMgaW5mcmFzdHJ1Y3R1cmUgKi9cbiAgICBwdWJsaWMgQVdTTWFuYWdlZFNlcnZpY2VzRGV0ZWN0aXZlQ29udHJvbHNDb25maWdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYW5hZ2VkU2VydmljZXNEZXRlY3RpdmVDb250cm9sc0NvbmZpZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQVdTIE1hbmFnZWQgU2VydmljZXMgcG9saWN5IHRvIGVuYWJsZSBBTVMgZXZlbnQgcHJvY2Vzc29yIGZlYXR1cmUuICovXG4gICAgcHVibGljIEFXU01hbmFnZWRTZXJ2aWNlc0V2ZW50c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hbmFnZWRTZXJ2aWNlc0V2ZW50c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbidzIEFXUyBNYW5hZ2VkIFNlcnZpY2UncyBTZWxmIFNlcnZpY2UgUmVwb3J0aW5nIGZlYXR1cmUgdG8gcmVhZCBBV1MgT3JnYW5pemF0aW9uIGRhdGEgb24geW91ciBiZWhhbGYgdG8gZW5hYmxlIG9yZ2FuaXphdGlvbiBsZXZlbCBhZ2dyZWdhdGVkIHJlcG9ydGluZyAqL1xuICAgIHB1YmxpYyBBV1NNYW5hZ2VkU2VydmljZXNTZWxmU2VydmljZVJlcG9ydGluZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hbmFnZWRTZXJ2aWNlc1NlbGZTZXJ2aWNlUmVwb3J0aW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIE1hbmFnZWQgU2VydmljZXMgdG8gbWFuYWdlIGRlcGxveW1lbnQgdG9vbGtpdCBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTTWFuYWdlZFNlcnZpY2VzRGVwbG95bWVudFRvb2xraXRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFuYWdlZFNlcnZpY2VzRGVwbG95bWVudFRvb2xraXRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBjb25maWd1cmUgYW5kIGN1c3RvbWl6ZSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBBV1NNYW5hZ2VtZW50Q29uc29sZUFkbWluaXN0cmF0b3JBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFuYWdlbWVudENvbnNvbGVBZG1pbmlzdHJhdG9yQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGFjY2VzcyB0byBlc3NlbnRpYWwgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBmZWF0dXJlcyBhbmQgdXNlciBleHBlcmllbmNlIChVWCkgY2FwYWJpbGl0aWVzIGZvciBub24tYWRtaW5pc3RyYXRpdmUgdXNlcnMuICovXG4gICAgcHVibGljIEFXU01hbmFnZW1lbnRDb25zb2xlQmFzaWNVc2VyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hbmFnZW1lbnRDb25zb2xlQmFzaWNVc2VyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBNYXJrZXRwbGFjZSB0byBjb3B5IHlvdXIgQW1hem9uIE1hY2hpbmUgSW1hZ2VzIChBTUlzKSBpbiBvcmRlciB0byBsaXN0IHRoZW0gb24gQVdTIE1hcmtldHBsYWNlICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlQW1pSW5nZXN0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlQW1pSW5nZXN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBNYXJrZXRwbGFjZSB0byBjcmVhdGUgYW5kIG1hbmFnZSBzZWxsZXIgZGVwbG95bWVudCBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvZHVjdHMgdGhhdCB5b3Ugc3Vic2NyaWJlIHRvIG9uIEFXUyBNYXJrZXRwbGFjZS4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VEZXBsb3ltZW50U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VEZXBsb3ltZW50U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byBzdWJzY3JpYmUgYW5kIHVuc3Vic2NyaWJlIHRvIEFXUyBNYXJrZXRwbGFjZSBzb2Z0d2FyZSwgYWxsb3dzIHVzZXJzIHRvIG1hbmFnZSBNYXJrZXRwbGFjZSBzb2Z0d2FyZSBpbnN0YW5jZXMgZnJvbSB0aGUgTWFya2V0cGxhY2UgJ1lvdXIgU29mdHdhcmUnIHBhZ2UsIGFuZCBwcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gRUMyLiAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBhY2Nlc3MgdG8gQVdTIE1hcmtldHBsYWNlIEVudGl0bGVtZW50cyAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZUdldEVudGl0bGVtZW50cygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZUdldEVudGl0bGVtZW50cyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBV1MgTWFya2V0cGxhY2UgZm9yIGxpY2Vuc2UgbWFuYWdlbWVudC4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VMaWNlbnNlTWFuYWdlbWVudFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlTGljZW5zZU1hbmFnZW1lbnRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHN1YnNjcmliZSBhbmQgdW5zdWJzY3JpYmUgdG8gQVdTIE1hcmtldHBsYWNlIHNvZnR3YXJlICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlTWFuYWdlU3Vic2NyaXB0aW9ucygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZU1hbmFnZVN1YnNjcmlwdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgTWFya2V0cGxhY2UgTWV0ZXJpbmcuICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlTWV0ZXJpbmdGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlTWV0ZXJpbmdGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gcmVnaXN0ZXIgYSByZXNvdXJjZSBhbmQgdHJhY2sgdXNhZ2UgdGhyb3VnaCBBV1MgTWFya2V0cGxhY2UgTWV0ZXJpbmcgU2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VNZXRlcmluZ1JlZ2lzdGVyVXNhZ2UoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VNZXRlcmluZ1JlZ2lzdGVyVXNhZ2UpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgYWRtaW5pc3RyYXRpdmUgYWN0aW9ucyBmb3IgYW4gQVdTIE1hcmtldHBsYWNlIGVQcm9jdXJlbWVudCBpbnRlZ3JhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VQcm9jdXJlbWVudFN5c3RlbUFkbWluRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZVByb2N1cmVtZW50U3lzdGVtQWRtaW5GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgZm9yIEFXUyBNYXJrZXRwbGFjZSBzZXJ2aWNlcyB0byBwdXJjaGFzZSBvcmRlciBtYW5hZ2VtZW50LiAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZVB1cmNoYXNlT3JkZXJzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VQdXJjaGFzZU9yZGVyc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gcmV2aWV3IEFXUyBNYXJrZXRwbGFjZSBzdWJzY3JpcHRpb25zICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBV1MgTWFya2V0cGxhY2UgZm9yIFJlc2FsZSBBdXRob3JpemF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZVJlc2FsZUF1dGhvcml6YXRpb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZVJlc2FsZUF1dGhvcml6YXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBzZWxsZXIgb3BlcmF0aW9ucyBvbiB0aGUgQVdTIE1hcmtldHBsYWNlIGFuZCBvdGhlciBBV1Mgc2VydmljZXMgc3VjaCBhcyBBTUkgbWFuYWdlbWVudC4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VTZWxsZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlU2VsbGVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHNlbGxlcnMgYWNjZXNzIHRvIE9mZmVycyBhbmQgQWdyZWVtZW50cyBtYW5hZ2VtZW50IGFjdGl2aXRpZXMuICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlU2VsbGVyT2ZmZXJNYW5hZ2VtZW50KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlU2VsbGVyT2ZmZXJNYW5hZ2VtZW50KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgc2VsbGVycyBmdWxsIGFjY2VzcyB0byBBV1MgTWFya2V0cGxhY2UgTWFuYWdlbWVudCBQcm9kdWN0cyBwYWdlIGFuZCBvdGhlciBBV1Mgc2VydmljZXMgc3VjaCBhcyBBTUkgbWFuYWdlbWVudC4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VTZWxsZXJQcm9kdWN0c0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VTZWxsZXJQcm9kdWN0c0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHNlbGxlcnMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgTWFya2V0cGxhY2UgTWFuYWdlbWVudCBQcm9kdWN0cyBwYWdlLiAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZVNlbGxlclByb2R1Y3RzUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VTZWxsZXJQcm9kdWN0c1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIGRlZmF1bHQgcG9saWN5IHRoYXQgZW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IE1lZGlhQ29ubmVjdC4gKi9cbiAgICBwdWJsaWMgQVdTTWVkaWFDb25uZWN0U2VydmljZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNZWRpYUNvbm5lY3RTZXJ2aWNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIE1lZGlhTGl2ZSBBbnl3aGVyZSB0byBjcmVhdGUgYW5kIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NNZWRpYUxpdmVBbnl3aGVyZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01lZGlhTGl2ZUFueXdoZXJlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGUgYWNjZXNzIHRvIEFXUyBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IE1lZGlhVGFpbG9yICovXG4gICAgcHVibGljIEFXU01lZGlhVGFpbG9yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWVkaWFUYWlsb3JTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBhbGxvd3MgQVdTTWlncmF0aW9uSHViU2VydmljZSB0byBjYWxsIEFXU0FwcGxpY2F0aW9uRGlzY292ZXJ5U2VydmljZSBvbiBiZWhhbGYgb2YgdGhlIGN1c3RvbWVyLiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJEaXNjb3ZlcnlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViRGlzY292ZXJ5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSB0byBhc3N1bWUgcm9sZSBpbiBjdXN0b21lcidzIGFjY291bnQgdG8gY2FsbCBNaWdyYXRpb24gSHViICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1YkRNU0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJETVNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBNYW5hZ2VkIHBvbGljeSB0byBwcm92aWRlIHRoZSBjdXN0b21lciBhY2Nlc3MgdG8gdGhlIE1pZ3JhdGlvbiBIdWIgU2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01pZ3JhdGlvbkh1YkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBsaW1pdGVkIGFjY2VzcyB0byBBV1MgTWlncmF0aW9uIEh1YiwgQVdTIEFwcGxpY2F0aW9uIERpc2NvdmVyeSBTZXJ2aWNlLCBBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSBhbmQgQVdTIFNlY3JldHMgTWFuYWdlci4gVGhpcyBwb2xpY3kgYWxzbyBncmFudHMgZnVsbCBhY2Nlc3MgdG8gQVdTIE1pZ3JhdGlvbiBIdWIgT3JjaGVzdHJhdG9yIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1Yk9yY2hlc3RyYXRvckNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01pZ3JhdGlvbkh1Yk9yY2hlc3RyYXRvckNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgbmVlZHMgdG8gYmUgYXR0YWNoZWQgZm9yIFNBUCBhbmQgTUdOIG1pZ3JhdGVkIGluc3RhbmNlIGZvciBvdXIgc2VydmljZSB0byBvcmNoZXN0cmF0ZSBpbnN0YW5jZXMgYnkgZG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIFMzIGFuZCB0byBmZXRjaCBzZWNyZXQgdmFsdWVzIGluc2lkZSBFQzIgaW5zdGFuY2UuICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1Yk9yY2hlc3RyYXRvckluc3RhbmNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJPcmNoZXN0cmF0b3JJbnN0YW5jZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBsaW1pdGVkIGFjY2VzcyB0byBBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSwgQVdTIFNlY3JldHMgTWFuYWdlciBhbmQgUGx1Z2luIHJlbGF0ZWQgYWN0aW9ucyBmb3IgQVdTIE1pZ3JhdGlvbiBIdWIgT3JjaGVzdHJhdG9yLiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJPcmNoZXN0cmF0b3JQbHVnaW4oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViT3JjaGVzdHJhdG9yUGx1Z2luKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgbmVjZXNzYXJ5IGZvciBNaWdyYXRpb24gSHViIE9yY2hlc3RyYXRvciB0byBtaWdyYXRlIGFuZCBtb2Rlcm5pemUgeW91ciBvbi1wcmVtaXNlcyB3b3JrbG9hZHMgKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViT3JjaGVzdHJhdG9yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViT3JjaGVzdHJhdG9yU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gQVdTIE1pZ3JhdGlvbiBIdWIgUmVmYWN0b3IgU3BhY2VzIGFuZCBvdGhlciBBV1MgcmVsYXRlZCBzZXJ2aWNlcyBleGNlcHQgQVdTIFRyYW5zaXQgR2F0ZXdheSBhbmQgRUMyIHNlY3VyaXR5IGdyb3VwcyBub3QgcmVxdWlyZWQgd2hlbiB1c2luZyBlbnZpcm9ubWVudHMgd2l0aG91dCBhIG5ldHdvcmsgYnJpZGdlLiBUaGlzIHBvbGljeSBhbHNvIGV4Y2x1ZGVzIHBlcm1pc3Npb25zIHJlcXVpcmVkIGZvciBBV1MgTGFtYmRhIGFuZCBBV1MgUmVzb3VyY2UgQWNjZXNzIE1hbmFnZXIgYXMgdGhleSBjYW4gYmUgc2NvcGVkIGRvd24gYmFzZWQgb24gdGFncy4gKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViUmVmYWN0b3JTcGFjZXNFbnZpcm9ubWVudHNXaXRob3V0QnJpZGdlc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViUmVmYWN0b3JTcGFjZXNFbnZpcm9ubWVudHNXaXRob3V0QnJpZGdlc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBVc2UgaW4gdGhlIElBTSBzZXJ2aWNlIHJvbGUgcGFzc2VkIHRvIHRoZSBTU00gQXV0b21hdGlvbiBkb2N1bWVudCBBV1NSZWZhY3RvclNwYWNlcy1DcmVhdGVSZXNvdXJjZXMgdG8gZ3JhbnQgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gcnVuIHRoZSBhdXRvbWF0aW9uLiBUaGUgcG9saWN5IGdyYW50cyByZWFkL3dyaXRlIGFjY2VzcyB0byBFQzIgdGFncyBpbiBvcmRlciB0byB0cmFjayBhdXRvbWF0aW9uIHByb2dyZXNzLiBXaGVuIHRoZSBSZWZhY3RvciBTcGFjZXMgZW52aXJvbm1lbnQncyBuZXR3b3JrIGJyaWRnZSBpcyBlbmFibGVkLCB0aGUgYXV0b21hdGlvbiBhbHNvIGFkZHMgdGhlIGVudmlyb25tZW50J3Mgc2VjdXJpdHkgZ3JvdXAgdG8gdGhlIEVDMiBpbnN0YW5jZSB0byBwZXJtaXQgdHJhZmZpYyBmcm9tIG90aGVyIFJlZmFjdG9yIFNwYWNlcyBzZXJ2aWNlcyBpbiB0aGUgZW52aXJvbm1lbnQuIFRoZSBwb2xpY3kgYWxzbyBncmFudHMgYWNjZXNzIHRvIHRoZSBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSdzIHBvc3QgbGF1bmNoIGFjdGlvbnMgU1NNIHBhcmFtZXRlcnMuICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1YlJlZmFjdG9yU3BhY2VzU1NNQXV0b21hdGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJSZWZhY3RvclNwYWNlc1NTTUF1dG9tYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gQVdTIE1pZ3JhdGlvbkh1YiBSZWZhY3RvciBTcGFjZXMsIEFXUyBNaWdyYXRpb25IdWIgUmVmYWN0b3IgU3BhY2VzIGNvbnNvbGUgZmVhdHVyZXMgYW5kIG90aGVyIHJlbGF0ZWQgQVdTIHNlcnZpY2VzIGV4Y2VwdCBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3IgQVdTIExhbWJkYSBhbmQgQVdTIFJlc291cmNlIEFjY2VzcyBNYW5hZ2VyIGFzIHRoZXkgY2FuIGJlIHNjb3BlZCBkb3duIGJhc2VkIG9uIHRhZ3MuICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1YlJlZmFjdG9yU3BhY2VzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJSZWZhY3RvclNwYWNlc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyBtYW5hZ2VkIG9yIHVzZWQgYnkgQVdTIE1pZ3JhdGlvbiBIdWIgUmVmYWN0b3IgU3BhY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJSZWZhY3RvclNwYWNlc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01pZ3JhdGlvbkh1YlJlZmFjdG9yU3BhY2VzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIFNlcnZlciBNaWdyYXRpb24gU2VydmljZSB0byBhc3N1bWUgcm9sZSBpbiBjdXN0b21lcidzIGFjY291bnQgdG8gY2FsbCBNaWdyYXRpb24gSHViICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1YlNNU0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJTTVNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYWxsb3cgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBBV1MgTWlncmF0aW9uIEh1YiBTdHJhdGVneSBSZWNvbW1lbmRhdGlvbnMgc2VydmljZSwgcmVhZC93cml0ZSBhY2Nlc3MgdG8gUzMgYnVja2V0cyByZWxhdGVkIHRvIHRoZSBzZXJ2aWNlLCBBbWF6b24gQVBJIEdhdGV3YXkgYWNjZXNzIHRvIHVwbG9hZCBsb2dzIGFuZCBtZXRyaWNzIHRvIEFXUywgQVdTIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgdG8gZmV0Y2ggY3JlZGVudGlhbHMsIGFuZCBhbnkgcmVsYXRlZCBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViU3RyYXRlZ3lDb2xsZWN0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViU3RyYXRlZ3lDb2xsZWN0b3IpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFXUyBNaWdyYXRpb24gSHViIFN0cmF0ZWd5IFJlY29tbWVuZGF0aW9ucyBzZXJ2aWNlIGFuZCBhY2Nlc3MgdG8gcmVsYXRlZCBBV1Mgc2VydmljZXMgdGhyb3VnaCB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViU3RyYXRlZ3lDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJTdHJhdGVneUNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlIGFjY2VzcyB0byBBV1MgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBV1MgTWlncmF0aW9uIEh1YiBTdHJhdGVneSBSZWNvbW1lbmRhdGlvbnMgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViU3RyYXRlZ3lTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJTdHJhdGVneVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIEFtYXpvbiBNU0sgUmVwbGljYXRvciB0byByZXBsaWNhdGUgZGF0YSBiZXR3ZWVuIE1TSyBDbHVzdGVycy4gKi9cbiAgICBwdWJsaWMgQVdTTVNLUmVwbGljYXRvckV4ZWN1dGlvblJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTVNLUmVwbGljYXRvckV4ZWN1dGlvblJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gQVdTIE5ldHdvcmsgRmlyZXdhbGwgc2VydmljZSwgaW5jbHVkaW5nIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSwgY29uZmlndXJlLCBtYW5hZ2UsIGFuZCBkZWxldGUgZmlyZXdhbGwgcmVzb3VyY2VzLCBwb2xpY2llcywgYW5kIHJ1bGUgZ3JvdXBzLiBBZGRpdGlvbmFsbHkgaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gbW9kaWZ5IFZQQyBlbmRwb2ludHMsIFMzIGJ1Y2tldCBwb2xpY2llcywgQ2xvdWRXYXRjaCBMb2dzIGNvbmZpZ3VyYXRpb25zLCBhbmQgY3JlYXRlIHNlcnZpY2UtbGlua2VkIHJvbGVzIGZvciBOZXR3b3JrIEZpcmV3YWxsIGFuZCBsb2cgZGVsaXZlcnkgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQVdTTmV0d29ya0ZpcmV3YWxsRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NOZXR3b3JrRmlyZXdhbGxGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgTmV0d29yayBGaXJld2FsbCByZXNvdXJjZXMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLCBDTEksIGFuZCBTREtzLiBUaGlzIHBvbGljeSBhbGxvd3MgdXNlcnMgdG8gdmlldyBhbmQgbW9uaXRvciBmaXJld2FsbCBjb25maWd1cmF0aW9ucywgcG9saWNpZXMsIHJ1bGUgZ3JvdXBzLCBhbmQgYXNzb2NpYXRlZCByZXNvdXJjZXMsIHdpdGhvdXQgdGhlIGFiaWxpdHkgdG8gbWFrZSBjaGFuZ2VzLiAqL1xuICAgIHB1YmxpYyBBV1NOZXR3b3JrRmlyZXdhbGxSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NOZXR3b3JrRmlyZXdhbGxSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IEFXU05ldHdvcmtGaXJld2FsbCB0byBjcmVhdGUgYW5kIG1hbmFnZSBuZWNlc3NhcnkgcmVzb3VyY2VzIGZvciB5b3VyIEZpcmV3YWxscy4gKi9cbiAgICBwdWJsaWMgQVdTTmV0d29ya0ZpcmV3YWxsU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTmV0d29ya0ZpcmV3YWxsU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBOZXR3b3JrTWFuYWdlciB0byBhY2Nlc3MgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB5b3VyIENvcmUgTmV0d29yayAqL1xuICAgIHB1YmxpYyBBV1NOZXR3b3JrTWFuYWdlckNsb3VkV0FOU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTmV0d29ya01hbmFnZXJDbG91ZFdBTlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIE5ldHdvcmtNYW5hZ2VyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTTmV0d29ya01hbmFnZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU05ldHdvcmtNYW5hZ2VyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIE5ldHdvcmtNYW5hZ2VyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTTmV0d29ya01hbmFnZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NOZXR3b3JrTWFuYWdlclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgTmV0d29ya01hbmFnZXIgdG8gYWNjZXNzIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggeW91ciBHbG9iYWwgTmV0d29ya3MgKi9cbiAgICBwdWJsaWMgQVdTTmV0d29ya01hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NOZXR3b3JrTWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZS1saW5rZWQgcm9sZSBwZXJtaXNzaW9ucyBmb3IgQ2xvdWRXYXRjaCBMb2dzIGNlbnRyYWxpemF0aW9uICovXG4gICAgcHVibGljIEFXU09ic2VydmFiaWxpdHlBZG1pbkxvZ3NDZW50cmFsaXphdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU09ic2VydmFiaWxpdHlBZG1pbkxvZ3NDZW50cmFsaXphdGlvblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIG1hbmFnZSBBV1MgQ29uZmlnIENvbmZpZ3VyYXRpb24gUmVjb3JkZXIsIG1hbmFnZSBBV1MgQ29uZmlnIENvbmZpZ3VyYXRpb24gQWdncmVnYXRvciwgY3JlYXRlIEFXUyBDb25maWcgU2VydmljZSBMaW5rZWQgUm9sZSBmb3IgQ29uZmlndXJhdGlvbiBSZWNvcmRlciBmdW5jdGlvbmFsaXR5LCBjb25zdW1lIHJlY29yZGVyIGNvbmZpZ3VyYXRpb24gZGF0YSwgYW5kIHJlYWQgQVdTIE9yZ2FuaXphdGlvbnMgZGF0YSBmb3Igb3JnYW5pemF0aW9uYWwgZmVhdHVyZXMuICovXG4gICAgcHVibGljIEFXU09ic2VydmFiaWxpdHlBZG1pblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU09ic2VydmFiaWxpdHlBZG1pblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIG1hbmFnZSBBV1MgQ29uZmlnIHJlY29yZGVyIHJlc291cmNlIGFuZCB0ZWxlbWV0cnkgc2V0dGluZ3Mgb24gQVdTIHJlc291cmNlcyBpbmNsdWRpbmcgbG9ncywgbWV0cmljcy4gKi9cbiAgICBwdWJsaWMgQVdTT2JzZXJ2YWJpbGl0eUFkbWluVGVsZW1ldHJ5RW5hYmxlbWVudFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU09ic2VydmFiaWxpdHlBZG1pblRlbGVtZXRyeUVuYWJsZW1lbnRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBPcmdhbml6YXRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NPcmdhbml6YXRpb25zRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NPcmdhbml6YXRpb25zRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIE9yZ2FuaXphdGlvbnMuICovXG4gICAgcHVibGljIEFXU09yZ2FuaXphdGlvbnNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NPcmdhbml6YXRpb25zUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBIHBvbGljeSB0byBhbGxvdyBBV1MgT3JnYW5pemF0aW9ucyB0byBzaGFyZSB0cnVzdCB3aXRoIG90aGVyIGFwcHJvdmVkIEFXUyBTZXJ2aWNlcyBmb3IgdGhlIHB1cnBvc2Ugb2Ygc2ltcGxpZnlpbmcgY3VzdG9tZXIgY29uZmlndXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTT3JnYW5pemF0aW9uc1NlcnZpY2VUcnVzdFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NPcmdhbml6YXRpb25zU2VydmljZVRydXN0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgeW91IHRvIGluc3RhbGwgYW4gT3V0cG9zdCBzZXJ2ZXIgb24geW91ciBvbi1wcmVtaXNlcyBuZXR3b3JrLiAqL1xuICAgIHB1YmxpYyBBV1NPdXRwb3N0c0F1dGhvcml6ZVNlcnZlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NPdXRwb3N0c0F1dGhvcml6ZVNlcnZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UgTGlua2VkIFJvbGUgcG9saWN5IHRvIGVuYWJsZSBhY2Nlc3MgdG8gQVdTIHJlc291cmNlcyBtYW5hZ2VkIGJ5IEFXUyBPdXRwb3N0cyAqL1xuICAgIHB1YmxpYyBBV1NPdXRwb3N0c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU091dHBvc3RzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIElvVCBzb2Z0d2FyZSBvbiBhbiBBV1MgUGFub3JhbWEgQXBwbGlhbmNlIHRvIHVwbG9hZCBsb2dzIHRvIEFtYXpvbiBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NQYW5vcmFtYUFwcGxpYW5jZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUGFub3JhbWFBcHBsaWFuY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFuIEFXUyBQYW5vcmFtYSBBcHBsaWFuY2UgdG8gdXBsb2FkIGxvZ3MgdG8gQW1hem9uIENsb3VkV2F0Y2gsIGFuZCB0byBnZXQgb2JqZWN0cyBmcm9tIEFtYXpvbiBTMyBhY2Nlc3MgcG9pbnRzIGNyZWF0ZWQgZm9yIHVzZSB3aXRoIEFXUyBQYW5vcmFtYS4gKi9cbiAgICBwdWJsaWMgQVdTUGFub3JhbWFBcHBsaWFuY2VTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYW5vcmFtYUFwcGxpYW5jZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFBhbm9yYW1hICovXG4gICAgcHVibGljIEFXU1Bhbm9yYW1hRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYW5vcmFtYUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgYW4gQVdTIExhbWJkYSBmdW5jdGlvbiBvbiBhbiBBV1MgUGFub3JhbWEgQXBwbGlhbmNlIHRvIG1hbmFnZSByZXNvdXJjZXMgaW4gUGFub3JhbWEsIHVwbG9hZCBsb2dzIGFuZCBtZXRyaWNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoLCBhbmQgdG8gbWFuYWdlIG9iamVjdHMgaW4gYnVja2V0cyBjcmVhdGVkIGZvciB1c2Ugd2l0aCBQYW5vcmFtYS4gKi9cbiAgICBwdWJsaWMgQVdTUGFub3JhbWFHcmVlbmdyYXNzR3JvdXBSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Bhbm9yYW1hR3JlZW5ncmFzc0dyb3VwUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gU2FnZU1ha2VyIHRvIG1hbmFnZSBvYmplY3RzIGluIGJ1Y2tldHMgY3JlYXRlZCBmb3IgdXNlIHdpdGggQVdTIFBhbm9yYW1hLiAqL1xuICAgIHB1YmxpYyBBV1NQYW5vcmFtYVNhZ2VNYWtlclJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUGFub3JhbWFTYWdlTWFrZXJSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBQYW5vcmFtYSB0byBtYW5hZ2UgcmVzb3VyY2VzIGluIEFXUyBJb1QsIEFXUyBTZWNyZXRzIE1hbmFnZXIgYW5kIEFXUyBQYW5vcmFtYS4gKi9cbiAgICBwdWJsaWMgQVdTUGFub3JhbWFTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYW5vcmFtYVNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBQYW5vcmFtYSB0byBtYW5hZ2UgcmVzb3VyY2VzIGluIEFtYXpvbiBTMywgQVdTIElvVCwgQVdTIElvVCBHcmVlbkdyYXNzLCBBV1MgTGFtYmRhLCBBbWF6b24gU2FnZU1ha2VyLCBhbmQgQW1hem9uIENsb3VkV2F0Y2ggTG9ncywgYW5kIHRvIHBhc3Mgc2VydmljZSByb2xlcyB0byBBV1MgSW9ULCBBV1MgSW9UIEdyZWVuR3Jhc3MsIGFuZCBBbWF6b24gU2FnZU1ha2VyLiAqL1xuICAgIHB1YmxpYyBBV1NQYW5vcmFtYVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Bhbm9yYW1hU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgUGFydG5lciBDZW50cmFsIGFuZCByZWxhdGVkIEFXUyBTZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTUGFydG5lckNlbnRyYWxGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1BhcnRuZXJDZW50cmFsRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIG5lY2Vzc2FyeSBhY2Nlc3MgZm9yIG9wcG9ydHVuaXR5IG1hbmFnZW1lbnQgYWN0aXZpdGllcy4gKi9cbiAgICBwdWJsaWMgQVdTUGFydG5lckNlbnRyYWxPcHBvcnR1bml0eU1hbmFnZW1lbnQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUGFydG5lckNlbnRyYWxPcHBvcnR1bml0eU1hbmFnZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBuZWNlc3NhcnkgYWNjZXNzIGZvciBkZXZlbG9wZXIgdGVzdGluZyBpbiB0aGUgU2FuZGJveCBjYXRhbG9nLiAqL1xuICAgIHB1YmxpYyBBV1NQYXJ0bmVyQ2VudHJhbFNhbmRib3hGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1BhcnRuZXJDZW50cmFsU2FuZGJveEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFJlc291cmNlU25hcHNob3RKb2IgdG8gcmVhZCBhIHJlc291cmNlIGFuZCBzbmFwc2hvdCBpdCBpbiB0aGUgdGFyZ2V0IGVuZ2FnZW1lbnQuICovXG4gICAgcHVibGljIEFXU1BhcnRuZXJDZW50cmFsU2VsbGluZ1Jlc291cmNlU25hcHNob3RKb2JFeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1BhcnRuZXJDZW50cmFsU2VsbGluZ1Jlc291cmNlU25hcHNob3RKb2JFeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgY2FuIGJlIHVzZWQgdG8gZ3JhbnQgcmVhZC1vbmx5IGFjY2VzcyB0byBBUElzIHRoYXQgY2FuIHJlYWQgc2VydmljZSBtZXRhZGF0YSBmb3Igc2VydmljZXMgaW4geW91ciBBV1MgYWNjb3VudC4gWW91IGNhbiB1c2UgdGhpcyBwb2xpY3kgdG8gcHJvdmlkZSB5b3VyIHBhcnRuZXJzIGluIHRoZSBQYXJ0bmVyLUxlZCBTdXBwb3J0IFByb2dyYW0gd2l0aCBhY2Nlc3MgdG8gdGhlIHNlcnZpY2VzIHNwZWNpZmllZCBpbiB0aGUgcGVybWlzc2lvbnMgZGV0YWlscyBzZWN0aW9uIGJlbG93LiAqL1xuICAgIHB1YmxpYyBBV1NQYXJ0bmVyTGVkU3VwcG9ydFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1BhcnRuZXJMZWRTdXBwb3J0UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbiB0byBBV1MgUENTIGNvbXB1dGUgbm9kZXMgdG8gY29ubmVjdCB0byBBV1MgUENTIGNsdXN0ZXJzLiAqL1xuICAgIHB1YmxpYyBBV1NQQ1NDb21wdXRlTm9kZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQQ1NDb21wdXRlTm9kZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byBQQ1MgdG8gbWFuYWdlIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTUENTU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUENTU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgUHJpY2UgTGlzdCBTZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NQcmljZUxpc3RTZXJ2aWNlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcmljZUxpc3RTZXJ2aWNlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGF1ZGl0b3IgYWNjZXNzIHRvIEFXUyBQcml2YXRlIENlcnRpZmljYXRlIEF1dGhvcml0eSAqL1xuICAgIHB1YmxpYyBBV1NQcml2YXRlQ0FBdWRpdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ByaXZhdGVDQUF1ZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZXNzZW50aWFsIHBlcm1pc3Npb25zIGZvciB0aGUgQVdTIFByaXZhdGUgQ0EgQ29ubmVjdG9yIGZvciBLdWJlcm5ldGVzLiAqL1xuICAgIHB1YmxpYyBBV1NQcml2YXRlQ0FDb25uZWN0b3JGb3JLdWJlcm5ldGVzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ByaXZhdGVDQUNvbm5lY3RvckZvckt1YmVybmV0ZXNQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTUHJpdmF0ZUNBRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcml2YXRlQ0FGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcHJpdmlsZWdlZCBjZXJ0aWZpY2F0ZSB1c2VyIGFjY2VzcyB0byBBV1MgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTUHJpdmF0ZUNBUHJpdmlsZWdlZFVzZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJpdmF0ZUNBUHJpdmlsZWdlZFVzZXIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBQcml2YXRlIENlcnRpZmljYXRlIEF1dGhvcml0eSAqL1xuICAgIHB1YmxpYyBBV1NQcml2YXRlQ0FSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcml2YXRlQ0FSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGNlcnRpZmljYXRlIHVzZXIgYWNjZXNzIHRvIEFXUyBQcml2YXRlIENlcnRpZmljYXRlIEF1dGhvcml0eSAqL1xuICAgIHB1YmxpYyBBV1NQcml2YXRlQ0FVc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ByaXZhdGVDQVVzZXIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgYWRtaW5pc3RyYXRpdmUgYWN0aW9ucyBmb3IgYW4gQVdTIFByaXZhdGUgTWFya2V0cGxhY2UuICovXG4gICAgcHVibGljIEFXU1ByaXZhdGVNYXJrZXRwbGFjZUFkbWluRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcml2YXRlTWFya2V0cGxhY2VBZG1pbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gY3JlYXRpbmcgcmVxdWVzdHMgaW4gYW4gQVdTIFByaXZhdGUgTWFya2V0cGxhY2UuICovXG4gICAgcHVibGljIEFXU1ByaXZhdGVNYXJrZXRwbGFjZVJlcXVlc3RzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ByaXZhdGVNYXJrZXRwbGFjZVJlcXVlc3RzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBQcml2YXRlIE5ldHdvcmtzIFNlcnZpY2UgdG8gbWFuYWdlIHJlc291cmNlcyBvbiBiZWhhbGYgb2YgdGhlIGN1c3RvbWVyLiAqL1xuICAgIHB1YmxpYyBBV1NQcml2YXRlTmV0d29ya3NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcml2YXRlTmV0d29ya3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb25zIENvZGVCdWlsZCBuZWVkcyB0byBydW4gYSBidWlsZCBmb3IgQVdTIFByb3RvbiBDb2RlQnVpbGQgUHJvdmlzaW9uaW5nLiAqL1xuICAgIHB1YmxpYyBBV1NQcm90b25Db2RlQnVpbGRQcm92aXNpb25pbmdCYXNpY0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcm90b25Db2RlQnVpbGRQcm92aXNpb25pbmdCYXNpY0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgUHJvdG9uIHRvIG1hbmFnZSBQcm90b24gcmVzb3VyY2UgcHJvdmlzaW9uaW5nIHVzaW5nIENvZGVCdWlsZCBhbmQgb3RoZXIgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NQcm90b25Db2RlQnVpbGRQcm92aXNpb25pbmdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcm90b25Db2RlQnVpbGRQcm92aXNpb25pbmdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgQVdTIFByb3RvbiBBUElzIGFuZCBNYW5hZ2VtZW50IENvbnNvbGUsIGJ1dCBkb2VzIG5vdCBhbGxvdyBhZG1pbmlzdHJhdGlvbiBvZiBQcm90b24gdGVtcGxhdGVzIG9yIGVudmlyb25tZW50cy4gKi9cbiAgICBwdWJsaWMgQVdTUHJvdG9uRGV2ZWxvcGVyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Byb3RvbkRldmVsb3BlckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBV1MgUHJvdG9uIEFQSXMgYW5kIE1hbmFnZW1lbnQgQ29uc29sZS4gSW4gYWRkaXRpb24gdG8gdGhlc2UgcGVybWlzc2lvbnMsIGFjY2VzcyB0byBBbWF6b24gUzMgaXMgYWxzbyBuZWVkZWQgdG8gcmVnaXN0ZXIgdGVtcGxhdGUgYnVuZGxlcyBmcm9tIHlvdXIgUzMgYnVja2V0cywgYXMgd2VsbCBhcyBhY2Nlc3MgdG8gQW1hem9uIElBTSB0byBjcmVhdGUgYW5kIG1hbmFnZSB0aGUgc2VydmljZSByb2xlcyBmb3IgUHJvdG9uLiAqL1xuICAgIHB1YmxpYyBBV1NQcm90b25GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Byb3RvbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIHRoZSBBV1MgUHJvdG9uIEFQSXMgYW5kIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTUHJvdG9uUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJvdG9uUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgd2hpY2ggYWxsb3dzIEFXUyBQcm90b24gdG8gc3luYyB5b3VyIHNlcnZpY2UsIGVudmlyb25tZW50IGFuZCBjb21wb25lbnQgZGVmaW5pdGlvbnMgZnJvbSB5b3VyIGdpdCByZXBvc2l0b3J5IHRvIEFXUyBQcm90b24uICovXG4gICAgcHVibGljIEFXU1Byb3RvblNlcnZpY2VHaXRTeW5jU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJvdG9uU2VydmljZUdpdFN5bmNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB3aGljaCBhbGxvd3MgQVdTIFByb3RvbiB0byBzeW5jIHlvdXIgZ2l0IHJlcG9zaXRvcnkgY29udGVudHMgdG8gUHJvdG9uIG9yIHN5bmMgUHJvdG9uIGNvbnRlbnRzIHRvIHlvdXIgZ2l0IHJlcG9zaXRvcmllcy4gKi9cbiAgICBwdWJsaWMgQVdTUHJvdG9uU3luY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Byb3RvblN5bmNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byB2aWV3IGFuZCBtb2RpZnkgcHVyY2hhc2Ugb3JkZXJzIG9uIGJpbGxpbmcgY29uc29sZSAqL1xuICAgIHB1YmxpYyBBV1NQdXJjaGFzZU9yZGVyc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1B1cmNoYXNlT3JkZXJzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgQVdTUXVpY2tTZXR1cENGR0NQYWNrc1Blcm1pc3Npb25zQm91bmRhcnkgcG9saWN5IGRlZmluZXMgdGhlIGxpc3Qgb2YgcGVybWlzc2lvbnMgdGhhdCBhcmUgcGVybWl0dGVkIGluIGFuIElBTSByb2xlIGNyZWF0ZWQgYnkgUXVpY2sgU2V0dXAuIFF1aWNrIFNldHVwIHVzZXMgYSByb2xlIGNyZWF0ZWQgd2l0aCB0aGlzIHBvbGljeSB0byBkZXBsb3kgQVdTIENvbmZpZyBjb25mb3JtYW5jZSBwYWNrcy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cENGR0NQYWNrc1Blcm1pc3Npb25zQm91bmRhcnkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cENGR0NQYWNrc1Blcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgQVdTIFN5c3RlbXMgTWFuYWdlciBRdWljayBTZXR1cCB0byBkZXBsb3kgbXVsdGlwbGUgY29uZmlndXJhdGlvbiB0eXBlcy4gVGhlc2UgY29uZmlndXJhdGlvbiB0eXBlcyBjcmVhdGUgSUFNIHJvbGVzIGFuZCBhdXRvbWF0aW9ucyB0aGF0IGNvbmZpZ3VyZSBmcmVxdWVudGx5IHVzZWQgQW1hem9uIFdlYiBTZXJ2aWNlcyBzZXJ2aWNlcyBhbmQgZmVhdHVyZXMgd2l0aCByZWNvbW1lbmRlZCBiZXN0IHByYWN0aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cERlcGxveW1lbnRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBEZXBsb3ltZW50Um9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBBV1NRdWlja1NldHVwRGV2T3BzR3VydVBlcm1pc3Npb25zQm91bmRhcnkgcG9saWN5IGRlZmluZXMgdGhlIGxpc3Qgb2YgcGVybWlzc2lvbnMgdGhhdCBhcmUgcGVybWl0dGVkIGluIGFuIElBTSByb2xlIGNyZWF0ZWQgYnkgUXVpY2sgU2V0dXAuIFF1aWNrIFNldHVwIHVzZXMgYSByb2xlIGNyZWF0ZWQgd2l0aCB0aGlzIHBvbGljeSB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSBBbWF6b24gRGV2T3BzIEd1cnUuIFRoaXMgcG9saWN5IGFsc28gcHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gZW5hYmxlIFN5c3RlbXMgTWFuYWdlciBFeHBsb3Jlci4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cERldk9wc0d1cnVQZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBEZXZPcHNHdXJ1UGVybWlzc2lvbnNCb3VuZGFyeSk7XG4gICAgfVxuXG4gICAgLyoqIFF1aWNrU2V0dXAgY3JlYXRlcyBJQU0gcm9sZXMgd2hpY2ggZW5hYmxlIGl0IHRvIGNvbmZpZ3VyZSB0aGUgU3lzdGVtcyBNYW5hZ2VyIERpc3RyaWJ1dG9yIGZlYXR1cmUgb24geW91ciBiZWhhbGYsIGFuZCB1c2VzIHRoaXMgcG9saWN5IHdoZW4gY3JlYXRpbmcgc3VjaCByb2xlcyB0byBkZWZpbmUgdGhlIGJvdW5kYXJ5IG9mIHRoZWlyIHBlcm1pc3Npb25zLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwRGlzdHJpYnV0b3JQZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBEaXN0cmlidXRvclBlcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBTeXN0ZW1zIE1hbmFnZXIgdG8gcnVuIHRoZSBBV1NRdWlja1NldHVwVHlwZS1FbmFibGVBUkVYIEF1dG9tYXRpb24gcnVuYm9vaywgd2hpY2ggZW5hYmxlcyBBV1MgUmVzb3VyY2UgRXhwbG9yZXIgZm9yIHVzZSB3aXRoIFN5c3RlbXMgTWFuYWdlci4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cEVuYWJsZUFSRVhFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cEVuYWJsZUFSRVhFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBwcmluY2lwYWxzIHRvIHJ1biB0aGUgQVdTUXVpY2tTZXR1cFR5cGUtRW5hYmxlREhNQyBBdXRvbWF0aW9uIHJ1bmJvb2ssIHdoaWNoIGVuYWJsZXMgRGVmYXVsdCBIb3N0IE1hbmFnZW1lbnQgQ29uZmlndXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cEVuYWJsZURITUNFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cEVuYWJsZURITUNFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgUXVpY2sgU2V0dXAgdG8gZGVwbG95IHRoZSBjb25maWd1cmF0aW9uIHR5cGUgcmVxdWlyZWQgdG8gc2V0IHVwIGp1c3QtaW4tdGltZSBub2RlIGFjY2Vzcy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cEpJVE5BRGVwbG95bWVudFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cEpJVE5BRGVwbG95bWVudFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBTeXN0ZW1zIE1hbmFnZXIgdG8gY3JlYXRlIGEgZGVmYXVsdCBJQU0gaW5zdGFuY2UgcHJvZmlsZSBmb3IgdGhlIFF1aWNrIFNldHVwIGNhcGFiaWxpdHkgYW5kIGF0dGFjaCBpdCB0byBBbWF6b24gRUMyIGluc3RhbmNlcyB0aGF0IGRvbid0IGFscmVhZHkgaGF2ZSBhbiBpbnN0YW5jZS4gcHJvZmlsZSBhdHRhY2hlZC4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cE1hbmFnZWRJbnN0YW5jZVByb2ZpbGVFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cE1hbmFnZWRJbnN0YW5jZVByb2ZpbGVFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBwZXJtaXNzaW9ucyB0byBlbmFibGUganVzdC1pbi10aW1lIG5vZGUgYWNjZXNzIGZvciBTeXN0ZW1zIE1hbmFnZXIuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBNYW5hZ2VKSVROQVJlc291cmNlc0V4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwTWFuYWdlSklUTkFSZXNvdXJjZXNFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHBhdGNoIGJhc2VsaW5lcyB0aGF0IGhhdmUgYmVlbiBjb25maWd1cmVkIGJ5IGFuIGFkbWluaXN0cmF0b3IgaW4gdGhlIGN1cnJlbnQgQVdTIGFjY291bnQgb3Igb3JnYW5pemF0aW9uIHVzaW5nIFF1aWNrIFNldHVwLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwUGF0Y2hQb2xpY3lCYXNlbGluZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwUGF0Y2hQb2xpY3lCYXNlbGluZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgUXVpY2sgU2V0dXAgdG8gY3JlYXRlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBwYXRjaCBwb2xpY3kgY29uZmlndXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFBhdGNoUG9saWN5RGVwbG95bWVudFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cFBhdGNoUG9saWN5RGVwbG95bWVudFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBRdWlja1NldHVwIGNyZWF0ZXMgSUFNIHJvbGVzIHdoaWNoIGVuYWJsZSBpdCB0byBjb25maWd1cmUgdGhlIFN5c3RlbXMgTWFuYWdlciBQYXRjaCBNYW5hZ2VyIGZlYXR1cmUgb24geW91ciBiZWhhbGYsIGFuZCB1c2VzIHRoaXMgcG9saWN5IHdoZW4gY3JlYXRpbmcgc3VjaCByb2xlcyB0byBkZWZpbmUgdGhlIGJvdW5kYXJ5IG9mIHRoZWlyIHBlcm1pc3Npb25zLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwUGF0Y2hQb2xpY3lQZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBQYXRjaFBvbGljeVBlcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgQVdTUXVpY2tTZXR1cFNjaGVkdWxlclBlcm1pc3Npb25zQm91bmRhcnkgcG9saWN5IGRlZmluZXMgdGhlIGxpc3Qgb2YgcGVybWlzc2lvbnMgdGhhdCBhcmUgcGVybWl0dGVkIGluIGFuIElBTSByb2xlIGNyZWF0ZWQgYnkgUXVpY2sgU2V0dXAuIFF1aWNrIFNldHVwIHVzZXMgYSByb2xlIGNyZWF0ZWQgd2l0aCB0aGlzIHBvbGljeSB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSBzY2hlZHVsZWQgb3BlcmF0aW9ucyBvbiBBbWF6b24gRUMyIGluc3RhbmNlcyBhbmQgb3RoZXIgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwU2NoZWR1bGVyUGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwU2NoZWR1bGVyUGVybWlzc2lvbnNCb3VuZGFyeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhZG1pbmlzdHJhdGl2ZSBwZXJtc3Npb25zIHRoYXQgYWxsb3cgUXVpY2sgU2V0dXAgdG8gY3JlYXRlIHJlc291cmNlcyB0aGF0IGFyZSB1c2VkIGR1cmluZyB0aGUgU3lzdGVtcyBNYW5hZ2VyIG9uYm9hcmRpbmcgcHJvY2Vzcy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFNTTURlcGxveW1lbnRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBTU01EZXBsb3ltZW50Um9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgbGlzdGluZyBhbGwgUzMgYnVja2V0cyBpbiBhbiBhY2NvdW50OyBhbmQgZm9yIG1hbmFnaW5nIGFuZCByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGFib3V0IHNwZWNpZmljIGJ1Y2tldHMgaW4gdGhlIHByaW5jaXBhbCBhY2NvdW50IHRoYXQgYXJlIG1hbmFnZWQgdGhyb3VnaCBBV1MgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwU1NNRGVwbG95bWVudFMzQnVja2V0Um9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwU1NNRGVwbG95bWVudFMzQnVja2V0Um9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFF1aWNrIFNldHVwIGNyZWF0ZXMgSUFNIHJvbGVzIHdoaWNoIGVuYWJsZSBpdCB0byBjb25maWd1cmUgdGhlIEhvc3QgTWFuYWdlciBRdWljayBTZXR1cCB0eXBlIG9uIHlvdXIgYmVoYWxmLCBhbmQgdXNlcyB0aGlzIHBvbGljeSB3aGVuIGNyZWF0aW5nIHN1Y2ggcm9sZXMgdG8gZGVmaW5lIHRoZSBib3VuZGFyeSBvZiB0aGVpciBwZXJtaXNzaW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFNTTUhvc3RNZ210UGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwU1NNSG9zdE1nbXRQZXJtaXNzaW9uc0JvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHBvbGljeSBncmFudHMgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBRdWljayBTZXR1cCB0byBydW4gdGhlIGEgQVdTIENsb3VkRm9ybWF0aW9uIGN1c3RvbSByZXNvdXJjZSBvbiBsaWZlY3ljbGUgZXZlbnRzIGR1cmluZyBRdWljayBTZXR1cCBkZXBsb3ltZW50IGluIFN5c3RlbXMgTWFuYWdlci4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFNTTUxpZmVjeWNsZU1hbmFnZW1lbnRFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cFNTTUxpZmVjeWNsZU1hbmFnZW1lbnRFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBTeXN0ZW1zIE1hbmFnZXIgdG8gY3JlYXRlIHByZXJlcXVpc2l0ZXMgc3VjaCBhcyBJQU0gcm9sZXMgcmVxdWlyZWQgZm9yIFN5c3RlbXMgTWFuYWdlciBvbmJvYXJkaW5nLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwU1NNTWFuYWdlUmVzb3VyY2VzRXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBTU01NYW5hZ2VSZXNvdXJjZXNFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBwcmluY2lwYWxzIHRvIHJ1biB0aGUgQVdTUXVpY2tTZXR1cFR5cGUtU3RhcnRTU01Bc3NvY2lhdGlvbnMgQXV0b21hdGlvbiBydW5ib29rLCB3aGljaCBzdGFydHMgU3RhdGUgTWFuYWdlciBBc3NvY2lhdGlvbnMuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBTdGFydFNTTUFzc29jaWF0aW9uc0V4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwU3RhcnRTU01Bc3NvY2lhdGlvbnNFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgbWFuYWdlZCBwb2xpY3kgQVdTUXVpY2tTZXR1cFN0YXJ0U3RvcEluc3RhbmNlc0V4ZWN1dGlvblBvbGljeSBwcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgUXVpY2sgU2V0dXAgdG8gc3RhcnQgYW5kIHN0b3AgQW1hem9uIEVDMiBpbnN0YW5jZXMgb24gYSBzY2hlZHVsZS4gVGhpcyBwb2xpY3kgaXMgdXNlZCB3aXRoIHRoZSBRdWljayBTZXR1cCBzY2hlZHVsZXIgY29uZmlndXJhdGlvbiB0eXBlLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwU3RhcnRTdG9wSW5zdGFuY2VzRXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBTdGFydFN0b3BJbnN0YW5jZXNFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgc2V0IG9mIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIHBlcmZvcm0gUXVpY2tTaWdodCBBc3NldCBCdW5kbGUgRXhwb3J0IE9wZXJhdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTaWdodEFzc2V0QnVuZGxlRXhwb3J0UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2lnaHRBc3NldEJ1bmRsZUV4cG9ydFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHRoZSBzZXQgb2YgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gcGVyZm9ybSBRdWlja1NpZ2h0IEFzc2V0IEJ1bmRsZSBJbXBvcnQgT3BlcmF0aW9ucyAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NpZ2h0QXNzZXRCdW5kbGVJbXBvcnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodEFzc2V0QnVuZGxlSW1wb3J0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUXVpY2tzaWdodCBhY2Nlc3MgdG8gQXRoZW5hIEFQSSBhbmQgUzMgYnVja2V0cyB1c2VkIGZvciBBdGhlbmEgcXVlcnkgcmVzdWx0cyAqL1xuICAgIHB1YmxpYyBBV1NRdWlja3NpZ2h0QXRoZW5hQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrc2lnaHRBdGhlbmFBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBRdWlja1NpZ2h0IHRvIGRlc2NyaWJlIHRoZSBSRFMgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFXU1F1aWNrU2lnaHREZXNjcmliZVJEUygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NpZ2h0RGVzY3JpYmVSRFMpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBRdWlja1NpZ2h0IHRvIGRlc2NyaWJlIFJlZHNoaWZ0IHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NpZ2h0RGVzY3JpYmVSZWRzaGlmdCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NpZ2h0RGVzY3JpYmVSZWRzaGlmdCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBbWF6b24gRWxhc3RpY3NlYXJjaCByZXNvdXJjZXMgZnJvbSBBbWF6b24gUXVpY2tTaWdodCAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NpZ2h0RWxhc3RpY3NlYXJjaFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NpZ2h0RWxhc3RpY3NlYXJjaFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdpdmUgUXVpY2tTaWdodCByZWFkLW9ubHkgYWNjZXNzIHRvIElvVCBBbmFseXRpY3MgZGF0YXNldHMgKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTaWdodElvVEFuYWx5dGljc0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NpZ2h0SW9UQW5hbHl0aWNzQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgUXVpY2tTaWdodCB0byBsaXN0IElBTSBlbnRpdGllcyAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NpZ2h0TGlzdElBTSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NpZ2h0TGlzdElBTSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBbWF6b24gT3BlblNlYXJjaCByZXNvdXJjZXMgZnJvbSBBbWF6b24gUXVpY2tTaWdodCAqL1xuICAgIHB1YmxpYyBBV1NRdWlja3NpZ2h0T3BlblNlYXJjaFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja3NpZ2h0T3BlblNlYXJjaFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBbWF6b24gU2FnZU1ha2VyIHJlc291cmNlcyBmcm9tIEFtYXpvbiBRdWlja1NpZ2h0ICovXG4gICAgcHVibGljIEFXU1F1aWNrU2lnaHRTYWdlTWFrZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodFNhZ2VNYWtlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB1c2VkIGJ5IFF1aWNrU2lnaHQgdG8gY3JlYXRlIHNlY3JldHMgaW4gQVdTIFNlY3JldHMgTWFuYWdlciBhbmQgdG8gYXR0YWNoIHJlc291cmNlIHBvbGljaWVzIG9uIGV4aXN0aW5nIFF1aWNrU2lnaHQgc2VjcmV0cy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTaWdodFNlY3JldHNNYW5hZ2VyV3JpdGVBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodFNlY3JldHNNYW5hZ2VyV3JpdGVBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdXNlZCBieSBRdWlja1NpZ2h0IHRvIGNyZWF0ZSBzZWNyZXRzIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgYW5kIHRvIGF0dGFjaCByZXNvdXJjZSBwb2xpY2llcyBvbiBleGlzdGluZyBRdWlja1NpZ2h0IHNlY3JldHMuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2lnaHRTZWNyZXRzTWFuYWdlcldyaXRlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2lnaHRTZWNyZXRzTWFuYWdlcldyaXRlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQVdTIFF1aWNrU2lnaHQgYWNjZXNzIHRvIEFXUyBUaW1lc3RyZWFtIEFQSXMuIEN1c3RvbWVycyBjYW4gYXR0YWNoIHRoaXMgcG9saWN5IHRvIEFXUyBRdWlja1NpZ2h0IHJvbGUgdG8gYWxsb3cgcmV0cmlldmFsIG9mIGRhdGEgYW5kIG1ldGFkYXRhLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NpZ2h0VGltZXN0cmVhbVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NpZ2h0VGltZXN0cmVhbVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBWUEMgUmVhY2hhYmlsaXR5IEFuYWx5emVyIHRvIGFjY2VzcyBBV1MgcmVzb3VyY2VzIGFuZCBpbnRlZ3JhdGUgd2l0aCBBV1MgT3JnYW5pemF0aW9ucyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTUmVhY2hhYmlsaXR5QW5hbHl6ZXJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSZWFjaGFiaWxpdHlBbmFseXplclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb24gdG8gdXNlIEFXUyBzZXJ2aWNlcyB3aXRoIHRoZSBBV1MgVG9vbGtpdCBmb3IgLk5FVCBSZWZhY3RvcmluZyBleHRlbnNpb24gZm9yIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvLiBJdCBpcyBpbnRlbmRlZCB0byBiZSBhdHRhY2hlZCB0byBhIGxvY2FsIEFXUyBwcm9maWxlLiBUaGUgcG9saWN5IGFsbG93cyB1cGxvYWRpbmcgYXBwbGljYXRpb24gYXJ0aWZhY3RzIGFuZCBkb3dubG9hZGluZyB0aGUgcmVzdWx0aW5nIGFydGlmYWN0cyBmcm9tIEFtYXpvbiBTMy4gSXQgYWxsb3dzIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyBpbnRvIGEgY29udGFpbmVyIGltYWdlIHVzaW5nIEFXUyBDb2RlQnVpbGQgYW5kIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgdGhlIGltYWdlcyBmcm9tIEFtYXpvbiBFbGFzdGljIENvbnRhaW5lciBSZWdpc3RyeSAoQW1hem9uIEVDUikuIEFuZCBpdCBhbGxvd3MgZGVwbG95bWVudCBvZiB0aGUgYXBwbGljYXRpb24gdG8gY29udGFpbmVyIHNlcnZpY2VzIG9uIEFXUyBzdWNoIGFzIEFtYXpvbiBFbGFzdGljIENvbnRhaW5lciBTZXJ2aWNlIChBbWF6b24gRUNTKSwgb3B0aW9uYWwgY3JlYXRpb24gb2YgVlBDIHJlc291cmNlcywgb3B0aW9uYWwgY29ubmVjdGlvbiB0byBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSBzdWNoIGFzIEFXUyBEaXJlY3RvcnkgU2VydmljZSwgYW5kIG90aGVyIHJlbGF0ZWQgc2VydmljZXMuICovXG4gICAgcHVibGljIEFXU1JlZmFjdG9yaW5nVG9vbGtpdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVmYWN0b3JpbmdUb29sa2l0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgQW1hem9uIEVDUyBUYXNrcyBjcmVhdGVkIGZvciB0ZXN0aW5nIGFwcGxpY2F0aW9ucyBpbiBBV1MgdXNpbmcgdGhlIEFXUyBUb29sa2l0IGZvciAuTkVUIFJlZmFjdG9yaW5nIGV4dGVuc2lvbiBmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8uIFRoZSBwb2xpY3kgZ3JhbnRzIGFjY2VzcyB0byBkb3dubG9hZCBhcHBsaWNhdGlvbiBhcnRpZmFjdHMgZnJvbSBBbWF6b24gUzMsIGNvbW11bmljYXRlIHRoZSBzdGF0dXMgb2YgdGhlIFRhc2sgdXNpbmcgQVdTIFN5c3RlbXMgTWFuYWdlciwgYW5kIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NSZWZhY3RvcmluZ1Rvb2xraXRTaWRlY2FyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1JlZmFjdG9yaW5nVG9vbGtpdFNpZGVjYXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZTpQb3N0IFByaXZhdGUgYWNjZXNzIHRvIHB1Ymxpc2ggQ2xvdWRXYXRjaCBtZXRyaWNzIGRhdGEgKi9cbiAgICBwdWJsaWMgQVdTcmVQb3N0UHJpdmF0ZUNsb3VkV2F0Y2hBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTcmVQb3N0UHJpdmF0ZUNsb3VkV2F0Y2hBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgdGhlIHJlOlBvc3QgU3BhY2Ugc2VydmljZSB0byBjcmVhdGUsIG1hbmFnZSwgYW5kIHJlc29sdmUgU3VwcG9ydCBjYXNlcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIFNwYWNlIGFwcGxpY2F0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NSZXBvc3RTcGFjZVN1cHBvcnRPcGVyYXRpb25zUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1JlcG9zdFNwYWNlU3VwcG9ydE9wZXJhdGlvbnNQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIEFXUyBSZXNpbGllbmNlIEh1YiBzZXJ2aWNlIHJvbGUgd2hpY2ggYWxsb3dzIGFjY2VzcyB0byBvdGhlciBBV1Mgc2VydmljZXMgaW4gb3JkZXIgdG8gZXhlY3V0ZSBhc3Nlc3NtZW50LiAqL1xuICAgIHB1YmxpYyBBV1NSZXNpbGllbmNlSHViQXNzc2Vzc21lbnRFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVzaWxpZW5jZUh1YkFzc3Nlc3NtZW50RXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFJlc291cmNlIEFjY2VzcyBNYW5hZ2VyICovXG4gICAgcHVibGljIEFXU1Jlc291cmNlQWNjZXNzTWFuYWdlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVzb3VyY2VBY2Nlc3NNYW5hZ2VyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIFJlc291cmNlIEFjY2VzcyBNYW5hZ2VyLiAqL1xuICAgIHB1YmxpYyBBV1NSZXNvdXJjZUFjY2Vzc01hbmFnZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSZXNvdXJjZUFjY2Vzc01hbmFnZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBV1MgUmVzb3VyY2UgQWNjZXNzIE1hbmFnZXIgQVBJcyBuZWVkZWQgYnkgYSByZXNvdXJjZSBzaGFyZSBwYXJ0aWNpcGFudC4gKi9cbiAgICBwdWJsaWMgQVdTUmVzb3VyY2VBY2Nlc3NNYW5hZ2VyUmVzb3VyY2VTaGFyZVBhcnRpY2lwYW50QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Jlc291cmNlQWNjZXNzTWFuYWdlclJlc291cmNlU2hhcmVQYXJ0aWNpcGFudEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBjb250YWluaW5nIFJlYWQtb25seSBBV1MgUmVzb3VyY2UgQWNjZXNzIE1hbmFnZXIgYWNjZXNzIHRvIGN1c3RvbWVycycgT3JnYW5pemF0aW9ucyBzdHJ1Y3R1cmUuIEl0IGFsc28gY29udGFpbnMgSUFNIHBlcm1pc3Npb25zIHRvIHNlbGYtZGVsZXRlIHRoZSByb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NSZXNvdXJjZUFjY2Vzc01hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSZXNvdXJjZUFjY2Vzc01hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhZG1pbmlzdHJhdGl2ZSBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgUmVzb3VyY2UgRXhwbG9yZXIgcmVzb3VyY2VzIGFuZCBncmFudHMgcmVhZC1vbmx5IHBlcm1pc3Npb25zIHRvIG90aGVyIEFXUyBzZXJ2aWNlcyB0byBzdXBwb3J0IHRoaXMgYWNjZXNzLiAqL1xuICAgIHB1YmxpYyBBV1NSZXNvdXJjZUV4cGxvcmVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSZXNvdXJjZUV4cGxvcmVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhZG1pbmlzdHJhdGl2ZSBwZXJtaXNzaW9ucyB0byBSZXNvdXJjZSBFeHBsb3JlciBhbmQgZ3JhbnRzIHJlYWQtb25seSBwZXJtaXNzaW9ucyB0byBvdGhlciBBV1Mgc2VydmljZXMgdG8gc3VwcG9ydCB0aGlzIGFjY2Vzcy4gVGhlIEFXUyBPcmdhbml6YXRpb25zIGFkbWluaXN0cmF0b3IgbmVlZHMgdGhlc2UgcGVybWlzc2lvbnMgdG8gc2V0dXAgYW5kIG1hbmFnZSBtdWx0aS1hY2NvdW50IHNlYXJjaCBpbiB0aGUgY29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTUmVzb3VyY2VFeHBsb3Jlck9yZ2FuaXphdGlvbnNBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVzb3VyY2VFeHBsb3Jlck9yZ2FuaXphdGlvbnNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcmVhZC1vbmx5IHBlcm1pc3Npb25zIHRvIHNlYXJjaCBmb3IgYW5kIHZpZXcgUmVzb3VyY2UgRXhwbG9yZXIgcmVzb3VyY2VzIGFuZCBncmFudHMgcmVhZC1vbmx5IHBlcm1pc3Npb25zIHRvIG90aGVyIEFXUyBzZXJ2aWNlcyB0byBzdXBwb3J0IHRoaXMgYWNjZXNzLiAqL1xuICAgIHB1YmxpYyBBV1NSZXNvdXJjZUV4cGxvcmVyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVzb3VyY2VFeHBsb3JlclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFJlc291cmNlIEV4cGxvcmVyIHRvIHZpZXcgcmVzb3VyY2VzIGFuZCBDbG91ZFRyYWlsIGV2ZW50cyBvbiB5b3VyIGJlaGFsZiB0byBpbmRleCB5b3VyIHJlc291cmNlcyBmb3Igc2VhcmNoLiAqL1xuICAgIHB1YmxpYyBBV1NSZXNvdXJjZUV4cGxvcmVyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVzb3VyY2VFeHBsb3JlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBpcyB0aGUgcmVhZCBvbmx5IHBvbGljeSBmb3IgQVdTIFJlc291cmNlIEdyb3VwcyAqL1xuICAgIHB1YmxpYyBBV1NSZXNvdXJjZUdyb3Vwc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Jlc291cmNlR3JvdXBzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgUm9ib01ha2VyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiBBbHNvIHByb3ZpZGVzIHNlbGVjdCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyAoZS5nLiwgUzMsIElBTSkuICovXG4gICAgcHVibGljIEFXU1JvYm9NYWtlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUm9ib01ha2VyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIFJvYm9NYWtlciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESyAqL1xuICAgIHB1YmxpYyBBV1NSb2JvTWFrZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSb2JvTWFrZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFJvYm9NYWtlciBzZXJ2aWNlIHBvbGljeSAqL1xuICAgIHB1YmxpYyBBV1NSb2JvTWFrZXJTZXJ2aWNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1JvYm9NYWtlclNlcnZpY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBSb2JvTWFrZXIgc2VydmljZSBwb2xpY3kgKi9cbiAgICBwdWJsaWMgQVdTUm9ib01ha2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUm9ib01ha2VyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhbGwgcGVybWlzc2lvbnMgdG8gSUFNIFJvbGVzIEFueXdoZXJlIHJlc291cmNlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bzogQ3JlYXRlUHJvZmlsZSwgRGVsZXRlVHJ1c3RBbmNob3IsIERpc2FibGVDUkwsIFJlc2V0Tm90aWZpY2F0aW9uU2V0dGluZ3MuICovXG4gICAgcHVibGljIEFXU1JvbGVzQW55d2hlcmVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1JvbGVzQW55d2hlcmVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IHBlcm1pc3Npb25zIHRvIElBTSBSb2xlcyBBbnl3aGVyZSByZXNvdXJjZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG86IEdldFRydXN0QW5jaG9yLCBMaXN0UHJvZmlsZXMsIEdldENSTC4gVGhlcmUgd2lsbCBiZSBubyBvdGhlciBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgc2VydmljZXMgaW5jbHVkZWQgaW4gdGhpcyBwb2xpY3kuICovXG4gICAgcHVibGljIEFXU1JvbGVzQW55d2hlcmVSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSb2xlc0FueXdoZXJlUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgSUFNIFJvbGVzIEFueXdoZXJlIHRvIHB1Ymxpc2ggc2VydmljZS91c2FnZSBtZXRyaWNzIHRvIENsb3VkV2F0Y2ggYW5kIGNoZWNrIHRoZSBzdGF0dXMgb2YgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdGllcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTUm9sZXNBbnl3aGVyZVNlcnZpY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUm9sZXNBbnl3aGVyZVNlcnZpY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBBbWF6b24gUzMgb24gT3V0cG9zdHMgc2VydmljZSB0byBtYW5hZ2UgRUMyIG5ldHdvcmsgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NTM09uT3V0cG9zdHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTM09uT3V0cG9zdHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIFNhdmluZ3MgUGxhbnMgc2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NTYXZpbmdzUGxhbnNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NhdmluZ3NQbGFuc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIFNhdmluZ3MgUGxhbnMgc2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NTYXZpbmdzUGxhbnNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTYXZpbmdzUGxhbnNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHVzZSBBV1MgU2VjdXJpdHkgSHViLiAqL1xuICAgIHB1YmxpYyBBV1NTZWN1cml0eUh1YkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VjdXJpdHlIdWJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb24gdG8gZW5hYmxlIGFuZCBtYW5hZ2UgQVdTIFNlY3VyaXR5IEh1YiB3aXRoaW4gYW4gb3JnYW5pemF0aW9uLiBJbmNsdWRlcyBlbmFibGluZyB0aGUgc2VydmljZSBhY3Jvc3MgdGhlIG9yZ2FuaXphdGlvbiwgYW5kIGRldGVybWluaW5nIHRoZSBkZWxlZ2F0ZWQgYWRtaW5pc3RyYXRvciBhY2NvdW50IGZvciB0aGUgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTU2VjdXJpdHlIdWJPcmdhbml6YXRpb25zQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlY3VyaXR5SHViT3JnYW5pemF0aW9uc0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIFNlY3VyaXR5IEh1YiByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTU2VjdXJpdHlIdWJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZWN1cml0eUh1YlJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQSBzZXJ2aWNlLWxpbmtlZCByb2xlIHJlcXVpcmVkIGZvciBBV1MgU2VjdXJpdHkgSHViIHRvIGFjY2VzcyB5b3VyIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTU2VjdXJpdHlIdWJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZWN1cml0eUh1YlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIFNlY3VyaXR5IEh1YiB0byBtYW5hZ2UgQVdTIENvbmZpZyBydWxlcyBhbmQgU2VjdXJpdHkgSHViIHJlc291cmNlcyBpbiB5b3VyIG9yZ2FuaXphdGlvbiBhbmQgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU1NlY3VyaXR5SHViVjJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZWN1cml0eUh1YlYyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgcHJvdmlkZXMgY3VzdG9tZXJzIHdpdGggUmVhZCBhbmQgV3JpdGUgcGVybWlzc2lvbnMgdG8gY2FzZSByZXNvdXJjZXMgdGhhdCBhcmUgY3JlYXRlZCB0aHJvdWdoIHRoZSBTZWN1cml0eSBJbmNpZGVudCBSZXNwb25zZSBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NTZWN1cml0eUluY2lkZW50UmVzcG9uc2VDYXNlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZWN1cml0eUluY2lkZW50UmVzcG9uc2VDYXNlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBwcm92aWRlcyBjdXN0b21lcnMgd2l0aCBSZWFkIGFuZCBXcml0ZSBwZXJtaXNzaW9ucyB0byBhbGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgdG8gdGhlIFNlY3VyaXR5IEluY2lkZW50IFJlc3BvbnNlIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU1NlY3VyaXR5SW5jaWRlbnRSZXNwb25zZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VjdXJpdHlJbmNpZGVudFJlc3BvbnNlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBwcm92aWRlcyBjdXN0b21lcnMgd2l0aCBSZWFkLW9ubHkgcGVybWlzc2lvbnMgdG8gYWxsIHJlc291cmNlcyBhc3NvY2lhdGVkIHRvIHRoZSBTZWN1cml0eSBJbmNpZGVudCBSZXNwb25zZSBzZXJ2aWNlLiBQZXJtaXNzaW9uIGluY2x1ZGVzIGFjY2VzcyB0byBHZXRDYXNlQXR0YWNobWVudERvd25sb2FkVXJsIGFzIHdlbGwgZm9yIHRoZSBhYmlsaXR5IHRvIGdldCBjYXNlIGF0dGFjaG1lbnQgZG93bmxvYWQgVVJMcy4gKi9cbiAgICBwdWJsaWMgQVdTU2VjdXJpdHlJbmNpZGVudFJlc3BvbnNlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VjdXJpdHlJbmNpZGVudFJlc3BvbnNlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyBtYW5hZ2VkIG9yIHVzZWQgYnkgU2VjdXJpdHkgSW5jaWRlbnQgUmVzcG9uc2UgKi9cbiAgICBwdWJsaWMgQVdTU2VjdXJpdHlJbmNpZGVudFJlc3BvbnNlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VjdXJpdHlJbmNpZGVudFJlc3BvbnNlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFNlY3VyaXR5IEluY2lkZW50IFJlc3BvbnNlIHRvIGNvbnRpbnVvdXNseSBtb25pdG9yIHlvdXIgZW52aXJvbm1lbnQgZm9yIHNlY3VyaXR5IHRocmVhdHMsIHR1bmUgc2VjdXJpdHkgc2VydmljZXMgdG8gcmVkdWNlIGFsZXJ0IG5vaXNlLCBhbmQgZ2F0aGVyIGluZm9ybWF0aW9uIHRvIGludmVzdGlnYXRlIHBvdGVudGlhbCBpbmNpZGVudHMuICovXG4gICAgcHVibGljIEFXU1NlY3VyaXR5SW5jaWRlbnRSZXNwb25zZVRyaWFnZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlY3VyaXR5SW5jaWRlbnRSZXNwb25zZVRyaWFnZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gc2VydmljZSBjYXRhbG9nIGFkbWluIGNhcGFiaWxpdGllcyAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlQ2F0YWxvZ0FkbWluRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlQ2F0YWxvZ0FkbWluRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gU2VydmljZSBDYXRhbG9nIGFkbWluIGNhcGFiaWxpdGllcyAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlQ2F0YWxvZ0FkbWluUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZUNhdGFsb2dBZG1pblJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gU2VydmljZSBDYXRhbG9nIEFwcCBSZWdpc3RyeSBjYXBhYmlsaXRpZXMgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZUNhdGFsb2dBcHBSZWdpc3RyeUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZUNhdGFsb2dBcHBSZWdpc3RyeUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIFNlcnZpY2UgQ2F0YWxvZyBBcHAgUmVnaXN0cnkgY2FwYWJpbGl0ZXMgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZUNhdGFsb2dBcHBSZWdpc3RyeVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VDYXRhbG9nQXBwUmVnaXN0cnlSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBTZXJ2aWNlIENhdGFsb2cgQXBwUmVnaXN0cnkgdG8gbWFuYWdlIFJlc291cmNlIEdyb3VwcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlQ2F0YWxvZ0FwcFJlZ2lzdHJ5U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZUNhdGFsb2dBcHBSZWdpc3RyeVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gc2VydmljZSBjYXRhbG9nIGVuZHVzZXIgY2FwYWJpbGl0aWVzICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VDYXRhbG9nRW5kVXNlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZUNhdGFsb2dFbmRVc2VyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gU2VydmljZSBDYXRhbG9nIGVuZC11c2VyIGNhcGFiaWxpdGllcyAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlQ2F0YWxvZ0VuZFVzZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlQ2F0YWxvZ0VuZFVzZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEEgU2VydmljZSBMaW5rZWQgUm9sZSBQb2xpY3kgZm9yIEFXUyBTZXJ2aWNlQ2F0YWxvZyB0byBzeW5jIHdpdGggQVdTIE9yZ2FuaXphdGlvbnMgb3JnYW5pemF0aW9uIHN0cnVjdHVyZSAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlQ2F0YWxvZ09yZ3NEYXRhU3luY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VDYXRhbG9nT3Jnc0RhdGFTeW5jU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBIFNlcnZpY2UgTGlua2VkIFJvbGUgZm9yIEFXUyBTZXJ2aWNlQ2F0YWxvZyB0byBzeW5jIFByb3Zpc2lvbmluZyBBcnRpZmFjdHMgZnJvbSBzb3VyY2UgcmVwb3NpdG9yaWVzICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VDYXRhbG9nU3luY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VDYXRhbG9nU3luY1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUGVybWlzc2lvbnMgcmVxdWlyZWQgZm9yIG1hbmFnaW5nIG5vZGVncm91cHMgaW4gdGhlIGN1c3RvbWVyJ3MgYWNjb3VudC4gVGhlc2UgcG9saWNpZXMgcmVsYXRlZCB0byBtYW5hZ2VtZW50IG9mIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzOiBBdXRvc2NhbGluZ0dyb3VwcywgU2VjdXJpdHlHcm91cHMsIExhdW5jaFRlbXBsYXRlcyBhbmQgSW5zdGFuY2VQcm9maWxlcy4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JBbWF6b25FS1NOb2RlZ3JvdXAoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JBbWF6b25FS1NOb2RlZ3JvdXApO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIFNlcnZpY2UgTGlua2VkIFJvbGUgcHJvdmlkZXMgQW1hem9uIFEgRGV2ZWxvcGVyIGFiaWxpdHkgdG8gcHJvdmlkZSB1c2FnZSBpbmZvcm1hdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JBbWF6b25RRGV2ZWxvcGVyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yQW1hem9uUURldmVsb3Blcik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgU2VydmljZS1MaW5rZWQgUm9sZSBwcm92aWRlcyBBV1MgVHJhbnNmb3JtIHdpdGggdGhlIGFiaWxpdHkgdG8gcHJvdmlkZSB1c2FnZSBpbmZvcm1hdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JBV1NUcmFuc2Zvcm0oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JBV1NUcmFuc2Zvcm0pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gU3lzdGVtcyBNYW5hZ2VyIHJlc291cmNlcyB1c2VkIGJ5IENsb3VkV2F0Y2ggQWxhcm1zICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yQ2xvdWRXYXRjaEFsYXJtc0FjdGlvblNTTVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yQ2xvdWRXYXRjaEFsYXJtc0FjdGlvblNTTVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIENsb3VkV2F0Y2ggdG8gYWNjZXNzIFJEUyBQZXJmb3JtYW5jZSBJbnNpZ2h0cyBtZXRyaWNzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yQ2xvdWRXYXRjaE1ldHJpY3NEYlBlcmZJbnNpZ2h0c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yQ2xvdWRXYXRjaE1ldHJpY3NEYlBlcmZJbnNpZ2h0c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQSBzZXJ2aWNlLWxpbmtlZCByb2xlIHJlcXVpcmVkIGZvciBBbWF6b24gQ29kZUd1cnUgUHJvZmlsZXIgdG8gc2VuZCBub3RpZmljYXRpb25zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvckNvZGVHdXJ1UHJvZmlsZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JDb2RlR3VydVByb2ZpbGVyKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyByb2xlIGdyYW50cyBwZXJtaXNzaW9ucyB0byBDb2RlV2hpc3BlcmVyIHRvIGFjY2VzcyBkYXRhIGluIHlvdXIgYWNjb3VudCB0byBjYWxjdWxhdGUgYmlsbGluZywgcHJvdmlkZXMgYWNjZXNzIHRvIGNyZWF0ZSBhbmQgYWNjZXNzIHNlY3VyaXR5IHJlcG9ydHMgaW4gQW1hem9uIENvZGVHdXJ1LCBhbmQgZW1pdCBkYXRhIHRvIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yQ29kZVdoaXNwZXJlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvckNvZGVXaGlzcGVyZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgRUMyIFNjaGVkdWxlZCBJbnN0YW5jZXMgdG8gbGF1bmNoIGFuZCBtYW5hZ2Ugc3BvdCBpbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yRUMyU2NoZWR1bGVkSW5zdGFuY2VzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yRUMyU2NoZWR1bGVkSW5zdGFuY2VzKTtcbiAgICB9XG5cbiAgICAvKiogQVdTIEdyb3VuZFN0YXRpb24gdXNlcyB0aGlzIHNlcnZpY2UtbGlua2VkIHJvbGUgdG8gaW52b2tlIEVDMiB0byBmaW5kIHB1YmxpYyBJUHY0IGFkZHJlc3NlcyAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvckdyb3VuZFN0YXRpb25EYXRhZmxvd0VuZHBvaW50R3JvdXBQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JHcm91bmRTdGF0aW9uRGF0YWZsb3dFbmRwb2ludEdyb3VwUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEVDMkltYWdlQnVpbGRlciB0byBjYWxsIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JJbWFnZUJ1aWxkZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JJbWFnZUJ1aWxkZXIpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIElvVCBTaXRlV2lzZSB0byBwcm92aXNpb24gYW5kIG1hbmFnZSBnYXRld2F5cyBhcyB3ZWxsIGFzIHF1ZXJ5IGRhdGEuIFRoZSBwb2xpY3kgaW5jbHVkZXMgcmVxdWlyZWQgQVdTIEdyZWVuZ3Jhc3MgcGVybWlzc2lvbnMgZm9yIGRlcGxveWluZyB0byBncm91cHMsIEFXUyBMYW1iZGEgcGVybWlzc2lvbnMgZm9yIGNyZWF0aW5nIGFuZCB1cGRhdGluZyBzZXJ2aWNlLXByZWZpeGVkIGZ1bmN0aW9ucywgYW5kIEFXUyBJb1QgQW5hbHl0aWNzIHBlcm1pc3Npb25zIGZvciBxdWVyeWluZyBkYXRhIGZyb20gZGF0YXN0b3Jlcy4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JJb1RTaXRlV2lzZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvcklvVFNpdGVXaXNlKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIExvZyBEZWxpdmVyeSBzZXJ2aWNlIHRvIGRlbGl2ZXIgbG9ncyBieSBjYWxsaW5nIGxvZyBkZXN0aW5hdGlvbiBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JMb2dEZWxpdmVyeVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvckxvZ0RlbGl2ZXJ5UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIEFtYXpvbiBNb25pdHJvbiBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgQVdTIHJlc291cmNlcywgaW5jbHVkaW5nIEFXUyBTU08gdXNlciBhc3NpZ25tZW50IG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvck1vbml0cm9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yTW9uaXRyb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBDbG91ZHdhdGNoIGFjY2VzcyB0byBwdWJsaXNoIG9wZXJhdGlvbmFsIGFuZCB1c2FnZSBtZXRyaWNzIGFuZCBsb2dzIGZvciBBbWF6b24gTmVwdHVuZSAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvck5lcHR1bmVHcmFwaFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvck5lcHR1bmVHcmFwaFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGRlc2NyaWJlIGFuZCB1cGRhdGUgUHJpdmF0ZSBNYXJrZXRwbGFjZSByZXNvdXJjZXMgYW5kIGRlc2NyaWJlIEFXUyBPcmdhbml6YXRpb25zICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yUHJpdmF0ZU1hcmtldHBsYWNlQWRtaW5Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JQcml2YXRlTWFya2V0cGxhY2VBZG1pblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgUHJvY3VyZW1lbnQgSW5zaWdodHMgdG8gb2J0YWluIE9yZ2FuaXphdGlvbiBBY2NvdW50IGRldGFpbHMgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JQcm9jdXJlbWVudEluc2lnaHRzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yUHJvY3VyZW1lbnRJbnNpZ2h0c1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBV1Mgc2VydmljZXMgYW5kIHJlc291cmNlcyBuZWNlc3NhcnkgdG8gbWlncmF0ZSBzZXJ2aWNlIGluc3RhbmNlcyBpbnRvIEFXUyBpbmNsdWRpbmcgRUMyLCBTMyBhbmQgQ2xvdWRmb3JtYXRpb24uICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yU01TKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yU01TKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBVc2VyIFN1YnNjcmlwdGlvbnMgc2VydmljZSB0byB5b3VyIElkZW50aXR5IENlbnRlciByZXNvdXJjZXMgdG8gYXV0b21hdGljYWxseSB1cGRhdGUgeW91ciBzdWJzY3JpcHRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvclVzZXJTdWJzY3JpcHRpb25zKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yVXNlclN1YnNjcmlwdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBV1MgQmFja3VwIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBjb21wbGlhbmNlIHJlcG9ydHMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVQb2xpY3lGb3JCYWNrdXBSZXBvcnRzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlUG9saWN5Rm9yQmFja3VwUmVwb3J0cyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGNvbnRhaW5zIHBlcm1pc3Npb25zIGZvciB0ZXN0aW5nIHJlc3RvcmVzIGFuZCBmb3IgY2xlYW5pbmcgdXAgcmVzb3VyY2VzIGNyZWF0ZWQgZHVyaW5nIHRlc3RzLiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZVBvbGljeUZvckJhY2t1cFJlc3RvcmVUZXN0aW5nKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlUG9saWN5Rm9yQmFja3VwUmVzdG9yZVRlc3RpbmcpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIG1hbmFnZWQgcG9saWN5IHByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBBbWF6b24gV29ya1NwYWNlcyB0byBtYW5hZ2UgRUMyIGluc3RhbmNlcyBpbiB5b3VyIEFXUyBhY2NvdW50ICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlUG9saWN5Rm9yV29ya3NwYWNlc0luc3RhbmNlcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZVBvbGljeUZvcldvcmtzcGFjZXNJbnN0YW5jZXMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgQVdTIEREb1MgUmVzcG9uc2UgVGVhbSB3aXRoIGxpbWl0ZWQgYWNjZXNzIHRvIHlvdXIgQVdTIGFjY291bnQgdG8gYXNzaXN0IHdpdGggRERvUyBhdHRhY2sgbWl0aWdhdGlvbiBkdXJpbmcgYSBoaWdoLXNldmVyaXR5IGV2ZW50LiAqL1xuICAgIHB1YmxpYyBBV1NTaGllbGREUlRBY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2hpZWxkRFJUQWNjZXNzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBTaGllbGQgdG8gYWNjZXNzIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYgdG8gcHJvdmlkZSBERG9TIHByb3RlY3Rpb24uICovXG4gICAgcHVibGljIEFXU1NoaWVsZFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NoaWVsZFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHB1Ymxpc2ggbWV0cmljcyBhbmQgcHJvdmlkZSBpbnNpZ2h0cyBmb3IgeW91ciBzb2NpYWwgbWVzc2FnZSBzZW5kaW5nLiAqL1xuICAgIHB1YmxpYyBBV1NTb2NpYWxNZXNzYWdpbmdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTb2NpYWxNZXNzYWdpbmdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEFXUyBTeXN0ZW1zIE1hbmFnZXIgZm9yIFNBUCB3aXRoIHRoZSBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gbWFuYWdlIGFuZCBpbnRlZ3JhdGUgU0FQIHNvZnR3YXJlIHdpdGggQVdTLiAqL1xuICAgIHB1YmxpYyBBV1NTU01Gb3JTQVBTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU01Gb3JTQVBTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgU2VydmljZSBMaW5rZWQgUm9sZSBBV1NTZXJ2aWNlUm9sZUZvckFtYXpvblNTTV9PcHNJbnNpZ2h0cyAqL1xuICAgIHB1YmxpYyBBV1NTU01PcHNJbnNpZ2h0c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTTU9wc0luc2lnaHRzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBZG1pbmlzdHJhdG9yIGFjY2VzcyBmb3IgU1NPIERpcmVjdG9yeSAqL1xuICAgIHB1YmxpYyBBV1NTU09EaXJlY3RvcnlBZG1pbmlzdHJhdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTT0RpcmVjdG9yeUFkbWluaXN0cmF0b3IpO1xuICAgIH1cblxuICAgIC8qKiBSZWFkT25seSBhY2Nlc3MgZm9yIFNTTyBEaXJlY3RvcnkgKi9cbiAgICBwdWJsaWMgQVdTU1NPRGlyZWN0b3J5UmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NPRGlyZWN0b3J5UmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3Mgd2l0aGluIEFXUyBTU08gdG8gbWFuYWdlIEFXUyBPcmdhbml6YXRpb25zIG1hc3RlciBhbmQgbWVtYmVyIGFjY291bnRzIGFuZCBjbG91ZCBhcHBsaWNhdGlvbiAqL1xuICAgIHB1YmxpYyBBV1NTU09NYXN0ZXJBY2NvdW50QWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU09NYXN0ZXJBY2NvdW50QWRtaW5pc3RyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB3aXRoaW4gQVdTIFNTTyB0byBtYW5hZ2UgQVdTIE9yZ2FuaXphdGlvbnMgbWVtYmVyIGFjY291bnRzIGFuZCBjbG91ZCBhcHBsaWNhdGlvbiAqL1xuICAgIHB1YmxpYyBBV1NTU09NZW1iZXJBY2NvdW50QWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU09NZW1iZXJBY2NvdW50QWRtaW5pc3RyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIFNTTyBjb25maWd1cmF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTU1NPUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NPUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgQVdTIFNTTyBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgQVdTIHJlc291cmNlcywgaW5jbHVkaW5nIElBTSByb2xlcywgcG9saWNpZXMgYW5kIFNBTUwgSWRQIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NTU09TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU09TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFuIGFjY2VzcyBwb2xpY3kgZm9yIHByb3ZpZGluZyBhIHVzZXIvcm9sZS9ldGMgYWNjZXNzIHRvIHRoZSBBV1MgU3RlcEZ1bmN0aW9ucyBjb25zb2xlLiBGb3IgYSBmdWxsIGNvbnNvbGUgZXhwZXJpZW5jZSwgaW4gYWRkaXRpb24gdG8gdGhpcyBwb2xpY3ksIGEgdXNlciBtYXkgbmVlZCBpYW06UGFzc1JvbGUgcGVybWlzc2lvbiBvbiBvdGhlciBJQU0gcm9sZXMgdGhhdCBjYW4gYmUgYXNzdW1lZCBieSB0aGUgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTU3RlcEZ1bmN0aW9uc0NvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N0ZXBGdW5jdGlvbnNDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFuIGFjY2VzcyBwb2xpY3kgZm9yIHByb3ZpZGluZyBhIHVzZXIvcm9sZS9ldGMgYWNjZXNzIHRvIHRoZSBBV1MgU3RlcEZ1bmN0aW9ucyBBUEkuIEZvciBmdWxsIGFjY2VzcywgaW4gYWRkaXRpb24gdG8gdGhpcyBwb2xpY3ksIGEgdXNlciBNVVNUIGhhdmUgaWFtOlBhc3NSb2xlIHBlcm1pc3Npb24gb24gYXQgbGVhc3Qgb25lIElBTSByb2xlIHRoYXQgY2FuIGJlIGFzc3VtZWQgYnkgdGhlIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU1N0ZXBGdW5jdGlvbnNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N0ZXBGdW5jdGlvbnNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQW4gYWNjZXNzIHBvbGljeSBmb3IgcHJvdmlkaW5nIGEgdXNlci9yb2xlL2V0YyByZWFkIG9ubHkgYWNjZXNzIHRvIHRoZSBBV1MgU3RlcEZ1bmN0aW9ucyBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NTdGVwRnVuY3Rpb25zUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3RlcEZ1bmN0aW9uc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFN0b3JhZ2UgR2F0ZXdheSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU1N0b3JhZ2VHYXRld2F5RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTdG9yYWdlR2F0ZXdheUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFN0b3JhZ2UgR2F0ZXdheSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU1N0b3JhZ2VHYXRld2F5UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3RvcmFnZUdhdGV3YXlSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UtbGlua2VkIHJvbGUgdXNlZCBieSBBV1MgU3RvcmFnZSBHYXRld2F5IHRvIGVuYWJsZSBpbnRlZ3JhdGlvbiBvZiBvdGhlciBBV1Mgc2VydmljZXMgd2l0aCBTdG9yYWdlIEdhdGV3YXkuICovXG4gICAgcHVibGljIEFXU1N0b3JhZ2VHYXRld2F5U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3RvcmFnZUdhdGV3YXlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFXU1N1cHBseUNoYWluRmVkZXJhdGlvbkFkbWluQWNjZXNzIHByb3ZpZGVzIEFXUyBTdXBwbHkgQ2hhaW4gZmVkZXJhdGVkIHVzZXJzIGFjY2VzcyB0byB0aGUgQVdTIFN1cHBseSBDaGFpbiBhcHBsaWNhdGlvbiwgaW5jbHVkaW5nIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBwZXJmb3JtIGFjdGlvbnMgd2l0aGluIHRoZSBBV1MgU3VwcGx5IENoYWluIGFwcGxpY2F0aW9uLiBUaGUgcG9saWN5IHByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zIG92ZXIgSUFNIElkZW50aXR5IENlbnRlciB1c2VycyBhbmQgZ3JvdXBzIGFuZCBpcyBhdHRhY2hlZCB0byBhIHJvbGUgY3JlYXRlZCBieSBBV1MgU3VwcGx5IENoYWluIG9uIHlvdXIgYmVoYWxmLiBZb3Ugc2hvdWxkbid0IGF0dGFjaCBBV1NTdXBwbHlDaGFpbkZlZGVyYXRpb25BZG1pbkFjY2VzcyBwb2xpY3kgdG8gYW55IG90aGVyIElBTSBlbnRpdGllcy4gKi9cbiAgICBwdWJsaWMgQVdTU3VwcGx5Q2hhaW5GZWRlcmF0aW9uQWRtaW5BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3VwcGx5Q2hhaW5GZWRlcmF0aW9uQWRtaW5BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdXNlcnMgdG8gYWNjZXNzIHRoZSBBV1MgU3VwcG9ydCBDZW50ZXIuICovXG4gICAgcHVibGljIEFXU1N1cHBvcnRBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3VwcG9ydEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBV1MgU3VwcG9ydCBBcHAgYW5kIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzLCBzdWNoIGFzIEFXUyBTdXBwb3J0IGFuZCBTZXJ2aWNlIFF1b3Rhcy4gVGhpcyBwb2xpY3kgaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBzdXBwb3J0aW5nIHNlcnZpY2VzIHNvIHRoYXQgdGhlIHVzZXIgY2FuIGNvbnRhY3QgQVdTIFN1cHBvcnQgZm9yIHN1cHBvcnQgY2FzZXMsIGNoYW5nZSBzZXJ2aWNlIHF1b3RhcywgYW5kIGNyZWF0ZSB0aGUgcmVsZXZhbnQgc2VydmljZS1saW5rZWQgcm9sZXMuICovXG4gICAgcHVibGljIEFXU1N1cHBvcnRBcHBGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N1cHBvcnRBcHBGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgQVdTIFN1cHBvcnQgQXBwLiAqL1xuICAgIHB1YmxpYyBBV1NTdXBwb3J0QXBwUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3VwcG9ydEFwcFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gc3VwcG9ydHBsYW5zLiAqL1xuICAgIHB1YmxpYyBBV1NTdXBwb3J0UGxhbnNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N1cHBvcnRQbGFuc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHN1cHBvcnRwbGFucy4gKi9cbiAgICBwdWJsaWMgQVdTU3VwcG9ydFBsYW5zUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3VwcG9ydFBsYW5zUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIFN1cHBvcnQgdG8gYWNjZXNzIEFXUyByZXNvdXJjZXMgdG8gcHJvdmlkZSBiaWxsaW5nLCBhZG1pbmlzdHJhdGl2ZSwgYW5kIHN1cHBvcnQgc2VydmljZXMuICovXG4gICAgcHVibGljIEFXU1N1cHBvcnRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTdXBwb3J0U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgQVdTIFN5c3RlbXMgTWFuYWdlciAoU1NNKSBwZXJtaXNzaW9uIHRvIGRpc2NvdmVyIEFXUyBhY2NvdW50IGluZm9ybWF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckFjY291bnREaXNjb3ZlcnlTZXJ2aWNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VyQWNjb3VudERpc2NvdmVyeVNlcnZpY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIHJlc291cmNlcyBtYW5hZ2VkIG9yIHVzZWQgYnkgdGhlIEFXUyBTeXN0ZW1zIE1hbmFnZXIgY2hhbmdlIG1hbmFnZW1lbnQgZnJhbWV3b3JrLiAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckNoYW5nZU1hbmFnZW1lbnRTZXJ2aWNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VyQ2hhbmdlTWFuYWdlbWVudFNlcnZpY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgQVdTIFN5c3RlbXMgTWFuYWdlciBRdWljayBTZXR1cCB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSBBV1MgQ29uZmlnIGNvbmZpZ3VyYXRpb24gcmVjb3JkaW5nLiAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckVuYWJsZUNvbmZpZ1JlY29yZGluZ0V4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlckVuYWJsZUNvbmZpZ1JlY29yZGluZ0V4ZWN1dGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhZG1pbmlzdHJhdGl2ZSBwZXJtaXNzaW9ucyBmb3IgZW5hYmxpbmcgRXhwbG9yZXIsIGEgY2FwYWJpbGl0eSBvZiBBV1MgU3lzdGVtcyBNYW5hZ2VyLiBUaGlzIGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSByZWxhdGVkIFN5c3RlbXMgTWFuYWdlciBzZXJ2aWNlIHNldHRpbmdzLCBhbmQgdG8gY3JlYXRlIGEgc2VydmljZS1saW5rZWQgcm9sZSBmb3IgU3lzdGVtcyBNYW5hZ2VyLiAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckVuYWJsZUV4cGxvcmVyRXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VyRW5hYmxlRXhwbG9yZXJFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgU3lzdGVtcyBNYW5hZ2VyIGZvciBTQVAgc2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckZvclNBUEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3lzdGVtc01hbmFnZXJGb3JTQVBGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgU3lzdGVtcyBNYW5hZ2VyIGZvciBTQVAgc2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckZvclNBUFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VyRm9yU0FQUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIHJlc291cmNlcyBtYW5hZ2VkIG9yIHVzZWQgYnkgdGhlIEFXUyBTeXN0ZW1zIE1hbmFnZXIganVzdCBpbiB0aW1lIGFjY2VzcyBmcmFtZXdvcmsuICovXG4gICAgcHVibGljIEFXU1N5c3RlbXNNYW5hZ2VySnVzdEluVGltZUFjY2Vzc1NlcnZpY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3lzdGVtc01hbmFnZXJKdXN0SW5UaW1lQWNjZXNzU2VydmljZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBtYW5hZ2VkIHBvbGljeSBBV1NTeXN0ZW1zTWFuYWdlckp1c3RJblRpbWVBY2Nlc3NUb2tlblBvbGljeSBhbGxvd3MgU3lzdGVtcyBNYW5hZ2VyIHRvIGdlbmVyYXRlIGFjY2VzcyB0b2tlbnMgdXNlZCBmb3IganVzdC1pbi10aW1lIG5vZGUgYWNjZXNzLiAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckp1c3RJblRpbWVBY2Nlc3NUb2tlblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlckp1c3RJblRpbWVBY2Nlc3NUb2tlblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBtYW5hZ2VkIHBvbGljeSBBV1NTeXN0ZW1zTWFuYWdlckp1c3RJblRpbWVBY2Nlc3NUb2tlblNlc3Npb25Qb2xpY3kgYWxsb3dzIFN5c3RlbXMgTWFuYWdlciB0byBhcHBseSBzY29wZWQgZG93biBwZXJtaXNzaW9ucyB0byBhIGp1c3QtaW4tdGltZSBub2RlIGFjY2VzcyBzZXNzaW9uIG9uY2UgaXQgaXMgc3RhcnRlZC4gKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJKdXN0SW5UaW1lQWNjZXNzVG9rZW5TZXNzaW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VySnVzdEluVGltZUFjY2Vzc1Rva2VuU2Vzc2lvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBTeXN0ZW1zIE1hbmFnZXIgdG8gc2hhcmUgYSBkZW55LWFjY2VzcyBwb2xpY3kgZm9yIGp1c3QtaW4tdGltZSBub2RlIGFjY2VzcyBmcm9tIHRoZSBkZWxlZ2F0ZWQgYWRtaW5pc3RyYXRvciBhY2NvdW50IHRvIG1lbWJlciBhY2NvdW50cywgYW5kIHJlcGxpY2F0ZSB0aGUgcG9saWN5IHRvIG11bHRpcGxlIFJlZ2lvbnMuICovXG4gICAgcHVibGljIEFXU1N5c3RlbXNNYW5hZ2VySnVzdEluVGltZU5vZGVBY2Nlc3NSb2xlUHJvcGFnYXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3lzdGVtc01hbmFnZXJKdXN0SW5UaW1lTm9kZUFjY2Vzc1JvbGVQcm9wYWdhdGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSB1c2VyIGZvciBKdXN0LUluLVRpbWUtTm9kZS1BY2Nlc3Mgbm90aWZpY2F0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJOb3RpZmljYXRpb25zU2VydmljZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlck5vdGlmaWNhdGlvbnNTZXJ2aWNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogSUFNIHJvbGUgZm9yIFNTTSBFeHBsb3JlciB0byBtYW5hZ2UgT3BzRGF0YSByZWxhdGVkIG9wZXJhdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJPcHNEYXRhU3luY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VyT3BzRGF0YVN5bmNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyB0aGUgQVdTIFBvcnRhbCBBc3NldCBTZXJ2ZXIgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3Igbm9ybWFsIG9wZXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTVGhpbmtib3hBc3NldFNlcnZlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUaGlua2JveEFzc2V0U2VydmVyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIEFXUyBUaGlua2JveCdzIERlYWRsaW5lIHNvZnR3YXJlIGZ1bGwgYWNjZXNzIHRvIG11bHRpcGxlIEFXUyBzZXJ2aWNlcyBhcyByZXF1aXJlZCBmb3IgQVdTIFBvcnRhbCBhZG1pbmlzdHJhdGlvbi4gVGhpcyBpbmNsdWRlcyBhY2Nlc3MgdG8gY3JlYXRlIGFyYml0cmFyeSB0YWdzIG9uIHNldmVyYWwgRUMyIHJlc291cmNlIHR5cGVzLiAqL1xuICAgIHB1YmxpYyBBV1NUaGlua2JveEFXU1BvcnRhbEFkbWluUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RoaW5rYm94QVdTUG9ydGFsQWRtaW5Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgdGhlIEFXUyBQb3J0YWwgR2F0ZXdheSBtYWNoaW5lIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnMgcmVxdWlyZWQgZm9yIG5vcm1hbCBvcGVyYXRpb24uICovXG4gICAgcHVibGljIEFXU1RoaW5rYm94QVdTUG9ydGFsR2F0ZXdheVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUaGlua2JveEFXU1BvcnRhbEdhdGV3YXlQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgdGhlIERlYWRsaW5lIFdvcmtlcnMgaW4gQVdTIFBvcnRhbCB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHJlcXVpcmVkIGZvciBub3JtYWwgb3BlcmF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NUaGlua2JveEFXU1BvcnRhbFdvcmtlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUaGlua2JveEFXU1BvcnRhbFdvcmtlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3IgdGhlIG9wZXJhdGlvbiBvZiBBV1MgVGhpbmtib3gncyBEZWFkbGluZSBSZXNvdXJjZSBUcmFja2VyLiAgVGhpcyBpbmNsdWRlcyBmdWxsIGFjY2VzcyB0byBzb21lIEVDMiBhY3Rpb25zLCBpbmNsdWRpbmcgRGVsZXRlRmxlZXRzIGFuZCBDYW5jZWxTcG90RmxlZXRSZXF1ZXN0cy4gKi9cbiAgICBwdWJsaWMgQVdTVGhpbmtib3hEZWFkbGluZVJlc291cmNlVHJhY2tlckFjY2Vzc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUaGlua2JveERlYWRsaW5lUmVzb3VyY2VUcmFja2VyQWNjZXNzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIGNyZWF0ZSwgZGVzdHJveSwgYW5kIGFkbWluaXN0ZXIgQVdTIFRoaW5rYm94J3MgRGVhZGxpbmUgUmVzb3VyY2UgVHJhY2tlci4gKi9cbiAgICBwdWJsaWMgQVdTVGhpbmtib3hEZWFkbGluZVJlc291cmNlVHJhY2tlckFkbWluUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RoaW5rYm94RGVhZGxpbmVSZXNvdXJjZVRyYWNrZXJBZG1pblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3IgQVdTIFRoaW5rYm94J3MgRGVhZGxpbmUgU3BvdCBFdmVudCBQbHVnaW4uICBUaGlzIGluY2x1ZGVzIHBlcm1pc3Npb24gdG8gcmVxdWVzdCwgbW9kaWZ5LCBhbmQgY2FuY2VsIGEgc3BvdCBmbGVldCwgYXMgd2VsbCBhcyBsaW1pdGVkIFBhc3NSb2xlIHBlcm1pc3Npb24uICovXG4gICAgcHVibGljIEFXU1RoaW5rYm94RGVhZGxpbmVTcG90RXZlbnRQbHVnaW5BZG1pblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUaGlua2JveERlYWRsaW5lU3BvdEV2ZW50UGx1Z2luQWRtaW5Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudCBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3IgYW4gRUMyIGluc3RhbmNlIHJ1bm5pbmcgQVdTIFRoaW5rYm94IERlYWRsaW5lIFNwb3QgRXZlbnQgUGx1Z2luIFdvcmtlciBzb2Z0d2FyZS4gKi9cbiAgICBwdWJsaWMgQVdTVGhpbmtib3hEZWFkbGluZVNwb3RFdmVudFBsdWdpbldvcmtlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUaGlua2JveERlYWRsaW5lU3BvdEV2ZW50UGx1Z2luV29ya2VyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFRyYW5zZmVyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBBV1NUcmFuc2ZlckNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RyYW5zZmVyQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgVHJhbnNmZXIgU2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTVHJhbnNmZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RyYW5zZmVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgVHJhbnNmZXIgZnVsbCBhY2Nlc3MgdG8gY3JlYXRlIGxvZyBzdHJlYW1zIGFuZCBncm91cHMgYW5kIHB1dCBsb2cgZXZlbnRzIHRvIHlvdXIgYWNjb3VudCAqL1xuICAgIHB1YmxpYyBBV1NUcmFuc2ZlckxvZ2dpbmdBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVHJhbnNmZXJMb2dnaW5nQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSByZWFkb25seSBhY2Nlc3MgdG8gQVdTIFRyYW5zZmVyIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NUcmFuc2ZlclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RyYW5zZmVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIHRoZSBBV1MgVHJhbnNmb3JtIHNlcnZpY2UgdG8gZGVwbG95IHRyYW5zZm9ybWVkIC5ORVQgYXBwbGljYXRpb25zIGJ5IGNyZWF0aW5nIGFuZCBtYW5hZ2luZyBBV1MgcmVzb3VyY2VzLiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gcHJvdmlzaW9uIGluZnJhc3RydWN0dXJlLCBtYW5hZ2UgY29tcHV0ZSByZXNvdXJjZXMsIGFuZCBjb25maWd1cmUgZGVwbG95bWVudCBzZXR0aW5ncyBhY3Jvc3MgdmFyaW91cyBBV1Mgc2VydmljZXMuICovXG4gICAgcHVibGljIEFXU1RyYW5zZm9ybUFwcGxpY2F0aW9uRGVwbG95bWVudFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUcmFuc2Zvcm1BcHBsaWNhdGlvbkRlcGxveW1lbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIHRoZSBBV1MgVHJhbnNmb3JtIHRvIGRlcGxveSBhcHBsaWNhdGlvbnMgdG8gQW1hem9uIEVsYXN0aWMgQ29udGFpbmVyIFNlcnZpY2UgKEVDUykgd2l0aCBGYXJnYXRlLiBJdCBncmFudHMgcGVybWlzc2lvbnMgdG8gcHJvdmlzaW9uLCBjb25maWd1cmUsIGFuZCBtYW5hZ2UgdGhlIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgcmVxdWlyZWQgdG8gcnVuIGFwcGxpY2F0aW9ucyBvbiBFQ1MuICovXG4gICAgcHVibGljIEFXU1RyYW5zZm9ybUFwcGxpY2F0aW9uRUNTRGVwbG95bWVudFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUcmFuc2Zvcm1BcHBsaWNhdGlvbkVDU0RlcGxveW1lbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgVHJ1c3RlZCBBZHZpc29yIFByaW9yaXR5LiBUaGlzIHBvbGljeSBhbHNvIGVuYWJsZXMgdGhlIHVzZXIgdG8gYWRkIFRydXN0ZWQgQWR2aXNvciBhcyBhIHRydXN0ZWQgc2VydmljZSB3aXRoIEFXUyBPcmdhbml6YXRpb25zIGFuZCB0byBzcGVjaWZ5IGRlbGVnYXRlZCBhZG1pbmlzdHJhdG9yIGFjY291bnRzIGZvciBUcnVzdGVkIEFkdmlzb3IgUHJpb3JpdHkuICovXG4gICAgcHVibGljIEFXU1RydXN0ZWRBZHZpc29yUHJpb3JpdHlGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RydXN0ZWRBZHZpc29yUHJpb3JpdHlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgVHJ1c3RlZCBBZHZpc29yIFByaW9yaXR5LiBUaGlzIGluY2x1ZGVzIHBlcm1pc3Npb24gdG8gdmlldyB0aGUgZGVsZWdhdGVkIGFkbWluaXN0cmF0b3IgYWNjb3VudHMuICovXG4gICAgcHVibGljIEFXU1RydXN0ZWRBZHZpc29yUHJpb3JpdHlSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUcnVzdGVkQWR2aXNvclByaW9yaXR5UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIFBvbGljeSBmb3IgVHJ1c3RlZCBBZHZpc29yIE11bHRpLWFjY291bnQgUmVwb3J0aW5nICovXG4gICAgcHVibGljIEFXU1RydXN0ZWRBZHZpc29yUmVwb3J0aW5nU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVHJ1c3RlZEFkdmlzb3JSZXBvcnRpbmdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFjY2VzcyBmb3IgdGhlIEFXUyBUcnVzdGVkIEFkdmlzb3IgU2VydmljZSB0byBoZWxwIHJlZHVjZSBjb3N0LCBpbmNyZWFzZSBwZXJmb3JtYW5jZSwgYW5kIGltcHJvdmUgc2VjdXJpdHkgb2YgeW91ciBBV1MgZW52aXJvbm1lbnQuICovXG4gICAgcHVibGljIEFXU1RydXN0ZWRBZHZpc29yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVHJ1c3RlZEFkdmlzb3JTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgVXNlciBOb3RpZmljYXRpb25zIHRvIGNhbGwgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NVc2VyTm90aWZpY2F0aW9uc1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1VzZXJOb3RpZmljYXRpb25zU2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyBmb3Igdmlld2luZyBlbnRpdGxlZCBWZW5kb3IgSW5zaWdodHMgcmVzb3VyY2VzIGFuZCBtYW5hZ2luZyBWZW5kb3IgSW5zaWdodHMgc3Vic2NyaXB0aW9ucyAqL1xuICAgIHB1YmxpYyBBV1NWZW5kb3JJbnNpZ2h0c0Fzc2Vzc29yRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NWZW5kb3JJbnNpZ2h0c0Fzc2Vzc29yRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgZm9yIHZpZXdpbmcgZW50aXRsZWQgVmVuZG9yIEluc2lnaHRzIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NWZW5kb3JJbnNpZ2h0c0Fzc2Vzc29yUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVmVuZG9ySW5zaWdodHNBc3Nlc3NvclJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgZm9yIGNyZWF0aW5nIGFuZCBtYW5hZ2luZyB0aGUgVmVuZG9yIEluc2lnaHRzIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NWZW5kb3JJbnNpZ2h0c1ZlbmRvckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVmVuZG9ySW5zaWdodHNWZW5kb3JGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyBmb3Igdmlld2luZyB0aGUgVmVuZG9yIEluc2lnaHRzIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NWZW5kb3JJbnNpZ2h0c1ZlbmRvclJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ZlbmRvckluc2lnaHRzVmVuZG9yUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgVlBDIExhdHRpY2UgdG8gYWNjZXNzIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU1ZwY0xhdHRpY2VTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NWcGNMYXR0aWNlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBTaXRlLXRvLVNpdGUgVlBOIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHJlc291cmNlcyByZWxhdGVkIHRvIHlvdXIgVlBOIENvbm5lY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NWUENTMlNWcG5TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NWUENTMlNWcG5TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IFZQQyBUcmFuc2l0IEdhdGV3YXkgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgbmVjZXNzYXJ5IHJlc291cmNlcyBmb3IgeW91ciBUcmFuc2l0IEdhdGV3YXkgVlBDIEF0dGFjaG1lbnRzLiAqL1xuICAgIHB1YmxpYyBBV1NWUENUcmFuc2l0R2F0ZXdheVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ZQQ1RyYW5zaXRHYXRld2F5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIEFXUyBWZXJpZmllZCBBY2Nlc3Mgc2VydmljZSB0byBwcm92aXNpb24gZW5kcG9pbnRzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFXU1ZQQ1ZlcmlmaWVkQWNjZXNzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVlBDVmVyaWZpZWRBY2Nlc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBXQUYgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiBOb3RlIHRoYXQgdGhpcyBwb2xpY3kgYWxzbyBncmFudHMgcGVybWlzc2lvbnMgdG8gbGlzdCBhbmQgdXBkYXRlIEFtYXpvbiBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbnMsIHBlcm1pc3Npb25zIHRvIHZpZXcgbG9hZCBiYWxhbmNlcnMgb24gQVdTIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcsIHBlcm1pc3Npb25zIHRvIHZpZXcgQW1hem9uIEFQSSBHYXRld2F5IFJFU1QgQVBJcyBhbmQgc3RhZ2VzLCBwZXJtaXNzaW9ucyB0byBsaXN0IGFuZCB2aWV3IEFtYXpvbiBDbG91ZFdhdGNoIG1ldHJpY3MsIGFuZCBwZXJtaXNzaW9ucyB0byB2aWV3IHJlZ2lvbnMgZW5hYmxlZCB3aXRoaW4gdGhlIGFjY291bnQuICovXG4gICAgcHVibGljIEFXU1dBRkNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1dBRkNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgV0FGIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gTm90ZSB0aGF0IHRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIHBlcm1pc3Npb25zIHRvIGxpc3QgQW1hem9uIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9ucywgcGVybWlzc2lvbnMgdG8gdmlldyBsb2FkIGJhbGFuY2VycyBvbiBBV1MgRWxhc3RpYyBMb2FkIEJhbGFuY2luZywgcGVybWlzc2lvbnMgdG8gdmlldyBBbWF6b24gQVBJIEdhdGV3YXkgUkVTVCBBUElzIGFuZCBzdGFnZXMsIHBlcm1pc3Npb25zIHRvIGxpc3QgYW5kIHZpZXcgQW1hem9uIENsb3VkV2F0Y2ggbWV0cmljcywgYW5kIHBlcm1pc3Npb25zIHRvIHZpZXcgcmVnaW9ucyBlbmFibGVkIHdpdGhpbiB0aGUgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQVdTV0FGQ29uc29sZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1dBRkNvbnNvbGVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBXQUYgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTV0FGRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NXQUZGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgV0FGIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU1dBRlJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1dBRlJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFdlbGxBcmNoaXRlY3RlZCB0byBhY2Nlc3MgQVdTIHNlcnZpY2VzIGFuZCByZXNvdXJjZXMgdGhhdCByZWxhdGUgdG8gV2VsbEFyY2hpdGVjdGVkIHJlc291cmNlcyBvbiBiZWhhbGYgb2YgY3VzdG9tZXJzLiAqL1xuICAgIHB1YmxpYyBBV1NXZWxsQXJjaGl0ZWN0ZWREaXNjb3ZlcnlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NXZWxsQXJjaGl0ZWN0ZWREaXNjb3ZlcnlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBXZWxsLUFyY2hpdGVjdGVkIHRvIGFjY2VzcyBPcmdhbml6YXRpb25zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NXZWxsQXJjaGl0ZWN0ZWRPcmdhbml6YXRpb25zU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTV2VsbEFyY2hpdGVjdGVkT3JnYW5pemF0aW9uc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIGZ1bGwgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgdG8gdGhlIFdpY2tyIHNlcnZpY2UsIGluY2x1ZGluZyB0aGUgV2lja3IgYWRtaW5pc3RyYXRpdmUgZnVuY3Rpb25zIHVuZGVyIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NXaWNrckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTV2lja3JGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgY2FwYWJpbGl0aWVzIHRvIG1hbmFnZSBPYnNlcnZhYmlsaXR5IEFjY2VzcyBNYW5hZ2VyIGxpbmtzIGFuZCBlc3RhYmxpc2ggc2hhcmluZyBvZiBYLVJheSB0cmFjZXMgKi9cbiAgICBwdWJsaWMgQVdTWHJheUNyb3NzQWNjb3VudFNoYXJpbmdDb25maWd1cmF0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1hyYXlDcm9zc0FjY291bnRTaGFyaW5nQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IHRoZSBBV1MgWC1SYXkgRGFlbW9uIHRvIHJlbGF5IHJhdyB0cmFjZSBzZWdtZW50cyBkYXRhIHRvIHRoZSBzZXJ2aWNlJ3MgQVBJIGFuZCByZXRyaWV2ZSBzYW1wbGluZyBkYXRhIChydWxlcywgdGFyZ2V0cywgZXRjLikgdG8gYmUgdXNlZCBieSB0aGUgWC1SYXkgU0RLLiAqL1xuICAgIHB1YmxpYyBBV1NYUmF5RGFlbW9uV3JpdGVBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTWFJheURhZW1vbldyaXRlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQVdTIFgtUmF5IGZ1bGwgYWNjZXNzIG1hbmFnZWQgcG9saWN5ICovXG4gICAgcHVibGljIEFXU1hyYXlGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1hyYXlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQVdTIFgtUmF5IHJlYWQgb25seSBtYW5hZ2VkIHBvbGljeSAqL1xuICAgIHB1YmxpYyBBV1NYcmF5UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTWHJheVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQVdTIFgtUmF5IHdyaXRlIG9ubHkgbWFuYWdlZCBwb2xpY3kgKi9cbiAgICBwdWJsaWMgQVdTWHJheVdyaXRlT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NYcmF5V3JpdGVPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIGZvciBBUkMgem9uYWwgc2hpZnQgcHJhY3RpY2UgcnVucywgYW5kIGFjY2VzcyB0byBDbG91ZFdhdGNoIGFsYXJtIHN0YXR1c2VzIHRvIG1vbml0b3IgcHJhY3RpY2UgcnVucy4gKi9cbiAgICBwdWJsaWMgQVdTWm9uYWxBdXRvc2hpZnRQcmFjdGljZVJ1blNMUlBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1Nab25hbEF1dG9zaGlmdFByYWN0aWNlUnVuU0xSUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgQVBJcyBuZWVkZWQgdG8gc3VwcG9ydCB6b25lLWdyb3VwIGFjY2Vzcy1tYW5hZ2VtZW50IGZvciBvcmdhbml6YXRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1Nab25lR3JvdXBBY2Nlc3NNYW5hZ2VtZW50U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTWm9uZUdyb3VwQWNjZXNzTWFuYWdlbWVudFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIGZvciB0aGUgQVdTIEJhdGNoIHNlcnZpY2UgdG8gbWFuYWdlIHRoZSByZXF1aXJlZCByZXNvdXJjZXMsIGluY2x1ZGluZyBBbWF6b24gRUMyIGFuZCBBbWF6b24gRUNTIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQmF0Y2hTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5CYXRjaFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQmVkcm9jayBBZ2VudENvcmUgYXMgd2VsbCBhcyBsaW1pdGVkIGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzICovXG4gICAgcHVibGljIEJlZHJvY2tBZ2VudENvcmVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkJlZHJvY2tBZ2VudENvcmVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFjY2VzcyB0byBvdGhlciBBV1Mgc2VydmljZSByZXNvdXJjZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gcnVuIEFtYXpvbiBCZWRyb2NrIEFnZW50Q29yZSBpbiBWUEMgbW9kZSAqL1xuICAgIHB1YmxpYyBCZWRyb2NrQWdlbnRDb3JlTmV0d29ya1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkJlZHJvY2tBZ2VudENvcmVOZXR3b3JrU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgYWNjZXNzIHRvIGlkZW50aXR5IGFuZCB0b2tlbiBtYW5hZ2VtZW50IHJlc291cmNlcyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgQW1hem9uIEJlZHJvY2sgQWdlbnRDb3JlIFJ1bnRpbWUgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24uICovXG4gICAgcHVibGljIEJlZHJvY2tBZ2VudENvcmVSdW50aW1lSWRlbnRpdHlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5CZWRyb2NrQWdlbnRDb3JlUnVudGltZUlkZW50aXR5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgZm9yIGJpbGxpbmcgYW5kIGNvc3QgbWFuYWdlbWVudC4gVGhpcyBpbmNsdWRlcyB2aWV3aW5nIGFjY291bnQgdXNhZ2UgYW5kIHZpZXdpbmcgYW5kIG1vZGlmeWluZyBidWRnZXRzIGFuZCBwYXltZW50IG1ldGhvZHMuICovXG4gICAgcHVibGljIEJpbGxpbmcoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQmlsbGluZyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBCdWRnZXRzIHRvIHZlcmlmeSBhY2Nlc3MgdG8gQmlsbGluZyBWaWV3cyBzaGFyZWQgYWNyb3NzIGFjY291bnQgYm91bmRhcmllcy4gKi9cbiAgICBwdWJsaWMgQnVkZ2V0c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkJ1ZGdldHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBDZXJ0aWZpY2F0ZSBNYW5hZ2VyIFNlcnZpY2UgUm9sZSBQb2xpY3kgKi9cbiAgICBwdWJsaWMgQ2VydGlmaWNhdGVNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2VydGlmaWNhdGVNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIEFXUyBDbGllbnQgVlBOIHRvIG1hbmFnZSB5b3VyIENsaWVudCBWUE4gZW5kcG9pbnQgY29ubmVjdGlvbnMuICovXG4gICAgcHVibGljIENsaWVudFZQTlNlcnZpY2VDb25uZWN0aW9uc1JvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xpZW50VlBOU2VydmljZUNvbm5lY3Rpb25zUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBlbmFibGUgQVdTIENsaWVudCBWUE4gdG8gbWFuYWdlIHlvdXIgQ2xpZW50IFZQTiBlbmRwb2ludHMuICovXG4gICAgcHVibGljIENsaWVudFZQTlNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsaWVudFZQTlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSBSb2xlIGZvciBDbG91ZEZvcm1hdGlvbiBTdGFja1NldHMgKE9yZ2FuaXphdGlvbiBNYXN0ZXIgQWNjb3VudCkgKi9cbiAgICBwdWJsaWMgQ2xvdWRGb3JtYXRpb25TdGFja1NldHNPcmdBZG1pblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkRm9ybWF0aW9uU3RhY2tTZXRzT3JnQWRtaW5TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UgUm9sZSBmb3IgQ2xvdWRGb3JtYXRpb24gU3RhY2tTZXRzIChPcmdhbml6YXRpb24gTWVtYmVyIEFjY291bnQpICovXG4gICAgcHVibGljIENsb3VkRm9ybWF0aW9uU3RhY2tTZXRzT3JnTWVtYmVyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRGb3JtYXRpb25TdGFja1NldHNPcmdNZW1iZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBDbG91ZEZyb250IGNvbnNvbGUgcGx1cyB0aGUgYWJpbGl0eSB0byBsaXN0IEFtYXpvbiBTMyBidWNrZXRzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQ2xvdWRGcm9udEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRGcm9udEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgbGlzdCBkaXN0cmlidXRpb25zIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQ2xvdWRGcm9udFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkRnJvbnRSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyByZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IENsb3VkSFNNICovXG4gICAgcHVibGljIENsb3VkSFNNU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRIU01TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBbWF6b24gQ2xvdWRTZWFyY2ggY29uZmlndXJhdGlvbiBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBDbG91ZFNlYXJjaEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRTZWFyY2hGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgQW1hem9uIENsb3VkU2VhcmNoIGNvbmZpZ3VyYXRpb24gc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQ2xvdWRTZWFyY2hSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFNlYXJjaFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBzZXJ2aWNlIGxpbmtlZCByb2xlIGFsbG93cyBDbG91ZFRyYWlsIHRvIGdldCBhbmQgYWRkIHJlc291cmNlIHRhZ3MgdG8gdGhlIHJlc291cmNlIG93bmVyJ3MgQ2xvdWRUcmFpbCBldmVudHMuICovXG4gICAgcHVibGljIENsb3VkVHJhaWxFdmVudENvbnRleHQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRUcmFpbEV2ZW50Q29udGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb24gcG9saWN5IGZvciBDbG91ZFRyYWlsIFNlcnZpY2VMaW5rZWRSb2xlICovXG4gICAgcHVibGljIENsb3VkVHJhaWxTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFRyYWlsU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQ2xvdWRXYXRjaCB0byBhc3N1bWUgQ2xvdWRXYXRjaC1Dcm9zc0FjY291bnRTaGFyaW5nIHJvbGVzIGluIHJlbW90ZSBhY2NvdW50cyBvbiBiZWhhbGYgb2YgdGhlIGN1cnJlbnQgYWNjb3VudCBpbiBvcmRlciB0byBkaXNwbGF5IGRhdGEgY3Jvc3MtYWNjb3VudCwgY3Jvc3MtcmVnaW9uICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hDcm9zc0FjY291bnRBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaENyb3NzQWNjb3VudEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBhbGFybXMgYW5kIG1ldHJpY3MgYXMgd2VsbCBhcyBFQzIgbWV0YWRhdGEuIFByb3ZpZGVzIGFjY2VzcyB0byBTdG9wLCBUZXJtaW5hdGUgYW5kIFJlYm9vdCBFQzIgaW5zdGFuY2VzLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoQWN0aW9uc0VDMkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoQWN0aW9uc0VDMkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bGwgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gdXNlIEFtYXpvbkNsb3VkV2F0Y2hBZ2VudC4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEFnZW50QWRtaW5Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEFnZW50QWRtaW5Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9ucyByZXF1aXJlZCB0byB1c2UgQW1hem9uQ2xvdWRXYXRjaEFnZW50IG9uIHNlcnZlcnMgKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEFnZW50U2VydmVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hBZ2VudFNlcnZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIENsb3VkV2F0Y2ggQXBwbGljYXRpb24gSW5zaWdodHMgYW5kIHJlcXVpcmVkIGRlcGVuZGVuY2llcy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEFwcGxpY2F0aW9uSW5zaWdodHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hBcHBsaWNhdGlvbkluc2lnaHRzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBBcHBsaWNhdGlvbiBJbnNpZ2h0cy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEFwcGxpY2F0aW9uSW5zaWdodHNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoQXBwbGljYXRpb25JbnNpZ2h0c1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQ2xvdWR3YXRjaCBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBTZXJ2aWNlIExpbmtlZCBSb2xlIFBvbGljeSAqL1xuICAgIHB1YmxpYyBDbG91ZHdhdGNoQXBwbGljYXRpb25JbnNpZ2h0c1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3Vkd2F0Y2hBcHBsaWNhdGlvbkluc2lnaHRzU2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIGZ1bGwgYWNjZXNzIHRvIENsb3VkV2F0Y2ggQXBwbGljYXRpb24gU2lnbmFscyBzZXJ2aWNlIGFuZCBzY29wZWQgYWNjZXNzIHRvIHRoZSBkZXBlbmRlbmNpZXMgbmVlZGVkIHRvIHVzZSBhbmQgb3BlcmF0ZSB0aGlzIHNlcnZpY2UuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hBcHBsaWNhdGlvblNpZ25hbHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hBcHBsaWNhdGlvblNpZ25hbHNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBDbG91ZFdhdGNoIEFwcGxpY2F0aW9uIFNpZ25hbHMgc2VydmljZSBhbmQgc2NvcGVkIGFjY2VzcyB0byB0aGUgZGVwZW5kZW5jaWVzIG5lZWRlZCB0byB1c2UgdGhpcyBzZXJ2aWNlICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hBcHBsaWNhdGlvblNpZ25hbHNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoQXBwbGljYXRpb25TaWduYWxzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb24gdG8gQ2xvdWRXYXRjaCBBcHBsaWNhdGlvbiBTaWduYWxzIHRvIGNvbGxlY3QgbW9uaXRvcmluZyBhbmQgdGFnZ2luZyBkYXRhIGZyb20gb3RoZXIgcmVsZXZhbnQgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoQXBwbGljYXRpb25TaWduYWxzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEFwcGxpY2F0aW9uU2lnbmFsc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBub24tQ2xvdWRXYXRjaCBBUElzIHVzZWQgdG8gZGlzcGxheSBDbG91ZFdhdGNoIEF1dG9tYXRpYyBEYXNoYm9hcmRzLCBpbmNsdWRpbmcgdGhlIGNvbnRlbnRzIG9mIG9iamVjdHMgc3VjaCBhcyBMYW1iZGEgZnVuY3Rpb25zICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hBdXRvbWF0aWNEYXNoYm9hcmRzQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hBdXRvbWF0aWNEYXNoYm9hcmRzQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgY2FwYWJpbGl0aWVzIHRvIG1hbmFnZSBPYnNlcnZhYmlsaXR5IEFjY2VzcyBNYW5hZ2VyIGxpbmtzIGFuZCBlc3RhYmxpc2ggc2hhcmluZyBvZiBDbG91ZFdhdGNoIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoQ3Jvc3NBY2NvdW50U2hhcmluZ0NvbmZpZ3VyYXRpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaENyb3NzQWNjb3VudFNoYXJpbmdDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGJ1aWx0LWluIHRhcmdldHMgaW4gQW1hem9uIENsb3VkV2F0Y2ggRXZlbnRzIHRvIHBlcmZvcm0gRUMyIGFjdGlvbnMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hFdmVudHNCdWlsdEluVGFyZ2V0RXhlY3V0aW9uQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hFdmVudHNCdWlsdEluVGFyZ2V0RXhlY3V0aW9uQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIENsb3VkV2F0Y2ggRXZlbnRzLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoRXZlbnRzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoRXZlbnRzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQ2xvdWRXYXRjaCBFdmVudHMgdG8gcmVsYXkgZXZlbnRzIHRvIHRoZSBzdHJlYW1zIGluIEFXUyBLaW5lc2lzIFN0cmVhbXMgaW4geW91ciBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoRXZlbnRzSW52b2NhdGlvbkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoRXZlbnRzSW52b2NhdGlvbkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIENsb3VkV2F0Y2ggRXZlbnRzLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoRXZlbnRzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEV2ZW50c1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgQVdTIENsb3VkV2F0Y2ggdG8gZXhlY3V0ZSBhY3Rpb25zIG9uIHlvdXIgYmVoYWxmIGNvbmZpZ3VyZWQgdGhyb3VnaCBhbGFybXMgYW5kIGV2ZW50cy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEV2ZW50c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hFdmVudHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEZ1bGxBY2Nlc3NWMigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoRnVsbEFjY2Vzc1YyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWN0aW9ucyBmb3Igd29ya2luZyB3aXRoIEFtYXpvbiBDbG91ZFdhdGNoIEludGVybmV0IE1vbml0b3IuIEFsc28gcHJvdmlkZXMgYWNjZXNzIHRvIG90aGVyIHNlcnZpY2VzLCBzdWNoIGFzIEFtYXpvbiBDbG91ZFdhdGNoLCBBbWF6b24gRUMyLCBBbWF6b24gQ2xvdWRGcm9udCwgQW1hem9uIFdvcmtTcGFjZXMsIGFuZCBFbGFzdGljIExvYWQgQmFsYW5jaW5nLCB0aGF0IGFyZSBuZWNlc3NhcnkgdG8gdXNlIHRoZSBJbnRlcm5ldCBNb25pdG9yIHNlcnZpY2UgZm9yIG1vbml0b3JpbmcgYW5kIHN0b3JpbmcgaW5mb3JtYXRpb24gYWJvdXQgYXBwbGljYXRpb24gdHJhZmZpYy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEludGVybmV0TW9uaXRvckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEludGVybmV0TW9uaXRvckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFjdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBBbWF6b24gQ2xvdWRXYXRjaCBJbnRlcm5ldCBNb25pdG9yLiBBbHNvIHByb3ZpZGVzIGFjY2VzcyB0byBvdGhlciBzZXJ2aWNlcyBpbiBBbWF6b24gQ2xvdWRXYXRjaCwgaW5jbHVkaW5nIHBvbGljaWVzIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIG9uIENsb3VkV2F0Y2ggbWV0cmljcyBhbmQgdG8gbWFuYWdlIGxvZyBxdWVyaWVzLCB0aGF0IGFyZSBuZWNlc3NhcnkgdG8gdXNlIHRoZSBJbnRlcm5ldCBNb25pdG9yIHNlcnZpY2UgZm9yIG1vbml0b3JpbmcgYW5kIHN0b3JpbmcgaW5mb3JtYXRpb24gYWJvdXQgYXBwbGljYXRpb24gdHJhZmZpYy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEludGVybmV0TW9uaXRvclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hJbnRlcm5ldE1vbml0b3JSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBJbnRlcm5ldCBNb25pdG9yIHRvIGFjY2VzcyBFQzIsIFdvcmtzcGFjZXMsIGFuZCBDbG91ZEZyb250IHJlc291cmNlcywgYW5kIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoSW50ZXJuZXRNb25pdG9yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEludGVybmV0TW9uaXRvclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgd3JpdGUgYWNjZXNzIHRvIFgtUmF5IGFuZCBDbG91ZFdhdGNoIEFwcGxpY2F0aW9uIFNpZ25hbHMgbG9nIGdyb3VwLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoTGFtYmRhQXBwbGljYXRpb25TaWduYWxzRXhlY3V0aW9uUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoTGFtYmRhQXBwbGljYXRpb25TaWduYWxzRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSByZXF1aXJlZCBmb3IgdGhlIExhbWJkYSBJbnNpZ2h0cyBFeHRlbnNpb24gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaExhbWJkYUluc2lnaHRzRXhlY3V0aW9uUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoTGFtYmRhSW5zaWdodHNFeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgY2FwYWJpbGl0aWVzIHRvIG1hbmFnZSBPYnNlcnZhYmlsaXR5IEFjY2VzcyBNYW5hZ2VyIGxpbmtzIGFuZCBlc3RhYmxpc2ggc2hhcmluZyBvZiBDbG91ZFdhdGNoIExvZ3MgcmVzb3VyY2VzICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hMb2dzQ3Jvc3NBY2NvdW50U2hhcmluZ0NvbmZpZ3VyYXRpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaExvZ3NDcm9zc0FjY291bnRTaGFyaW5nQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIENsb3VkV2F0Y2ggTG9ncyAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoTG9nc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaExvZ3NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBDbG91ZFdhdGNoIExvZ3MgKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaExvZ3NSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoTG9nc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogWW91IGNhbiB1c2UgdGhpcyBwb2xpY3kgaW4gSUFNIHJvbGVzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIEFtYXpvbiBFQzIgYW5kIEFtYXpvbiBFS1MgaW5zdGFuY2UgcmVzb3VyY2VzIHRvIHNlbmQgdGVsZW1ldHJ5IHJlcG9ydHMgKG1ldHJpY3MpIHRvIGEgTmV0d29yayBGbG93IE1vbml0b3IgZW5kcG9pbnQuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hOZXR3b3JrRmxvd01vbml0b3JBZ2VudFB1Ymxpc2hQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaE5ldHdvcmtGbG93TW9uaXRvckFnZW50UHVibGlzaFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFlvdSBjYW4ndCBhdHRhY2ggQ2xvdWRXYXRjaE5ldHdvcmtGbG93TW9uaXRvclNlcnZpY2VSb2xlUG9saWN5IHRvIHlvdXIgSUFNIGVudGl0aWVzLiBUaGlzIHBvbGljeSBpcyBhdHRhY2hlZCB0byBhIHNlcnZpY2UtbGlua2VkIHJvbGUgbmFtZWQgQVdTU2VydmljZVJvbGVGb3JOZXR3b3JrRmxvd01vbml0b3IsIHdoaWNoIHB1Ymxpc2hlcyBuZXR3b3JrIHRlbGVtZXRyeSBhZ2dyZWdhdGlvbiByZXN1bHRzLCBjb2xsZWN0ZWQgYnkgTmV0d29yayBGbG93IE1vbml0b3IgYWdlbnRzLCB0byBDbG91ZFdhdGNoLiBJdCBhbHNvIGFsbG93cyB0aGUgc2VydmljZSB0byB1c2UgQVdTIE9yZ2FuaXphdGlvbnMgdG8gZ2V0IGluZm9ybWF0aW9uIGZvciBtdWx0aS1hY2NvdW50IHNjZW5hcmlvcy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaE5ldHdvcmtGbG93TW9uaXRvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hOZXR3b3JrRmxvd01vbml0b3JTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFlvdSBjYW4ndCBhdHRhY2ggQ2xvdWRXYXRjaE5ldHdvcmtGbG93TW9uaXRvclRvcG9sb2d5U2VydmljZVJvbGVQb2xpY3kgdG8geW91ciBJQU0gZW50aXRpZXMuIFRoaXMgcG9saWN5IGlzIGF0dGFjaGVkIHRvIGEgc2VydmljZS1saW5rZWQgcm9sZSBuYW1lZCBBV1NTZXJ2aWNlUm9sZUZvck5ldHdvcmtGbG93TW9uaXRvcl9Ub3BvbG9neSwgd2hpY2ggZ2VuZXJhdGVzIHRvcG9sb2d5IHNuYXBzaG90cyBvZiByZXNvdXJjZXMgdXNlZCBieSBOZXR3b3JrIEZsb3cgTW9uaXRvciBpbiB5b3VyIGFjY291bnQuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hOZXR3b3JrRmxvd01vbml0b3JUb3BvbG9neVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hOZXR3b3JrRmxvd01vbml0b3JUb3BvbG9neVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIENsb3VkV2F0Y2ggTmV0d29yayBNb25pdG9yIHRvIGFjY2VzcyBhbmQgbWFuYWdlIEVDMiBhbmQgVlBDIHJlc291cmNlcywgcHVibGlzaCBkYXRhIHRvIENsb3VkV2F0Y2ggYW5kIGFjY2VzcyBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaE5ldHdvcmtNb25pdG9yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaE5ldHdvcmtNb25pdG9yU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyB1c2VyIGFjY2VzcyB0byB2aWV3IE9wZW5TZWFyY2ggZGFzaGJvYXJkcyBvbiB0aGUgQ2xvdWRXYXRjaCBMb2dzIGNvbnNvbGUuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hPcGVuU2VhcmNoRGFzaGJvYXJkQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hPcGVuU2VhcmNoRGFzaGJvYXJkQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgdXNlciBhY2Nlc3MgdG8gY3JlYXRlIGludGVncmF0aW9uIHdpdGggT3BlblNlYXJjaCB0byBjcmVhdGUsIHVwZGF0ZSwgZGVsZXRlIG9yIHZpZXcgZGFzaGJvYXJkcyBvbiB0aGUgQ2xvdWRXYXRjaCBMb2dzIGNvbnNvbGUuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hPcGVuU2VhcmNoRGFzaGJvYXJkc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaE9wZW5TZWFyY2hEYXNoYm9hcmRzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIENsb3VkV2F0Y2ggU3ludGhldGljcy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaFN5bnRoZXRpY3NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hTeW50aGV0aWNzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBTeW50aGV0aWNzLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoU3ludGhldGljc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hTeW50aGV0aWNzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIEFXUyBDb21wcmVoZW5kIHNlcnZpY2Ugcm9sZSB3aGljaCBhbGxvd3MgYWNjZXNzIHRvIFMzIHJlc291cmNlcyBmb3IgZGF0YSBhY2Nlc3MgKi9cbiAgICBwdWJsaWMgQ29tcHJlaGVuZERhdGFBY2Nlc3NSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNvbXByZWhlbmREYXRhQWNjZXNzUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDb21wcmVoZW5kLiAqL1xuICAgIHB1YmxpYyBDb21wcmVoZW5kRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Db21wcmVoZW5kRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDb21wcmVoZW5kIE1lZGljYWwgKi9cbiAgICBwdWJsaWMgQ29tcHJlaGVuZE1lZGljYWxGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNvbXByZWhlbmRNZWRpY2FsRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIENvbXByZWhlbmQuICovXG4gICAgcHVibGljIENvbXByZWhlbmRSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Db21wcmVoZW5kUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIENvbXB1dGVPcHRpbWl6ZXIuICovXG4gICAgcHVibGljIENvbXB1dGVPcHRpbWl6ZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Db21wdXRlT3B0aW1pemVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQ29tcHV0ZU9wdGltaXplciB0byBjYWxsIEFXUyBzZXJ2aWNlcyBhbmQgY29sbGVjdCB3b3JrbG9hZCBkZXRhaWxzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBDb21wdXRlT3B0aW1pemVyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ29tcHV0ZU9wdGltaXplclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IG5lZWRlZCBmb3IgQVdTQ29uZmlnIHRvIGNyZWF0ZSBjb25mb3JtYW5jZSBwYWNrcyAqL1xuICAgIHB1YmxpYyBDb25maWdDb25mb3Jtc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNvbmZpZ0NvbmZvcm1zU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIG1hbmFnZWQgcG9saWN5IHByb3ZpZGVzIGFkbWluIGFjY2VzcyB0byBDb3N0IE9wdGltaXphdGlvbiBIdWIuICovXG4gICAgcHVibGljIENvc3RPcHRpbWl6YXRpb25IdWJBZG1pbkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Db3N0T3B0aW1pemF0aW9uSHViQWRtaW5BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIG1hbmFnZWQgcG9saWN5IHByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQ29zdCBPcHRpbWl6YXRpb24gSHViLiAqL1xuICAgIHB1YmxpYyBDb3N0T3B0aW1pemF0aW9uSHViUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ29zdE9wdGltaXphdGlvbkh1YlJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIENvc3QgT3B0aW1pemF0aW9uIEh1YiB0byByZXRyaWV2ZSBvcmdhbml6YXRpb24gaW5mb3JtYXRpb24gYW5kIGNvbGxlY3Qgb3B0aW1pemF0aW9uLXJlbGF0ZWQgZGF0YSBhbmQgbWV0YWRhdGEuICovXG4gICAgcHVibGljIENvc3RPcHRpbWl6YXRpb25IdWJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Db3N0T3B0aW1pemF0aW9uSHViU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIENvbm5lY3QgQ3VzdG9tZXIgUHJvZmlsZXMgdG8gYWNjZXNzIEFXUyBzZXJ2aWNlcyBhbmQgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBDdXN0b21lclByb2ZpbGVzU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ3VzdG9tZXJQcm9maWxlc1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHBlcm1pc3Npb25zIHRvIEFXUyBzZXJ2aWNlcyBhbmQgYWN0aW9ucyByZXF1aXJlZCB0byBzZXQgdXAgYW5kIGNvbmZpZ3VyZSBBV1MgZGF0YWJhc2Ugc2VydmljZXMuICovXG4gICAgcHVibGljIERhdGFiYXNlQWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5EYXRhYmFzZUFkbWluaXN0cmF0b3IpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gQVdTIGRhdGEgYW5hbHl0aWNzIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBEYXRhU2NpZW50aXN0KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkRhdGFTY2llbnRpc3QpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgREFYIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIE5ldHdvcmsgaW50ZXJmYWNlLCBTZWN1cml0eSBncm91cCwgU3VibmV0IGFuZCBWcGMgb24gYmVoYWxmIG9mIGN1c3RvbWVyICovXG4gICAgcHVibGljIERBWFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkRBWFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHJlYWQtb25seSBBUElzIG5lZWRlZCB0byBydW4gRUMyIERlY2xhcmF0aXZlIFBvbGljaWVzIEFjY291bnQgU3RhdHVzIFJlcG9ydC4gKi9cbiAgICBwdWJsaWMgRGVjbGFyYXRpdmVQb2xpY2llc0VDMlJlcG9ydCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5EZWNsYXJhdGl2ZVBvbGljaWVzRUMyUmVwb3J0KTtcbiAgICB9XG5cbiAgICAvKiogUGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gc3VwcG9ydCBBbWF6b24gQ2xvdWRXYXRjaCBDb250cmlidXRvciBJbnNpZ2h0cyBmb3IgQW1hem9uIER5bmFtb0RCLiAqL1xuICAgIHB1YmxpYyBEeW5hbW9EQkNsb3VkV2F0Y2hDb250cmlidXRvckluc2lnaHRzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRHluYW1vREJDbG91ZFdhdGNoQ29udHJpYnV0b3JJbnNpZ2h0c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUGVybWlzc2lvbnMgcmVxdWlyZWQgYnkgRHluYW1vREIgdG8gbWFuYWdlIGdsb2JhbCB0YWJsZSByZXBsaWNhIHNldHRpbmdzICovXG4gICAgcHVibGljIER5bmFtb0RCR2xvYmFsVGFibGVTZXR0aW5nc01hbmFnZW1lbnRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5EeW5hbW9EQkdsb2JhbFRhYmxlU2V0dGluZ3NNYW5hZ2VtZW50U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIEFXUyBEeW5hbW9EQiBhY2Nlc3MgdG8gS2luZXNpc0RhdGFTdHJlYW1zICovXG4gICAgcHVibGljIER5bmFtb0RCS2luZXNpc1JlcGxpY2F0aW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRHluYW1vREJLaW5lc2lzUmVwbGljYXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb25zIHJlcXVpcmVkIGJ5IER5bmFtb0RCIGZvciBjcm9zcy1yZWdpb24gZGF0YSByZXBsaWNhdGlvbiAqL1xuICAgIHB1YmxpYyBEeW5hbW9EQlJlcGxpY2F0aW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRHluYW1vREJSZXBsaWNhdGlvblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEVDMiBGYXN0IExhdW5jaCBhY3Rpb25zICovXG4gICAgcHVibGljIEVDMkZhc3RMYXVuY2hGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVDMkZhc3RMYXVuY2hGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50cyBlYzJmYXN0bGF1bmNoIHRvIHByZXBhcmUgYW5kIG1hbmFnZSBwcmVwcm92aXNpb25lZCBzbmFwc2hvdHMgaW4gY3VzdG9tZXIncyBhY2NvdW50ICYgcHVibGlzaCByZWxhdGVkIG1ldHJpY3MuICovXG4gICAgcHVibGljIEVDMkZhc3RMYXVuY2hTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FQzJGYXN0TGF1bmNoU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gRUMyIEZsZWV0IHRvIGxhdW5jaCBpbnN0YW5jZXMgaW4gdGhlIGZ1dHVyZS4gKi9cbiAgICBwdWJsaWMgRUMyRmxlZXRUaW1lU2hpZnRhYmxlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRUMyRmxlZXRUaW1lU2hpZnRhYmxlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9ucyBuZWVkIGJ5IEVDMiBJbWFnZSBCdWlsZGVyIHRvIHBlcmZvcm0gYSBjcm9zcyBhY2NvdW50IGRpc3RyaWJ1dGlvbi4gKi9cbiAgICBwdWJsaWMgRWMySW1hZ2VCdWlsZGVyQ3Jvc3NBY2NvdW50RGlzdHJpYnV0aW9uQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVjMkltYWdlQnVpbGRlckNyb3NzQWNjb3VudERpc3RyaWJ1dGlvbkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBFQzJJbWFnZUJ1aWxkZXJMaWZlY3ljbGVFeGVjdXRpb25Qb2xpY3kgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgSW1hZ2UgQnVpbGRlciB0byBwZXJmb3JtIGFjdGlvbnMgc3VjaCBhcyBkZXByZWNhdGUgb3IgZGVsZXRlIEltYWdlIEJ1aWxkZXIgaW1hZ2UgcmVzb3VyY2VzIGFuZCB0aGVpciB1bmRlcmx5aW5nIHJlc291cmNlcyAoQU1Jcywgc25hcHNob3RzKSB0byBzdXBwb3J0IGF1dG9tYXRlZCBydWxlcyBmb3IgaW1hZ2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgdGFza3MuICovXG4gICAgcHVibGljIEVDMkltYWdlQnVpbGRlckxpZmVjeWNsZUV4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FQzJJbWFnZUJ1aWxkZXJMaWZlY3ljbGVFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgY3VzdG9tZXJzIHRvIGNhbGwgRUMyIEluc3RhbmNlIENvbm5lY3QgdG8gcHVibGlzaCBlcGhlbWVyYWwga2V5cyB0byB0aGVpciBFQzIgaW5zdGFuY2VzIGFuZCBjb25uZWN0IHZpYSBzc2ggb3IgdGhlIEVDMiBJbnN0YW5jZSBDb25uZWN0IENMSS4gKi9cbiAgICBwdWJsaWMgRUMySW5zdGFuY2VDb25uZWN0KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVDMkluc3RhbmNlQ29ubmVjdCk7XG4gICAgfVxuXG4gICAgLyoqIEVDMiBJbnN0YW5jZSBDb25uZWN0IGVuZHBvaW50IHBvbGljeSB0byBtYW5hZ2UgRUMyIEluc3RhbmNlIENvbm5lY3QgZW5kcG9pbnRzIGNyZWF0ZWQgYnkgdGhlIGN1c3RvbWVyICovXG4gICAgcHVibGljIEVjMkluc3RhbmNlQ29ubmVjdEVuZHBvaW50KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVjMkluc3RhbmNlQ29ubmVjdEVuZHBvaW50KTtcbiAgICB9XG5cbiAgICAvKiogRUMyIEluc3RhbmNlIHByb2ZpbGUgZm9yIEltYWdlIEJ1aWxkZXIgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgRUMySW5zdGFuY2VQcm9maWxlRm9ySW1hZ2VCdWlsZGVyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVDMkluc3RhbmNlUHJvZmlsZUZvckltYWdlQnVpbGRlcik7XG4gICAgfVxuXG4gICAgLyoqIEVDMiBJbnN0YW5jZSBwcm9maWxlIGZvciBidWlsZGluZyBjb250YWluZXIgaW1hZ2VzIHdpdGggRUMyIEltYWdlIEJ1aWxkZXIuIFRoaXMgcG9saWN5IGdyYW50cyB0aGUgdXNlciBicm9hZCBwZXJtaXNzaW9ucyB0byB1cGxvYWQgRUNSIGltYWdlcy4gKi9cbiAgICBwdWJsaWMgRUMySW5zdGFuY2VQcm9maWxlRm9ySW1hZ2VCdWlsZGVyRUNSQ29udGFpbmVyQnVpbGRzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVDMkluc3RhbmNlUHJvZmlsZUZvckltYWdlQnVpbGRlckVDUkNvbnRhaW5lckJ1aWxkcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBFQ1IgUmVwbGljYXRpb24gKi9cbiAgICBwdWJsaWMgRUNSUmVwbGljYXRpb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FQ1JSZXBsaWNhdGlvblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFjdGlvbnMgdG8gYmUgcGVyZm9ybWVkIHdoZW4gdXNpbmcgQVdTIEVDUiByZXBvc2l0b3J5IGNyZWF0aW9uIHRlbXBsYXRlcyAqL1xuICAgIHB1YmxpYyBFQ1JUZW1wbGF0ZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVDUlRlbXBsYXRlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgRWxhc3RpQ2FjaGUgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYgYXMgbmVjZXNzYXJ5IGZvciBtYW5hZ2luZyB5b3VyIGNhY2hlICovXG4gICAgcHVibGljIEVsYXN0aUNhY2hlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRWxhc3RpQ2FjaGVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBFbGFzdGljTG9hZEJhbGFuY2luZywgYW5kIGxpbWl0ZWQgYWNjZXNzIHRvIG90aGVyIHNlcnZpY2VzIG5lY2Vzc2FyeSB0byBwcm92aWRlIEVsYXN0aWNMb2FkQmFsYW5jaW5nIGZlYXR1cmVzLiAqL1xuICAgIHB1YmxpYyBFbGFzdGljTG9hZEJhbGFuY2luZ0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRWxhc3RpY0xvYWRCYWxhbmNpbmdGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gRWxhc3RpY0xvYWRCYWxhbmNpbmcgYW5kIGRlcGVuZGVudCBzZXJ2aWNlcyAqL1xuICAgIHB1YmxpYyBFbGFzdGljTG9hZEJhbGFuY2luZ1JlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsYXN0aWNMb2FkQmFsYW5jaW5nUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBBY2Nlc3MgdG8gdmlldyBwdXJjaGFzZWQgYXNzZXRzIGFuZCBkb3dubG9hZCByZWxhdGVkIHNvZnR3YXJlIGFuZCBraWNrc3RhcnQgZmlsZXMgKi9cbiAgICBwdWJsaWMgRWxlbWVudGFsQWN0aXZhdGlvbnNEb3dubG9hZFNvZnR3YXJlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsZW1lbnRhbEFjdGl2YXRpb25zRG93bmxvYWRTb2Z0d2FyZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bGwgYWNjZXNzIHRvIHZpZXcgYW5kIHRha2UgYWN0aW9uIG9uIEVsZW1lbnRhbCBBcHBsaWFuY2VzIGFuZCBTb2Z0d2FyZSBwdXJjaGFzZWQgYXNzZXRzICovXG4gICAgcHVibGljIEVsZW1lbnRhbEFjdGl2YXRpb25zRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FbGVtZW50YWxBY3RpdmF0aW9uc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBY2Nlc3MgdG8gdmlldyBwdXJjaGFzZWQgYXNzZXRzIGFuZCBnZW5lcmF0ZSBzb2Z0d2FyZSBsaWNlbnNlcyBmb3IgcGVuZGluZyBhY3RpdmF0aW9ucyAqL1xuICAgIHB1YmxpYyBFbGVtZW50YWxBY3RpdmF0aW9uc0dlbmVyYXRlTGljZW5zZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRWxlbWVudGFsQWN0aXZhdGlvbnNHZW5lcmF0ZUxpY2Vuc2VzKTtcbiAgICB9XG5cbiAgICAvKiogUmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgZGV0YWlsZWQgbGlzdCBvZiBwdXJjaGFzZWQgYXNzZXRzIGFzc29jaWF0ZWQgdG8gdGhlIEFXUyBhY2NvdW50IG9mIHRoZSB1c2VyICovXG4gICAgcHVibGljIEVsZW1lbnRhbEFjdGl2YXRpb25zUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRWxlbWVudGFsQWN0aXZhdGlvbnNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bGwgYWNjZXNzIHRvIHZpZXcgYW5kIHRha2UgYWN0aW9uIG9uIEVsZW1lbnRhbCBBcHBsaWFuY2VzIGFuZCBTb2Z0d2FyZSBxdW90ZXMgYW5kIG9yZGVycyAqL1xuICAgIHB1YmxpYyBFbGVtZW50YWxBcHBsaWFuY2VzU29mdHdhcmVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsZW1lbnRhbEFwcGxpYW5jZXNTb2Z0d2FyZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBSZWFkLW9ubHkgYWNjZXNzIHRvIHZpZXcgRWxlbWVudGFsIEFwcGxpYW5jZXMgYW5kIFNvZnR3YXJlIHF1b3RlcyBhbmQgb3JkZXJzICovXG4gICAgcHVibGljIEVsZW1lbnRhbEFwcGxpYW5jZXNTb2Z0d2FyZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsZW1lbnRhbEFwcGxpYW5jZXNTb2Z0d2FyZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRnVsbCBhY2Nlc3MgdG8gdmlldyBhbmQgdGFrZSBhY3Rpb24gb24gRWxlbWVudGFsIEFwcGxpYW5jZSBhbmQgU29mdHdhcmUgc3VwcG9ydCBjYXNlcyBhbmQgcHJvZHVjdCBzdXBwb3J0IGNvbnRlbnQgKi9cbiAgICBwdWJsaWMgRWxlbWVudGFsU3VwcG9ydENlbnRlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRWxlbWVudGFsU3VwcG9ydENlbnRlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcmVhZC1vbmx5IHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgdGhlIFdBTCBzZXJ2aWNlIGZvciBBbWF6b24gRU1SIHRvIGZpbmQgYW5kIHJldHVybiB0aGUgc3RhdHVzIG9mIGEgY2x1c3RlciAqL1xuICAgIHB1YmxpYyBFTVJEZXNjcmliZUNsdXN0ZXJQb2xpY3lGb3JFTVJXQUwoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRU1SRGVzY3JpYmVDbHVzdGVyUG9saWN5Rm9yRU1SV0FMKTtcbiAgICB9XG5cbiAgICAvKiogQWNjZXNzIHBvbGljeSB0byBhbGxvdyBGTSBzZXJ2aWNlIGxpbmtlZCByb2xlIHRvIHBlcmZvcm0gRk0tcmVsYXRlZCBhY3Rpb25zIG9uIEZNLW1hbmFnZWQgcmVzb3VyY2VzIHdpdGhpbiBhIGN1c3RvbWVyIEFXUyBPcmdhbml6YXRpb24gYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgRk1TU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRk1TU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIEZTeCB0byBkZWxldGUgaXRzIFNlcnZpY2UgTGlua2VkIFJvbGVzIGZvciBBbWF6b24gUzMgYWNjZXNzICovXG4gICAgcHVibGljIEZTeERlbGV0ZVNlcnZpY2VMaW5rZWRSb2xlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkZTeERlbGV0ZVNlcnZpY2VMaW5rZWRSb2xlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyBmb3IgY29tcHV0ZSBhY3Rpb25zIGluIGFuIEFtYXpvbiBHYW1lTGlmdCBjb250YWluZXIgZmxlZXQsIGluY2x1ZGluZyBhY2Nlc3MgdG8gZGVwZW5kZW5jaWVzIHN1Y2ggYXMgQW1hem9uIFMzLiAqL1xuICAgIHB1YmxpYyBHYW1lTGlmdENvbnRhaW5lckZsZWV0UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkdhbWVMaWZ0Q29udGFpbmVyRmxlZXRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gYWxsb3cgR2FtZWxpZnQgR2FtZVNlcnZlckdyb3VwcyB0byBtYW5hZ2UgY3VzdG9tZXIgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEdhbWVMaWZ0R2FtZVNlcnZlckdyb3VwUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkdhbWVMaWZ0R2FtZVNlcnZlckdyb3VwUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBtYW5hZ2VkIHBvbGljeSBncmFudHMgcGVybWlzc2lvbiB0byBjb25uZWN0IHdpdGggQW1hem9uIFEgYW5kIHV0aWxpemUgdGhlIGZlYXR1cmVzIGluIHRoZSBHaXRMYWIgRHVvIHdpdGggQW1hem9uIFEgaW50ZWdyYXRpb24uICovXG4gICAgcHVibGljIEdpdExhYkR1b1dpdGhBbWF6b25RUGVybWlzc2lvbnNQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuR2l0TGFiRHVvV2l0aEFtYXpvblFQZXJtaXNzaW9uc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IEdsb2JhbEFjY2VsZXJhdG9yIFVzZXJzIGZ1bGwgQWNjZXNzIHRvIGFsbCBBUElzICovXG4gICAgcHVibGljIEdsb2JhbEFjY2VsZXJhdG9yRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5HbG9iYWxBY2NlbGVyYXRvckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBHbG9iYWxBY2NlbGVyYXRvciBVc2VycyBBY2Nlc3MgdG8gUmVhZCBPbmx5IEFQSXMgKi9cbiAgICBwdWJsaWMgR2xvYmFsQWNjZWxlcmF0b3JSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5HbG9iYWxBY2NlbGVyYXRvclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBhY2Nlc3MgdG8gdGhlIEdyZWVuZ3Jhc3MgT1RBIFVwZGF0ZSBhcnRpZmFjdHMgaW4gYWxsIEdyZWVuZ3Jhc3MgcmVnaW9ucyAqL1xuICAgIHB1YmxpYyBHcmVlbmdyYXNzT1RBVXBkYXRlQXJ0aWZhY3RBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuR3JlZW5ncmFzc09UQVVwZGF0ZUFydGlmYWN0QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQVdTIEhlYWx0aCBwb2xpY3kgdG8gZW5hYmxlIE9yZ2FuaXphdGlvbmFsIFZpZXcgZmVhdHVyZSAqL1xuICAgIHB1YmxpYyBIZWFsdGhPcmdhbml6YXRpb25zU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuSGVhbHRoT3JnYW5pemF0aW9uc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIGFjY2VzcyB0byByZWFkIGFsbCBhY2Nlc3MgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgSUFNIGFjY2VzcyBhZHZpc29yIHN1Y2ggYXMgc2VydmljZSBsYXN0IGFjY2Vzc2VkIGluZm9ybWF0aW9uLiAqL1xuICAgIHB1YmxpYyBJQU1BY2Nlc3NBZHZpc29yUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuSUFNQWNjZXNzQWR2aXNvclJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gSUFNIEFjY2VzcyBBbmFseXplciAqL1xuICAgIHB1YmxpYyBJQU1BY2Nlc3NBbmFseXplckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuSUFNQWNjZXNzQW5hbHl6ZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBJQU0gQWNjZXNzIEFuYWx5emVyIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBJQU1BY2Nlc3NBbmFseXplclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTUFjY2Vzc0FuYWx5emVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgcmVxdWlyZWQgdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mIHJvb3QgdXNlciBjcmVkZW50aWFscyBzdWNoIGFzIHJvb3QgdXNlciBwYXNzd29yZCBhbmQgcm9vdCB1c2VyIGFjY2VzcyBrZXlzIHVzaW5nIHRoZSBTZWN1cml0eSBUb2tlbiBTZXJ2aWNlIChTVFMpIEFzc3VtZVJvb3QgQVBJLiBVc2UgdGhpcyBtYW5hZ2VkIHBvbGljeSBvbmx5IHdpdGggdGhlIFNUUyBBc3N1bWVSb290IGFjdGlvbi4gKi9cbiAgICBwdWJsaWMgSUFNQXVkaXRSb290VXNlckNyZWRlbnRpYWxzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTUF1ZGl0Um9vdFVzZXJDcmVkZW50aWFscyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyByZXF1aXJlZCB0byBjcmVhdGUgYSByb290IHVzZXIgcGFzc3dvcmQgdXNpbmcgdGhlIFNlY3VyaXR5IFRva2VuIFNlcnZpY2UgKFNUUykgQXNzdW1lUm9vdCBBUEkuICBVc2UgdGhpcyBtYW5hZ2VkIHBvbGljeSBvbmx5IHdpdGggdGhlIFNUUyBBc3N1bWVSb290IGFjdGlvbi4gKi9cbiAgICBwdWJsaWMgSUFNQ3JlYXRlUm9vdFVzZXJQYXNzd29yZCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JQU1DcmVhdGVSb290VXNlclBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHJlcXVpcmVkIHRvIGRlbGV0ZSBhbGwgcm9vdCB1c2VyIGNyZWRlbnRpYWxzIHN1Y2ggYXMgcm9vdCBwYXNzd29yZCBhbmQgcm9vdCBhY2Nlc3Mga2V5cyB1c2luZyB0aGUgU2VjdXJpdHkgVG9rZW4gU2VydmljZSAoU1RTKSBBc3N1bWVSb290IEFQSS4gIFVzZSB0aGlzIG1hbmFnZWQgcG9saWN5IG9ubHkgd2l0aCB0aGUgU1RTIEFzc3VtZVJvb3QgYWN0aW9uLiAqL1xuICAgIHB1YmxpYyBJQU1EZWxldGVSb290VXNlckNyZWRlbnRpYWxzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTURlbGV0ZVJvb3RVc2VyQ3JlZGVudGlhbHMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBJQU0gdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBJQU1GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIElBTSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIElBTVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFuIElBTSB1c2VyIHRvIG1hbmFnZSB0aGVpciBvd24gU2VydmljZSBTcGVjaWZpYyBDcmVkZW50aWFscy4gKi9cbiAgICBwdWJsaWMgSUFNU2VsZk1hbmFnZVNlcnZpY2VTcGVjaWZpY0NyZWRlbnRpYWxzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTVNlbGZNYW5hZ2VTZXJ2aWNlU3BlY2lmaWNDcmVkZW50aWFscyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IGZvciBhbiBJQU0gdXNlciB0byBjaGFuZ2UgdGhlaXIgb3duIHBhc3N3b3JkLiAqL1xuICAgIHB1YmxpYyBJQU1Vc2VyQ2hhbmdlUGFzc3dvcmQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuSUFNVXNlckNoYW5nZVBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdGhlIGFiaWxpdHkgZm9yIGFuIElBTSB1c2VyIHRvIG1hbmFnZSB0aGVpciBvd24gU1NIIGtleXMuICovXG4gICAgcHVibGljIElBTVVzZXJTU0hLZXlzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTVVzZXJTU0hLZXlzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gSW50ZXJhY3RpdmUgVmlkZW8gU2VydmljZSAoSVZTKSwgQWxzbyBpbmNsdWRlZCBwZXJtaXNzaW9ucyBmb3IgZGVwZW5kZW50IHNlcnZpY2VzLCBuZWVkZWQgZm9yIGZ1bGwgYWNjZXNzIHRvIHRoZSBpdnMgY29uc29sZS4gKi9cbiAgICBwdWJsaWMgSVZTRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JVlNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBJVlMgTG93LUxhdGVuY3kgYW5kIFJlYWwtVGltZSBzdHJlYW1pbmcgQVBJcyAqL1xuICAgIHB1YmxpYyBJVlNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JVlNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UgTGlua2VkIFJvbGUgdG8gcGVyZm9ybSBTMyBQdXRPYmplY3QgdG8gcmVjb3JkaW5nIElWUyBsaXZlIHN0cmVhbXMgKi9cbiAgICBwdWJsaWMgSVZTUmVjb3JkVG9TMygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JVlNSZWNvcmRUb1MzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIEthZmthIENvbm5lY3QgcGVybWlzc2lvbiB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgS2Fma2FDb25uZWN0U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuS2Fma2FDb25uZWN0U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBJQU0gc2VydmljZSBsaW5rZWQgcm9sZSBwb2xpY3kgZm9yIEthZmthLiAqL1xuICAgIHB1YmxpYyBLYWZrYVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkthZmthU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIEFtYXpvbiBLZXlzcGFjZXMgZm9yIENoYW5nZSBEYXRhIENhcHR1cmUgKi9cbiAgICBwdWJsaWMgS2V5c3BhY2VzQ0RDU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuS2V5c3BhY2VzQ0RDU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9ucyByZXF1aXJlZCBieSBLZXlzcGFjZXMgZm9yIGNyb3NzLXJlZ2lvbiBkYXRhIHJlcGxpY2F0aW9uICovXG4gICAgcHVibGljIEtleXNwYWNlc1JlcGxpY2F0aW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuS2V5c3BhY2VzUmVwbGljYXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBncmFudCB0ZW1wb3JhcnkgZGF0YSBhY2Nlc3MgdG8gTGFrZSBGb3JtYXRpb24gcmVzb3VyY2VzICovXG4gICAgcHVibGljIExha2VGb3JtYXRpb25EYXRhQWNjZXNzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTGFrZUZvcm1hdGlvbkRhdGFBY2Nlc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgQVdTIExleCBCb3QgdXNlIGNhc2UgKi9cbiAgICBwdWJsaWMgTGV4Qm90UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkxleEJvdFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgQVdTIExleCBDaGFubmVsIHVzZSBjYXNlICovXG4gICAgcHVibGljIExleENoYW5uZWxQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTGV4Q2hhbm5lbFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBMaWdodHNhaWwgc2VydmljZSBsaW5rZWQgcm9sZSBwb2xpY3kgd2hpY2ggZ3JhbnRzIHBlcm1pc3Npb25zIHRvIGV4cG9ydCByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgTGlnaHRzYWlsRXhwb3J0QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkxpZ2h0c2FpbEV4cG9ydEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9uIHRvIHJlZ2lzdGVyIE1lZGlhQ29ubmVjdCBHYXRld2F5IEluc3RhbmNlcyB0byBhIE1lZGlhQ29ubmVjdCBHYXRld2F5LiAqL1xuICAgIHB1YmxpYyBNZWRpYUNvbm5lY3RHYXRld2F5SW5zdGFuY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk1lZGlhQ29ubmVjdEdhdGV3YXlJbnN0YW5jZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgTWVkaWFQYWNrYWdlIHRvIHB1Ymxpc2ggbG9ncyB0byBDbG91ZFdhdGNoICovXG4gICAgcHVibGljIE1lZGlhUGFja2FnZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk1lZGlhUGFja2FnZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIE1lbW9yeURCIHRvIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmIGFzIG5lY2Vzc2FyeSBmb3IgbWFuYWdpbmcgeW91ciByZXNvdXJjZXMuICovXG4gICAgcHVibGljIE1lbW9yeURCU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTWVtb3J5REJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgdG8gYXNzdW1lIHJvbGUgaW4gY3VzdG9tZXIncyBhY2NvdW50IHRvIGNhbGwgTWlncmF0aW9uIEh1YiAqL1xuICAgIHB1YmxpYyBNaWdyYXRpb25IdWJETVNBY2Nlc3NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5NaWdyYXRpb25IdWJETVNBY2Nlc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBNaWdyYXRpb24gSHViIHRvIGNhbGwgQXBwbGljYXRpb24gRGlzY292ZXJ5IFNlcnZpY2Ugb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgTWlncmF0aW9uSHViU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTWlncmF0aW9uSHViU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIFNlcnZlciBNaWdyYXRpb24gU2VydmljZSB0byBhc3N1bWUgcm9sZSBpbiBjdXN0b21lcidzIGFjY291bnQgdG8gY2FsbCBNaWdyYXRpb24gSHViICovXG4gICAgcHVibGljIE1pZ3JhdGlvbkh1YlNNU0FjY2Vzc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk1pZ3JhdGlvbkh1YlNNU0FjY2Vzc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBV1MgTW9uaXRyb24gc2VydmljZSBsaW5rZWQgcm9sZSBncmFudGluZyBhY2Nlc3MgdG8gcmVxdWlyZWQgY3VzdG9tZXIgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBNb25pdHJvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk1vbml0cm9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBNdWx0aS1wYXJ0eSBhcHByb3ZhbC4gVGhpcyBwb2xpY3kgYWxzbyBpbmNsdWRlcyByZWxhdGVkIHBlcm1pc3Npb25zIHRvIEFXUyBPcmdhbml6YXRpb25zIGFuZCBBV1MgSUFNIElkZW50aXR5IGZvciBtYW5hZ2luZyBhcHByb3ZhbCB0ZWFtcyBhbmQgaWRlbnRpdHkgc291cmNlcy4gKi9cbiAgICBwdWJsaWMgTXVsdGlQYXJ0eUFwcHJvdmFsRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5NdWx0aVBhcnR5QXBwcm92YWxGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBNdWx0aS1wYXJ0eSBhcHByb3ZhbC4gVGhpcyBwb2xpY3kgYWxzbyBpbmNsdWRlcyByZWxhdGVkIHJlYWQgcGVybWlzc2lvbiB0byBBV1MgT3JnYW5pemF0aW9ucyBhbmQgQVdTIElBTSBJZGVudGl0eSBmb3IgYXBwcm92YWwgdGVhbXMgYW5kIGlkZW50aXR5IHNvdXJjZXMuICovXG4gICAgcHVibGljIE11bHRpUGFydHlBcHByb3ZhbFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk11bHRpUGFydHlBcHByb3ZhbFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gbWFuYWdlIEFtYXpvbiBOZXB0dW5lIHVzaW5nIHRoZSBBV1MgQ29uc29sZS4gTm90ZSB0aGlzIHBvbGljeSBhbHNvIGdyYW50cyBmdWxsIGFjY2VzcyB0byBwdWJsaXNoIG9uIGFsbCBTTlMgdG9waWNzIHdpdGhpbiB0aGUgYWNjb3VudCwgcGVybWlzc2lvbnMgdG8gY3JlYXRlIGFuZCBlZGl0IEFtYXpvbiBFQzIgaW5zdGFuY2VzIGFuZCBWUEMgY29uZmlndXJhdGlvbnMsIHBlcm1pc3Npb25zIHRvIHZpZXcgYW5kIGxpc3Qga2V5cyBvbiBBbWF6b24gS01TLCBhbmQgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFJEUy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL25lcHR1bmUvZmFxcy8uICovXG4gICAgcHVibGljIE5lcHR1bmVDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5OZXB0dW5lQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTmVwdHVuZS4gTm90ZSB0aGlzIHBvbGljeSBhbHNvIGdyYW50cyBmdWxsIGFjY2VzcyB0byBwdWJsaXNoIG9uIGFsbCBTTlMgdG9waWNzIHdpdGhpbiB0aGUgYWNjb3VudCBhbmQgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFJEUy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL25lcHR1bmUvZmFxcy8uICovXG4gICAgcHVibGljIE5lcHR1bmVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk5lcHR1bmVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBhbGwgQW1hem9uIE5lcHR1bmUgQW5hbHl0aWNzIHJlc291cmNlcyBhbG9uZyB3aXRoIHJlYWQgb25seSBwZXJtaXNzaW9ucyBmb3IgZGVwZW5kZW50IHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBOZXB0dW5lR3JhcGhSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5OZXB0dW5lR3JhcGhSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIE5lcHR1bmUuIE5vdGUgdGhhdCB0aGlzIHBvbGljeSBhbHNvIGdyYW50cyBhY2Nlc3MgdG8gQW1hem9uIFJEUyByZXNvdXJjZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9uZXB0dW5lL2ZhcXMvLiAqL1xuICAgIHB1YmxpYyBOZXB0dW5lUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTmVwdHVuZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHBlcm1pc3Npb25zIHRvIEFXUyBzZXJ2aWNlcyBhbmQgYWN0aW9ucyByZXF1aXJlZCB0byBzZXQgdXAgYW5kIGNvbmZpZ3VyZSBBV1MgbmV0d29yayByZXNvdXJjZXMuICovXG4gICAgcHVibGljIE5ldHdvcmtBZG1pbmlzdHJhdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk5ldHdvcmtBZG1pbmlzdHJhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIHRoZSBBV1MgU2hpZWxkIG5ldHdvcmsgc2VjdXJpdHkgZGlyZWN0b3Igc2VydmljZSBsaW5rZWQgcm9sZSB0byBhc3Nlc3Mgc3BlY2lmaWVkIGVudmlyb25tZW50cy4gKi9cbiAgICBwdWJsaWMgTmV0d29ya1NlY3VyaXR5RGlyZWN0b3JTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5OZXR3b3JrU2VjdXJpdHlEaXJlY3RvclNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBPYnNlcnZhYmlsaXR5IEFjY2VzcyBNYW5hZ2VyICovXG4gICAgcHVibGljIE9BTUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuT0FNRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIFJlYWQgT25seSBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBPYnNlcnZhYmlsaXR5IEFjY2VzcyBNYW5hZ2VyICovXG4gICAgcHVibGljIE9BTVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk9BTVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBPcGVuU2VhcmNoIEluZ2VzdGlvbiB0byBkZXNjcmliZSBuZXR3b3JrIHJlc291cmNlcyBhbmQgd3JpdGUgc2VydmljZSBtZXRyaWNzIHRvIGNsb3Vkd2F0Y2ggKi9cbiAgICBwdWJsaWMgT3BlbnNlYXJjaEluZ2VzdGlvblNlbGZNYW5hZ2VkVnBjZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5PcGVuc2VhcmNoSW5nZXN0aW9uU2VsZk1hbmFnZWRWcGNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIGFzc29jaWF0ZSBhbmQgZGlzc29jaWF0ZSBwYXJ0bmVyIGNlbnRyYWwgdXNlcnMgd2l0aCBJQU0gcm9sZXMgKi9cbiAgICBwdWJsaWMgUGFydG5lckNlbnRyYWxBY2NvdW50TWFuYWdlbWVudFVzZXJSb2xlQXNzb2NpYXRpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUGFydG5lckNlbnRyYWxBY2NvdW50TWFuYWdlbWVudFVzZXJSb2xlQXNzb2NpYXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1Mgc2VydmljZXMgYW5kIHJlc291cmNlcywgYnV0IGRvZXMgbm90IGFsbG93IG1hbmFnZW1lbnQgb2YgVXNlcnMgYW5kIGdyb3Vwcy4gKi9cbiAgICBwdWJsaWMgUG93ZXJVc2VyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlBvd2VyVXNlckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIFEgQXBwcy4gKi9cbiAgICBwdWJsaWMgUUFwcHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5RQXBwc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIFFCdXNpbmVzcyB0byBjYWxsIFF1aWNrU2lnaHQgQVBJcyBmb3IgdGhlIFF1aWNrU2lnaHQgcGx1Z2luICovXG4gICAgcHVibGljIFFCdXNpbmVzc1F1aWNrc2lnaHRQbHVnaW5Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUUJ1c2luZXNzUXVpY2tzaWdodFBsdWdpblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIFEgKi9cbiAgICBwdWJsaWMgUUJ1c2luZXNzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUUJ1c2luZXNzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdXNlZCBieSBRdWlja1NpZ2h0IHRlYW0gdG8gYWNjZXNzIGN1c3RvbWVyIGRhdGEgcHJvZHVjZWQgYnkgUzMgU3RvcmFnZSBNYW5hZ2VtZW50IEFuYWx5dGljcy4gKi9cbiAgICBwdWJsaWMgUXVpY2tTaWdodEFjY2Vzc0ZvclMzU3RvcmFnZU1hbmFnZW1lbnRBbmFseXRpY3NSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5RdWlja1NpZ2h0QWNjZXNzRm9yUzNTdG9yYWdlTWFuYWdlbWVudEFuYWx5dGljc1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIHRoZSBBbWF6b24gUkRTIHNlcnZpY2Ugcm9sZS4gKi9cbiAgICBwdWJsaWMgUkRTQ2xvdWRIc21BdXRob3JpemF0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5SRFNDbG91ZEhzbUF1dGhvcml6YXRpb25Sb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1Mgc2VydmljZXMgYW5kIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBSZXNvdXJjZSBHcm91cHMgYW5kIFRhZyBFZGl0b3IuICovXG4gICAgcHVibGljIFJlc291cmNlR3JvdXBzYW5kVGFnRWRpdG9yRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5SZXNvdXJjZUdyb3Vwc2FuZFRhZ0VkaXRvckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gdXNlIFJlc291cmNlIEdyb3VwcyBhbmQgVGFnIEVkaXRvciwgYnV0IGRvZXMgbm90IGFsbG93IGVkaXRpbmcgb2YgdGFncyB2aWEgdGhlIFRhZyBFZGl0b3IuICovXG4gICAgcHVibGljIFJlc291cmNlR3JvdXBzYW5kVGFnRWRpdG9yUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUmVzb3VyY2VHcm91cHNhbmRUYWdFZGl0b3JSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgUmVzb3VyY2UgR3JvdXBzIHRvIHF1ZXJ5IHRoZSBBV1Mgc2VydmljZXMgdGhhdCBvd24geW91ciByZXNvdXJjZXMgdG8ga2VlcCB0aGUgZ3JvdXAgdXAtdG8tZGF0ZSAqL1xuICAgIHB1YmxpYyBSZXNvdXJjZUdyb3Vwc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJlc291cmNlR3JvdXBzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0byB0YWcgYW5kIHVudGFnIGFsbCB0aGUgcmVzb3VyY2VzIHN1cHBvcnRlZCBieSBSZXNvdXJjZSBHcm91cHMgVGFnZ2luZyBBUEkuIFRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIHRoZSBwZXJtaXNzaW9ucyByZXF1aXJlZCB0byByZXRyaWV2ZSBhbGwgdGFnZ2VkLCBvciBwcmV2aW91c2x5IHRhZ2dlZCwgcmVzb3VyY2VzIHRocm91Z2ggdGhlIFJlc291cmNlIEdyb3VwcyBUYWdnaW5nIEFQSS4gKi9cbiAgICBwdWJsaWMgUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJVGFnVW50YWdTdXBwb3J0ZWRSZXNvdXJjZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUmVzb3VyY2VHcm91cHNUYWdnaW5nQVBJVGFnVW50YWdTdXBwb3J0ZWRSZXNvdXJjZXMpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIE9wZW5TaGlmdCBBbWF6b24gRUJTIENvbnRhaW5lciBTdG9yYWdlIEludGVyZmFjZSAoQ1NJKSBEcml2ZXIgT3BlcmF0b3IgdG8gaW5zdGFsbCBhbmQgbWFpbnRhaW4gdGhlIEFtYXpvbiBFQlMgQ1NJIGRyaXZlciBvbiBhIFJlZCBIYXQgT3BlblNoaWZ0IFNlcnZpY2Ugb24gQVdTIChST1NBKSBjbHVzdGVyLiBUaGUgQW1hem9uIEVCUyBDU0kgZHJpdmVyIGFsbG93cyBST1NBIGNsdXN0ZXJzIHRvIG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIEFtYXpvbiBFQlMgdm9sdW1lcyBmb3IgcGVyc2lzdGVudCB2b2x1bWVzLiAqL1xuICAgIHB1YmxpYyBST1NBQW1hem9uRUJTQ1NJRHJpdmVyT3BlcmF0b3JQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUk9TQUFtYXpvbkVCU0NTSURyaXZlck9wZXJhdG9yUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBPcGVuU2hpZnQgQ2xvdWQgTmV0d29yayBDb25maWcgQ29udHJvbGxlciBPcGVyYXRvciB0byBwcm92aXNpb24gYW5kIG1hbmFnZSBuZXR3b3JraW5nIHJlc291cmNlcyBmb3IgdXNlIGJ5IHRoZSBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgY2x1c3RlciBuZXR3b3JraW5nIG92ZXJsYXkuIFRoZSBPcGVuU2hpZnQgQ2xvdWQgTmV0d29yayBPcGVyYXRvciBpbnRlcmZhY2VzIHdpdGggQVdTIEFQSXMgb24gYmVoYWxmIG9mIHRoZSBuZXR3b3JrIHBsdWdpbnMgdmlhIEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbnMuIFRoZSBvcGVyYXRvciB1c2VzIHRoZXNlIHBvbGljeSBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgcHJpdmF0ZSBJUCBhZGRyZXNzZXMgZm9yIEFtYXpvbiBFQzIgaW5zdGFuY2VzIGFzIHBhcnQgb2YgdGhlIFJPU0EgY2x1c3Rlci4gKi9cbiAgICBwdWJsaWMgUk9TQUNsb3VkTmV0d29ya0NvbmZpZ09wZXJhdG9yUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FDbG91ZE5ldHdvcmtDb25maWdPcGVyYXRvclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgY29udHJvbCBwbGFuZSB0byBtYW5hZ2UgUk9TQSBjbHVzdGVyIEFtYXpvbiBFQzIgYW5kIEFtYXpvbiBSb3V0ZSA1MyByZXNvdXJjZXMuICovXG4gICAgcHVibGljIFJPU0FDb250cm9sUGxhbmVPcGVyYXRvclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBQ29udHJvbFBsYW5lT3BlcmF0b3JQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIE9wZW5TaGlmdCBJbWFnZSBSZWdpc3RyeSBPcGVyYXRvciB0byBwcm92aXNpb24gYW5kIG1hbmFnZSBBbWF6b24gUzMgYnVja2V0cyBhbmQgb2JqZWN0cyBmb3IgdXNlIGJ5IHRoZSBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgaW4tY2x1c3RlciBpbWFnZSByZWdpc3RyeSB0byBzYXRpc2Z5IFJPU0Egc3RvcmFnZSByZXF1aXJlbWVudHMuIFRoZSBPcGVuU2hpZnQgSW1hZ2UgUmVnaXN0cnkgT3BlcmF0b3IgaW5zdGFsbHMgYW5kIG1haW50YWlucyB0aGUgaW50ZXJuYWwgcmVnaXN0cnkgb2YgYSBSZWQgSGF0IE9wZW5TaGlmdCBjbHVzdGVyLiAqL1xuICAgIHB1YmxpYyBST1NBSW1hZ2VSZWdpc3RyeU9wZXJhdG9yUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FJbWFnZVJlZ2lzdHJ5T3BlcmF0b3JQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIE9wZW5TaGlmdCBJbmdyZXNzIE9wZXJhdG9yIHRvIHByb3Zpc2lvbiBhbmQgbWFuYWdlIGxvYWQgYmFsYW5jZXJzIGFuZCBkb21haW4gbmFtZSBzeXN0ZW0gKEROUykgY29uZmlndXJhdGlvbnMgZm9yIFJlZCBIYXQgT3BlblNoaWZ0IFNlcnZpY2Ugb24gQVdTIChST1NBKSBjbHVzdGVycy4gVGhlIHBvbGljeSBhbGxvd3MgcmVhZCBhY2Nlc3MgdG8gdGFnIHZhbHVlcywgd2hpY2ggdGhlIG9wZXJhdG9yIGZpbHRlcnMgZm9yIFJvdXRlIDUzIHJlc291cmNlcyB0byBkaXNjb3ZlciBob3N0ZWQgem9uZXMuICovXG4gICAgcHVibGljIFJPU0FJbmdyZXNzT3BlcmF0b3JQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUk9TQUluZ3Jlc3NPcGVyYXRvclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB0aGUgUmVkIEhhdCBPcGVuU2hpZnQgU2VydmljZSBvbiBBV1MgKFJPU0EpIGluc3RhbGxlciB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyB0aGF0IHN1cHBvcnQgUk9TQSBjbHVzdGVyIGluc3RhbGxhdGlvbi4gVGhpcyBpbmNsdWRlcyBtYW5hZ2luZyBpbnN0YW5jZSBwcm9maWxlcyBmb3IgUk9TQSB3b3JrZXIgbm9kZXMuICovXG4gICAgcHVibGljIFJPU0FJbnN0YWxsZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUk9TQUluc3RhbGxlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB0aGUgYnVpbHQtaW4gUk9TQSBBV1MgRW5jcnlwdGlvbiBQcm92aWRlciB0byBtYW5hZ2UgQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykga2V5cyB0byBzdXBwb3J0IGV0Y2QgZGF0YSBlbmNyeXB0aW9uIHVzaW5nIGEgY3VzdG9tZXIgcHJvdmlkZWQgQVdTIEtNUyBrZXkuIFRoZSBwb2xpY3kgYWxsb3dzIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gb2YgZGF0YSB1c2luZyBLTVMga2V5cy4gKi9cbiAgICBwdWJsaWMgUk9TQUtNU1Byb3ZpZGVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FLTVNQcm92aWRlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB0aGUgUk9TQSBLdWJlcm5ldGVzIGNvbnRyb2xsZXIgdG8gbWFuYWdlIEFtYXpvbiBFQzIsIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgKEVMQiksIGFuZCBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSByZXNvdXJjZXMgZm9yIGEgUk9TQSBjbHVzdGVyLiAqL1xuICAgIHB1YmxpYyBST1NBS3ViZUNvbnRyb2xsZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUk9TQUt1YmVDb250cm9sbGVyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgdGhlIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIG1hbmFnZSB0aGUgUmVkIEhhdCBPcGVuU2hpZnQgU2VydmljZSBvbiBBV1MgKFJPU0EpIHN1YnNjcmlwdGlvbi4gKi9cbiAgICBwdWJsaWMgUk9TQU1hbmFnZVN1YnNjcmlwdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBTWFuYWdlU3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFJlZCBIYXQgT3BlblNoaWZ0IFNlcnZpY2Ugb24gQVdTIChST1NBKSB0byBtYW5hZ2UgY2x1c3RlciBFQzIgaW5zdGFuY2VzIGFzIHdvcmtlciBub2RlcywgaW5jbHVkaW5nIHBlcm1pc3Npb24gdG8gY29uZmlndXJlIHNlY3VyaXR5IGdyb3VwcyBhbmQgdGFnIGluc3RhbmNlcyBhbmQgdm9sdW1lcy4gVGhpcyBwb2xpY3kgYWxzbyBhbGxvd3MgZm9yIHRoZSB1c2Ugb2YgRUMyIGluc3RhbmNlcyB3aXRoIGRpc2sgZW5jcnlwdGlvbiBwcm92aWRlZCBieSBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBrZXlzLiAqL1xuICAgIHB1YmxpYyBST1NBTm9kZVBvb2xNYW5hZ2VtZW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FOb2RlUG9vbE1hbmFnZW1lbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIFJlZCBIYXQgT3BlblNoaWZ0IFNlcnZpY2Ugb24gQVdTIChST1NBKSBpbnN0YWxsZXIgdG8gY29uZmlndXJlIFZQQyBFbmRwb2ludHMgYW5kIFNlY3VyaXR5IEdyb3Vwcy4gSW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIHNoYXJlZCBWUEMuICovXG4gICAgcHVibGljIFJPU0FTaGFyZWRWUENFbmRwb2ludFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBU2hhcmVkVlBDRW5kcG9pbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIFJlZCBIYXQgT3BlblNoaWZ0IFNlcnZpY2Ugb24gQVdTIChST1NBKSBpbnN0YWxsZXIgdG8gY29uZmlndXJlIFJvdXRlNTMgcmVjb3Jkcy4gSW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIHNoYXJlZCBWUEMuICovXG4gICAgcHVibGljIFJPU0FTaGFyZWRWUENSb3V0ZTUzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FTaGFyZWRWUENSb3V0ZTUzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgUk9TQSBzaXRlIHJlbGlhYmlsaXR5IGVuZ2luZWVyaW5nIChTUkUpIHRoZSBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gaW5pdGlhbGx5IG9ic2VydmUsIGRpYWdub3NlLCBhbmQgc3VwcG9ydCBBV1MgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgY2x1c3RlcnMsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byBjaGFuZ2UgUk9TQSBjbHVzdGVyIG5vZGUgc3RhdGUuICovXG4gICAgcHVibGljIFJPU0FTUkVTdXBwb3J0UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FTUkVTdXBwb3J0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFJlZCBIYXQgT3BlblNoaWZ0IFNlcnZpY2Ugb24gQVdTIChST1NBKSB3b3JrZXIgbm9kZXMgaW4geW91ciBhY2NvdW50IHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIEVDMiBpbnN0YW5jZXMgYW5kIEFXUyBSZWdpb25zIGZvciBjb21wdXRlIG5vZGUgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuICovXG4gICAgcHVibGljIFJPU0FXb3JrZXJJbnN0YW5jZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBV29ya2VySW5zdGFuY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIExpbmtlZCBSb2xlIFBvbGljeSBmb3IgUm91dGUgNTMgUmVjb3ZlcnkgUmVhZGluZXNzICovXG4gICAgcHVibGljIFJvdXRlNTNSZWNvdmVyeVJlYWRpbmVzc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJvdXRlNTNSZWNvdmVyeVJlYWRpbmVzc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IFJvdXRlNTMgUmVzb2x2ZXIgKi9cbiAgICBwdWJsaWMgUm91dGU1M1Jlc29sdmVyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUm91dGU1M1Jlc29sdmVyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgUzMgU3RvcmFnZSBMZW5zICovXG4gICAgcHVibGljIFMzU3RvcmFnZUxlbnNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TM1N0b3JhZ2VMZW5zU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgcmVxdWlyZWQgdG8gdW5sb2NrIGEgUzMgYnVja2V0IHBvbGljeSB1c2luZyB0aGUgU2VjdXJpdHkgVG9rZW4gU2VydmljZSAoU1RTKSBBc3N1bWVSb290IEFQSS4gVXNlIHRoaXMgbWFuYWdlZCBwb2xpY3kgb25seSB3aXRoIHRoZSBTVFMgQXNzdW1lUm9vdCBhY3Rpb24uICovXG4gICAgcHVibGljIFMzVW5sb2NrQnVja2V0UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlMzVW5sb2NrQnVja2V0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgaW5pdGlhbCBhZG1pbmlzdHJhdGl2ZSBhbmQgaW5kaXZpZHVhbCBzZXR1cCBwcml2aWxlZ2VzIGZvciBBbWF6b24gU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiBBbGxvd3MgbGF1bmNoaW5nIG9mIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpbyBQb3J0YWwuICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0FkbWluSUFNQ29uc29sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9BZG1pbklBTUNvbnNvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBZG1pbmlzdHJhdGl2ZSBleGVjdXRpb24gcG9saWN5IGZvciB1c2luZyBJQU0gcm9sZXMgd2l0aCBTYWdlTWFrZXIgVW5pZmllZCBTdHVkaW8uIEFsbG93cyBhZG1pbnMgdG8gcHJvdmlzaW9uLCBtYW5hZ2UgYW5kIGFjY2VzcyByZXNvdXJjZXMgaW4geW91ciBhY2NvdW50IChleGNsdWRpbmcgYWNjZXNzIHRvIGRhdGEgcmVzb3VyY2VzKSBmb3IgSUFNLWJhc2VkIHVzYWdlIG9mIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpby4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvQWRtaW5JQU1EZWZhdWx0RXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0FkbWluSUFNRGVmYXVsdEV4ZWN1dGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFkbWluaXN0cmF0aXZlIGV4ZWN1dGlvbiBwb2xpY3kgZm9yIHVzaW5nIElBTSByb2xlcyB3aXRoIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpby4gQWxsb3dzIGFkbWlucyB0byBwcm92aXNpb24sIG1hbmFnZSBhbmQgYWNjZXNzIHJlc291cmNlcyBpbiB0aGUgbG9jYWwgYWNjb3VudCAoaW5jbHVkaW5nIGJyb2FkIGFjY2VzcyB0byBhbGwgQVBJcyBpbiBkYXRhIHNlcnZpY2VzIGxpa2UgUzMsIEdsdWUsIENsb3VkV2F0Y2ggTG9ncywgYW5kIG90aGVycykgZm9yIElBTS1iYXNlZCB1c2FnZSBvZiBTYWdlTWFrZXIgVW5pZmllZCBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0FkbWluSUFNUGVybWlzc2l2ZUV4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9BZG1pbklBTVBlcm1pc3NpdmVFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIElBTSBwb2xpY3kgZ3JhbnRzIGFuIElBTSByb2xlIGZ1bGwgYWNjZXNzIHRvIEFXUyBHbHVlIERhdGEgQ2F0YWxvZyAobWV0YWRhdGEpIGFuZCBBbWF6b24gUzMgKGFjdHVhbCBkYXRhKSBmb3IgZGF0YSBsYWtlIG9wZXJhdGlvbnMsIHdpdGggYWNjZXNzIHNjb3BlZCBieSBhY2NvdW50LCBhbmQgcm9sZSB0YWdzLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9BZG1pblByb2plY3RVc2VyUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9BZG1pblByb2plY3RVc2VyUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQmVkcm9jayBBZ2VudHMgdG8gYWNjZXNzIEFtYXpvbiBCZWRyb2NrIG1vZGVscyBhbmQgb3RoZXIgcmVzb3VyY2VzIGF0dGFjaGVkIHRvIGFuIGFnZW50IGluIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0JlZHJvY2tBZ2VudFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0JlZHJvY2tBZ2VudFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIGFuIEFtYXpvbiBCZWRyb2NrIGNoYXQgYWdlbnQgYXBwJ3MgY29uZmlndXJhdGlvbiBhbmQgQW1hem9uIEJlZHJvY2sgYWdlbnQgaW4gU2FnZU1ha2VyIFN0dWRpby4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvQmVkcm9ja0NoYXRBZ2VudFVzZXJSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0JlZHJvY2tDaGF0QWdlbnRVc2VyUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQmVkcm9jayB0byBhY2Nlc3MgQW1hem9uIEJlZHJvY2sgbW9kZWxzIGFuZCBkYXRhc2V0cyBmb3IgZXZhbHVhdGlvbiBqb2JzIGluIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0JlZHJvY2tFdmFsdWF0aW9uSm9iU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQmVkcm9ja0V2YWx1YXRpb25Kb2JTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQmVkcm9jayBGbG93cyB0byBhY2Nlc3MgQW1hem9uIEJlZHJvY2sgbW9kZWxzIGFuZCBvdGhlciByZXNvdXJjZXMgYXR0YWNoZWQgdG8gYSBmbG93IGluIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0JlZHJvY2tGbG93U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQmVkcm9ja0Zsb3dTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgTGFtYmRhIHRvIGFjY2VzcyBhbiBBbWF6b24gQmVkcm9jayBmdW5jdGlvbiBjb21wb25lbnQncyBjb25maWd1cmF0aW9uIGluIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0JlZHJvY2tGdW5jdGlvbkV4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQmVkcm9ja0Z1bmN0aW9uRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBjb25maWd1cmUgdmVjdG9yIHN0b3JlcyBhbmQgQW1hem9uIEJlZHJvY2sga25vd2xlZGdlIGJhc2VzIGluIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0JlZHJvY2tLbm93bGVkZ2VCYXNlQ3VzdG9tUmVzb3VyY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQmVkcm9ja0tub3dsZWRnZUJhc2VDdXN0b21SZXNvdXJjZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQmVkcm9jayBLbm93bGVkZ2UgQmFzZXMgdG8gYWNjZXNzIEFtYXpvbiBCZWRyb2NrIG1vZGVscyBhbmQgZGF0YSBzb3VyY2VzIGluIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0JlZHJvY2tLbm93bGVkZ2VCYXNlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQmVkcm9ja0tub3dsZWRnZUJhc2VTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBhbiBBbWF6b24gQmVkcm9jayBwcm9tcHQgYW5kIGl0cyBjb25maWd1cmF0aW9uIGluIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0JlZHJvY2tQcm9tcHRVc2VyUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9CZWRyb2NrUHJvbXB0VXNlclJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyB1c2VkIGJ5IEFtYXpvbiBTYWdlTWFrZXIgU3R1ZGlvIHRvIGNhdGFsb2csIGRpc2NvdmVyLCBnb3Zlcm4sIHNoYXJlLCBhbmQgYW5hbHl6ZSBkYXRhIGluIHRoZSBBbWF6b24gU2FnZU1ha2VyIFN0dWRpbyBkb21haW4uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0RvbWFpbkV4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvRG9tYWluRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBmb3IgZG9tYWluIGxldmVsIGFjdGlvbnMgaW4gdGhlIHBvcnRhbCB0aGF0IGFyZSBwZXJmb3JtZWQgYnkgQW1hem9uIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0RvbWFpblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0RvbWFpblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIFNhZ2VNYWtlciBTdHVkaW8gY3JlYXRlcyBJQU0gcm9sZXMgZm9yIHByb2plY3RzIHVzZXJzIHRvIHBlcmZvcm0gZGF0YSBhbmFseXRpY3MsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCBhbmQgbWFjaGluZSBsZWFybmluZyBhY3Rpb25zLCBhbmQgdXNlcyB0aGlzIHBvbGljeSB3aGVuIGNyZWF0aW5nIHRoZXNlIHJvbGVzIHRvIGRlZmluZSB0aGUgcGVybWlzc2lvbnMgcmVsYXRlZCB0byBFTVIuICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0VNUkluc3RhbmNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9FTVJJbnN0YW5jZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gU2FnZU1ha2VyIFN0dWRpbyBjcmVhdGVzIElBTSByb2xlcyBmb3IgcHJvamVjdHMgdXNlcnMgdG8gcGVyZm9ybSBkYXRhIGFuYWx5dGljcywgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIGFuZCBtYWNoaW5lIGxlYXJuaW5nIGFjdGlvbnMsIGFuZCB1c2VzIHRoaXMgcG9saWN5IHdoZW4gY3JlYXRpbmcgdGhlc2Ugcm9sZXMgdG8gZGVmaW5lIHRoZSBwZXJtaXNzaW9ucyByZWxhdGVkIHRvIEVNUi4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvRU1SU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvRU1SU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvIHZpYSB0aGUgQW1hem9uIFNhZ2VNYWtlciBtYW5hZ2VtZW50IGNvbnNvbGUuICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBTYWdlTWFrZXIgU3R1ZGlvIHVzZXMgdGhpcyBwb2xpY3kgdG8gcHJvdmlzaW9uIGFuZCBtYW5hZ2UgcmVzb3VyY2VzIGluIHlvdXIgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvUHJvamVjdFByb3Zpc2lvbmluZ1JvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvUHJvamVjdFByb3Zpc2lvbmluZ1JvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gU2FnZU1ha2VyIFN0dWRpbyBjcmVhdGVzIElBTSByb2xlcyBmb3IgcHJvamVjdHMgdXNlcnMgdG8gcGVyZm9ybSBkYXRhIGFuYWx5dGljcywgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIGFuZCBtYWNoaW5lIGxlYXJuaW5nIGFjdGlvbnMsIGFuZCB1c2VzIHRoaXMgcG9saWN5IHdoZW4gY3JlYXRpbmcgdGhlc2Ugcm9sZXMgdG8gZGVmaW5lIHRoZSBwZXJtaXNzaW9ucyByZWxhdGVkIHRvIFNhZ2VNYWtlci4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvUHJvamVjdFJvbGVNYWNoaW5lTGVhcm5pbmdQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvUHJvamVjdFJvbGVNYWNoaW5lTGVhcm5pbmdQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gU2FnZU1ha2VyIGNyZWF0ZXMgSUFNIHJvbGVzIGZvciBQcm9qZWN0cyB1c2VycyB0byBwZXJmb3JtIGRhdGEgYW5hbHl0aWNzLCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgYW5kIG1hY2hpbmUgbGVhcm5pbmcgYWN0aW9ucywgYW5kIHVzZXMgdGhpcyBwb2xpY3kgd2hlbiBjcmVhdGluZyB0aGVzZSByb2xlcyB0byBkZWZpbmUgdGhlIGJvdW5kYXJ5IG9mIHRoZWlyIHBlcm1pc3Npb25zLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9Qcm9qZWN0VXNlclJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb1Byb2plY3RVc2VyUm9sZVBlcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gU2FnZU1ha2VyIFN0dWRpbyBjcmVhdGVzIElBTSByb2xlcyBmb3IgcHJvamVjdHMgdXNlcnMgdG8gcGVyZm9ybSBkYXRhIGFuYWx5dGljcywgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIGFuZCBtYWNoaW5lIGxlYXJuaW5nIGFjdGlvbnMsIGFuZCB1c2VzIHRoaXMgcG9saWN5IHdoZW4gY3JlYXRpbmcgdGhlc2Ugcm9sZXMgdG8gZGVmaW5lIHRoZSBwZXJtaXNzaW9ucy4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvUHJvamVjdFVzZXJSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb1Byb2plY3RVc2VyUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBTYWdlTWFrZXIgU3R1ZGlvIHVzZXMgdGhpcyBwb2xpY3kgd2hlbiBydW5uaW5nIHF1ZXJ5IGV4ZWN1dGlvbnMgb24gZmVkZXJhdGVkIGNvbm5lY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9RdWVyeUV4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvUXVlcnlFeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgaW5kaXZpZHVhbCBzZXR1cCBwcml2aWxlZ2VzIGZvciBBbWF6b24gU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiBBbGxvd3MgbGF1bmNoaW5nIG9mIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpbyBQb3J0YWwuICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb1VzZXJJQU1Db25zb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb1VzZXJJQU1Db25zb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRXhlY3V0aW9uIHBvbGljeSBmb3IgdXNpbmcgSUFNIHJvbGVzIHdpdGggU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvLiBBbGxvd3MgdXNlcnMgdG8gYWNjZXNzIHJlc291cmNlcyBpbiB0aGUgbG9jYWwgYWNjb3VudCAoZXhjbHVkaW5nIGFjY2VzcyB0byBkYXRhIHJlc291cmNlcykgZm9yIElBTS1iYXNlZCB1c2FnZSBvZiBTYWdlTWFrZXIgVW5pZmllZCBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb1VzZXJJQU1EZWZhdWx0RXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb1VzZXJJQU1EZWZhdWx0RXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRXhlY3V0aW9uIHBvbGljeSBmb3IgdXNpbmcgSUFNIHJvbGVzIHdpdGggU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvLiBBbGxvd3MgdXNlcnMgdG8gYWNjZXNzIHJlc291cmNlcyBpbiB5b3VyIGFjY291bnQgKGluY2x1ZGluZyBicm9hZCBhY2Nlc3MgdG8gYWxsIEFQSXMgaW4gZGF0YSBzZXJ2aWNlcyBsaWtlIFMzLCBHbHVlLCBDbG91ZFdhdGNoIExvZ3MsIGFuZCBvdGhlcnMpIGZvciBJQU0tYmFzZWQgdXNhZ2Ugb2YgU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9Vc2VySUFNUGVybWlzc2l2ZUV4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9Vc2VySUFNUGVybWlzc2l2ZUV4ZWN1dGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQvd3JpdGUgYWNjZXNzIHRvIEFXUyBTZWNyZXRzIE1hbmFnZXIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiBOb3RlOiB0aGlzIGV4bHVkZXMgSUFNIGFjdGlvbnMsIHNvIGNvbWJpbmUgd2l0aCBJQU1GdWxsQWNjZXNzIGlmIHJvdGF0aW9uIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuICovXG4gICAgcHVibGljIFNlY3JldHNNYW5hZ2VyUmVhZFdyaXRlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNlY3JldHNNYW5hZ2VyUmVhZFdyaXRlKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHNlY3VyaXR5IGF1ZGl0IHRlbXBsYXRlIGdyYW50cyBhY2Nlc3MgdG8gcmVhZCBzZWN1cml0eSBjb25maWd1cmF0aW9uIG1ldGFkYXRhLiBJdCBpcyB1c2VmdWwgZm9yIHNvZnR3YXJlIHRoYXQgYXVkaXRzIHRoZSBjb25maWd1cmF0aW9uIG9mIGFuIEFXUyBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBTZWN1cml0eUF1ZGl0KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNlY3VyaXR5QXVkaXQpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gbWFuYWdlIHJlc291cmNlcyBjcmVhdGVkIGJ5IFNlY3VyaXR5IExha2UuICovXG4gICAgcHVibGljIFNlY3VyaXR5TGFrZVJlc291cmNlTWFuYWdlbWVudFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNlY3VyaXR5TGFrZVJlc291cmNlTWFuYWdlbWVudFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIG9wZXJhdGUgdGhlIEFtYXpvbiBTZWN1cml0eSBMYWtlIHNlcnZpY2Ugb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgU2VjdXJpdHlMYWtlU2VydmljZUxpbmtlZFJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2VjdXJpdHlMYWtlU2VydmljZUxpbmtlZFJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9ucyB0byBhbGxvdyB0aGUgQVdTIFNlcnZlciBNaWdyYXRpb24gQ29ubmVjdG9yIHRvIG1pZ3JhdGUgVk1zIHRvIEVDMi4gQWxsb3dzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgQVdTIFNlcnZlciBNaWdyYXRpb24gU2VydmljZSwgcmVhZC93cml0ZSBhY2Nlc3MgdG8gUzMgYnVja2V0cyBzdGFydGluZyB3aXRoICdzbXMtYi0nIGFuZCAnaW1wb3J0LXRvLWVjMi0nIGFzIHdlbGwgYXMgdGhlIGJ1Y2tldHMgdXNlZCBmb3IgQVdTIFNlcnZlciBNaWdyYXRpb24gQ29ubmVjdG9yIHVwZ3JhZGUsIEFXUyBTZXJ2ZXIgTWlncmF0aW9uIENvbm5lY3RvciByZWdpc3RyYXRpb24gd2l0aCBBV1MsIGFuZCBtZXRyaWNzIHVwbG9hZCB0byBBV1MuICovXG4gICAgcHVibGljIFNlcnZlck1pZ3JhdGlvbkNvbm5lY3RvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TZXJ2ZXJNaWdyYXRpb25Db25uZWN0b3IpO1xuICAgIH1cblxuICAgIC8qKiBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgYWxsIGZlYXR1cmVzIG9mIHRoZSBTZXJ2ZXIgTWlncmF0aW9uIFNlcnZpY2UgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBTZXJ2ZXJNaWdyYXRpb25TZXJ2aWNlQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2VydmVyTWlncmF0aW9uU2VydmljZUNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUGVybWlzc2lvbnMgdG8gYWxsb3cgdGhlIEFXUyBTZXJ2ZXIgTWlncmF0aW9uIFNlcnZpY2UgdG8gY3JlYXRlIGFuZCB1cGRhdGUgcmVsZXZhbnQgQVdTIHJlc291cmNlcyBpbnRvIHRoZSBjdXN0b21lcidzIEFXUyBhY2NvdW50IGZvciBsYXVuY2hpbmcgbWlncmF0ZWQgc2VydmVycyBhbmQgYXBwbGljYXRpb25zLiAqL1xuICAgIHB1YmxpYyBTZXJ2ZXJNaWdyYXRpb25TZXJ2aWNlTGF1bmNoUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TZXJ2ZXJNaWdyYXRpb25TZXJ2aWNlTGF1bmNoUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb25zIHRvIGFsbG93IHRoZSBBV1MgU01TIHRvIHJ1biB1c2VkIGRhdGEgdmFsaWRhdGlvbiBzY3JpcHQgYW5kIHNlbmQgc2NyaXB0IHN1Y2Nlc3MvZmFpbHVyZSBiYWNrIHRvIFNNUyAqL1xuICAgIHB1YmxpYyBTZXJ2ZXJNaWdyYXRpb25TZXJ2aWNlUm9sZUZvckluc3RhbmNlVmFsaWRhdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TZXJ2ZXJNaWdyYXRpb25TZXJ2aWNlUm9sZUZvckluc3RhbmNlVmFsaWRhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIFNlcnZpY2UgUXVvdGFzICovXG4gICAgcHVibGljIFNlcnZpY2VRdW90YXNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNlcnZpY2VRdW90YXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBTZXJ2aWNlIFF1b3RhcyAqL1xuICAgIHB1YmxpYyBTZXJ2aWNlUXVvdGFzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2VydmljZVF1b3Rhc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFNlcnZpY2UgUXVvdGFzIHRvIGNyZWF0ZSBzdXBwb3J0IGNhc2VzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIFNlcnZpY2VRdW90YXNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TZXJ2aWNlUXVvdGFzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgU2ltcGxlIFdvcmtmbG93IGNvbmZpZ3VyYXRpb24gc2VydmljZS4gKi9cbiAgICBwdWJsaWMgU2ltcGxlV29ya2Zsb3dGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNpbXBsZVdvcmtmbG93RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBTTVNWb2ljZSB0byBwdWJsaXNoIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaCBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBTTVNWb2ljZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNNU1ZvaWNlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3Mgc3BsaXQgY29zdCBhbGxvY2F0aW9uIGRhdGEgdG8gcmV0cmlldmUgQVdTIE9yZ2FuaXphdGlvbnMgaW5mb3JtYXRpb24sIGlmIGFwcGxpY2FibGUsIGFuZCBjb2xsZWN0IHRlbGVtZXRyeSBkYXRhIGZvciB0aGUgc3BsaXQgY29zdCBhbGxvY2F0aW9uIGRhdGEgc2VydmljZXMgdGhhdCB0aGUgY3VzdG9tZXIgaGFzIG9wdGVkIGluIHRvLiAqL1xuICAgIHB1YmxpYyBTcGxpdENvc3RBbGxvY2F0aW9uRGF0YVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNwbGl0Q29zdEFsbG9jYXRpb25EYXRhU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgcmVxdWlyZWQgdG8gdW5sb2NrIGEgU1FTIHF1ZXVlIHBvbGljeSB1c2luZyB0aGUgU2VjdXJpdHkgVG9rZW4gU2VydmljZSAoU1RTKSBBc3N1bWVSb290IEFQSS4gVXNlIHRoaXMgbWFuYWdlZCBwb2xpY3kgb25seSB3aXRoIHRoZSBTVFMgQXNzdW1lUm9vdCBhY3Rpb24uICovXG4gICAgcHVibGljIFNRU1VubG9ja1F1ZXVlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNRU1VubG9ja1F1ZXVlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gY2hlY2sgUXVpY2sgU2V0dXAgY29uZmlndXJhdGlvbiBoZWFsdGgsIGVuc3VyZSBjb25zaXN0ZW50IHVzZSBvZiBwYXJhbWV0ZXJzIGFuZCBwcm92aXNpb25lZCByZXNvdXJjZXMsIGFuZCByZW1lZGlhdGUgcmVzb3VyY2VzIHdoZW4gZHJpZnQgaXMgZGV0ZWN0ZWQuICovXG4gICAgcHVibGljIFNTTVF1aWNrU2V0dXBSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNTTVF1aWNrU2V0dXBSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIHRyb3VibGVzaG9vdCBhbmQgcmVzb2x2ZSBpc3N1ZXMgaW4gYW4gQVdTIGFjY291bnQuIFRoaXMgcG9saWN5IGFsc28gZW5hYmxlcyB0aGUgdXNlciB0byBjb250YWN0IEFXUyBzdXBwb3J0IHRvIGNyZWF0ZSBhbmQgbWFuYWdlIGNhc2VzLiAqL1xuICAgIHB1YmxpYyBTdXBwb3J0VXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TdXBwb3J0VXNlcik7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyBwZXJtaXNzaW9ucyBuZWNlc3NhcnkgZm9yIHJlc291cmNlcyByZXF1aXJlZCBmb3IgYXBwbGljYXRpb24gYW5kIGRldmVsb3BtZW50IG9wZXJhdGlvbnMuICovXG4gICAgcHVibGljIFN5c3RlbUFkbWluaXN0cmF0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU3lzdGVtQWRtaW5pc3RyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBUcmFuc2xhdGUuICovXG4gICAgcHVibGljIFRyYW5zbGF0ZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuVHJhbnNsYXRlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIFRyYW5zbGF0ZS4gKi9cbiAgICBwdWJsaWMgVHJhbnNsYXRlUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuVHJhbnNsYXRlUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gdmlldyByZXNvdXJjZXMgYW5kIGJhc2ljIG1ldGFkYXRhIGFjcm9zcyBhbGwgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBWaWV3T25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5WaWV3T25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciB0aGUgVk0gSW1wb3J0L0V4cG9ydCBzZXJ2aWNlIHJvbGUsIGZvciBjdXN0b21lcnMgdXNpbmcgdGhlIEFXUyBDb25uZWN0b3IuIFRoZSBWTSBJbXBvcnQvRXhwb3J0IHNlcnZpY2UgYXNzdW1lcyBhIHJvbGUgd2l0aCB0aGlzIHBvbGljeSB0byBmdWxmaWxsIHZpcnR1YWwgbWFjaGluZSBtaWdyYXRpb24gcmVxdWVzdHMgZnJvbSB0aGUgQVdTIENvbm5lY3RvciB2aXJ0dWFsIGFwcGxpYW5jZS4gKE5vdGUgdGhhdCB0aGUgQVdTIENvbm5lY3RvciB1c2VzIHRoZSBcIkFXU0Nvbm5lY3RvclwiIG1hbmFnZWQgcG9saWN5IHRvIGlzc3VlIHJlcXVlc3RzIG9uIHRoZSBjdXN0b21lcidzIGJlaGFsZiB0byB0aGUgVk0gSW1wb3J0L0V4cG9ydCBzZXJ2aWNlLikgUHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIEFNSXMgYW5kIEVCUyBzbmFwc2hvdHMsIG1vZGlmeSBFQlMgc25hcHNob3QgYXR0cmlidXRlcywgbWFrZSBcIkRlc2NyaWJlKlwiIGNhbGxzIG9uIEVDMiBvYmplY3RzLCBhbmQgcmVhZCBmcm9tIFMzIGJ1Y2tldHMgc3RhcnRpbmcgd2l0aCAnaW1wb3J0LXRvLWVjMi0nLiAqL1xuICAgIHB1YmxpYyBWTUltcG9ydEV4cG9ydFJvbGVGb3JBV1NDb25uZWN0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuVk1JbXBvcnRFeHBvcnRSb2xlRm9yQVdTQ29ubmVjdG9yKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFZQQyBMYXR0aWNlIGFuZCBhY2Nlc3MgdG8gZGVwZW5kZW5jeSBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgVlBDTGF0dGljZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuVlBDTGF0dGljZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBWUEMgTGF0dGljZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUsIGFuZCBsaW1pdGVkIGFjY2VzcyB0byBkZXBlbmRlbmN5IHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBWUENMYXR0aWNlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuVlBDTGF0dGljZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIGludm9raW5nIEFtYXpvbiBWUEMgTGF0dGljZSBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgVlBDTGF0dGljZVNlcnZpY2VzSW52b2tlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlZQQ0xhdHRpY2VTZXJ2aWNlc0ludm9rZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0aW5nIFNMUiB0byB3cml0ZSBjdXN0b21lcidzIGxvZ3MgdG8gYSBmaXJlaG9zZSBzdHJlYW0gKi9cbiAgICBwdWJsaWMgV0FGTG9nZ2luZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLldBRkxvZ2dpbmdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0aW5nIFNMUiB0byB3cml0ZSBjdXN0b21lcidzIGxvZ3MgdG8gYSBmaXJlaG9zZSBzdHJlYW0gKi9cbiAgICBwdWJsaWMgV0FGUmVnaW9uYWxMb2dnaW5nU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuV0FGUmVnaW9uYWxMb2dnaW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBjcmVhdGVzIGEgc2VydmljZS1saW5rZWQgcm9sZSB0aGF0IGFsbG93cyBBV1MgV0FGIHRvIHdyaXRlIGxvZ3MgdG8gQW1hem9uIEtpbmVzaXMgRGF0YSBGaXJlaG9zZS4gKi9cbiAgICBwdWJsaWMgV0FGVjJMb2dnaW5nU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuV0FGVjJMb2dnaW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgV2VsbC1BcmNoaXRlY3RlZCBUb29sIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBXZWxsQXJjaGl0ZWN0ZWRDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5XZWxsQXJjaGl0ZWN0ZWRDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIFdlbGwtQXJjaGl0ZWN0ZWQgVG9vbCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgKi9cbiAgICBwdWJsaWMgV2VsbEFyY2hpdGVjdGVkQ29uc29sZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLldlbGxBcmNoaXRlY3RlZENvbnNvbGVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBbWF6b24gV29ya0xpbmsgKi9cbiAgICBwdWJsaWMgV29ya0xpbmtTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Xb3JrTGlua1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG59XG4iXX0=
5608
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWlhbS1mbG95ZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1pYW0tZmxveWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXNDO0FBQ3RDLDJDQUF5RTtBQUV6RTs7Ozs7O0dBTUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLDRCQUFzQjtJQUN4RCx5REFBeUQ7SUFDbEQsK0JBQStCO1FBQ2xDLE9BQU8scUJBQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsNEJBQXNCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBRUQsMERBQTBEO0lBQ25ELG1CQUFtQjtRQUN0QixPQUFPLHFCQUFPLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDRCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELHFJQUFxSTtJQUM5SCwwQkFBMEI7UUFDN0IsT0FBTyxxQkFBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBc0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCwyTEFBMkw7SUFDcEwsc0NBQXNDO1FBQ3pDLE9BQU8scUJBQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsNEJBQXNCLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRUQsNEhBQTRIO0lBQ3JILGtDQUFrQztRQUNyQyxPQUFPLHFCQUFPLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDRCQUFzQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVELG1KQUFtSjtJQUM1SSxvQkFBb0I7UUFDdkIsT0FBTyxxQkFBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCw0S0FBNEs7SUFDckssdUJBQXVCO1FBQzFCLE9BQU8scUJBQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdC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QUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBc0IsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRCx1RkFBdUY7SUFDaEYsZ0NBQWdDO1FBQ25DLE9BQU8scUJBQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsNEJBQXNCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsNEZBQTRGO0lBQ3JGLG9DQUFvQztRQUN2QyxPQUFPLHFCQUFPLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDRCQUFzQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDdkgsQ0FBQztJQUVELHNGQUFzRjtJQUMvRSx5QkFBeUI7UUFDNUIsT0FBTyxxQkFBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyw0QkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FDSjtBQTkwTkQsNENBODBOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19pYW0gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBd3NNYW5hZ2VkUG9saWN5IGFzIEF3c01hbmFnZWRQb2xpY3lTdGF0aWMgfSBmcm9tICcuL2lhbS1mbG95ZCc7XG5cbi8qKlxuICogUHJvdmlkZXMgYWxsIEFXUyBtYW5hZ2VkIHBvbGljaWVzLlxuICpcbiAqIFRvIGdldCB0aGUgbmFtZSwgYWNjZXNzIHRoZSBzdGF0aWMgcHJvcGVydGllcyBvZiB0aGlzIGNsYXNzLCBlLmcuIGBBd3NNYW5hZ2VkUG9saWN5LlJlYWRPbmx5QWNjZXNzYC5cbiAqXG4gKiAgVG8gZ2V0IGFuIGBhd3NfaWFtLklNYW5hZ2VkUG9saWN5YCBvYmplY3QsIGNhbGwgdGhlIG1ldGhvZHMgb24gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLCBlLmcuIGBuZXcgQXdzTWFuYWdlZFBvbGljeSgpLlJlYWRPbmx5QWNjZXNzKClgLlxuICovXG5leHBvcnQgY2xhc3MgQXdzTWFuYWdlZFBvbGljeSBleHRlbmRzIEF3c01hbmFnZWRQb2xpY3lTdGF0aWMge1xuICAgIC8qKiBBbGxvdyBBY2Nlc3MgQW5hbHl6ZXIgdG8gYW5hbHl6ZSByZXNvdXJjZSBtZXRhZGF0YSAqL1xuICAgIHB1YmxpYyBBY2Nlc3NBbmFseXplclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFjY2Vzc0FuYWx5emVyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1Mgc2VydmljZXMgYW5kIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQWRtaW5pc3RyYXRvckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BZG1pbmlzdHJhdG9yQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGFjY291bnQgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgd2hpbGUgZXhwbGljaXRseSBhbGxvd2luZyBkaXJlY3QgYWNjZXNzIHRvIHJlc291cmNlcyBuZWVkZWQgYnkgQW1wbGlmeSBhcHBsaWNhdGlvbnMuICovXG4gICAgcHVibGljIEFkbWluaXN0cmF0b3JBY2Nlc3NBbXBsaWZ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFkbWluaXN0cmF0b3JBY2Nlc3NBbXBsaWZ5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGFjY291bnQgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMuIEV4cGxpY2l0bHkgYWxsb3dzIGRldmVsb3BlcnMgYW5kIGFkbWluaXN0cmF0b3JzIHRvIGdhaW4gZGlyZWN0IGFjY2VzcyB0byByZXNvdXJjZXMgdGhleSBuZWVkIHRvIG1hbmFnZSBBV1MgRWxhc3RpYyBCZWFuc3RhbGsgYXBwbGljYXRpb25zICovXG4gICAgcHVibGljIEFkbWluaXN0cmF0b3JBY2Nlc3NBV1NFbGFzdGljQmVhbnN0YWxrKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFkbWluaXN0cmF0b3JBY2Nlc3NBV1NFbGFzdGljQmVhbnN0YWxrKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEFtYXpvbiBBSSBPcGVyYXRpb25zIEFzc2lzdGFudCB0byBnZW5lcmF0ZSBpbmNpZGVudCByZXBvcnQgb2YgdGhlIGludmVzdGlnYXRpb24uICovXG4gICAgcHVibGljIEFJT3BzQXNzaXN0YW50SW5jaWRlbnRSZXBvcnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQUlPcHNBc3Npc3RhbnRJbmNpZGVudFJlcG9ydFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIFJlYWRPbmx5IHBlcm1pc3Npb25zIHJlcXVpcmVkIGJ5IHRoZSBBbWF6b24gQUkgT3BlcmF0aW9ucyBBc3Npc3RhbnQgdG8gZG8gYW5hbHlzaXMgb24gY3VzdG9tZXIgQVdTIHJlc291cmNlcyBkdXJpbmcgaW52ZXN0aWdhdGlvbnMuICovXG4gICAgcHVibGljIEFJT3BzQXNzaXN0YW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFJT3BzQXNzaXN0YW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBBSSBPcGVyYXRpb25zIHNlcnZpY2UgYW5kIGl0cyByZXF1aXJlZCBwZXJtaXNzaW9ucyB2aWEgQVdTIGNvbnNvbGUuIEl0IGFsc28gaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gdXNlIGlkZW50aXR5LWF3YXJlIGNvbnNvbGUgc2Vzc2lvbnMuICovXG4gICAgcHVibGljIEFJT3BzQ29uc29sZUFkbWluUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFJT3BzQ29uc29sZUFkbWluUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGFjY2VzcyB0byB0aGUgQW1hem9uIEFJIE9wZXJhdGlvbnMgQVBJcyBmb3IgY3JlYXRpbmcsIHVwZGF0aW5nLCBhbmQgZGVsZXRpbmcgaW52ZXN0aWdhdGlvbnMsIGludmVzdGlnYXRpb24gZXZlbnRzLCBhbmQgaW52ZXN0aWdhdGlvbiByZXNvdXJjZXMuIEl0IGFsc28gaW5jbHVkZXMgUmVhZE9ubHkgYWNjZXNzIHRvIGFsbCBBSSBPcGVyYXRpb25zIEFQSXMgYW5kIHRvIHVzZSBpZGVudGl0eS1hd2FyZSBzZXNzaW9ucy4gKi9cbiAgICBwdWJsaWMgQUlPcHNPcGVyYXRvckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BSU9wc09wZXJhdG9yQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIFJlYWRPbmx5IHBlcm1pc3Npb25zIHRvIHRoZSBBbWF6b24gQUkgT3BlcmF0aW9ucyBzZXJ2aWNlIGFuZCBpdHMgcmVxdWlyZWQgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBSU9wc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFJT3BzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIGRldmljZSBzZXR1cCBhY2Nlc3MgdG8gQWxleGFGb3JCdXNpbmVzcyBzZXJ2aWNlcyAqL1xuICAgIHB1YmxpYyBBbGV4YUZvckJ1c2luZXNzRGV2aWNlU2V0dXAoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWxleGFGb3JCdXNpbmVzc0RldmljZVNldHVwKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFsZXhhRm9yQnVzaW5lc3MgcmVzb3VyY2VzIGFuZCBhY2Nlc3MgdG8gcmVsYXRlZCBBV1MgU2VydmljZXMgKi9cbiAgICBwdWJsaWMgQWxleGFGb3JCdXNpbmVzc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWxleGFGb3JCdXNpbmVzc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIGdhdGV3YXkgZXhlY3V0aW9uIGFjY2VzcyB0byBBbGV4YUZvckJ1c2luZXNzIHNlcnZpY2VzICovXG4gICAgcHVibGljIEFsZXhhRm9yQnVzaW5lc3NHYXRld2F5RXhlY3V0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFsZXhhRm9yQnVzaW5lc3NHYXRld2F5RXhlY3V0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBhY2Nlc3MgdG8gTGlmZXNpemUgQVZTIGRldmljZXMgKi9cbiAgICBwdWJsaWMgQWxleGFGb3JCdXNpbmVzc0xpZmVzaXplRGVsZWdhdGVkQWNjZXNzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFsZXhhRm9yQnVzaW5lc3NMaWZlc2l6ZURlbGVnYXRlZEFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGVuYWJsZXMgQWxleGEgZm9yIEJ1c2luZXNzIHRvIHBlcmZvcm0gYXV0b21hdGVkIHRhc2tzIHNjaGVkdWxlZCBieSB5b3VyIG5ldHdvcmsgcHJvZmlsZXMuICovXG4gICAgcHVibGljIEFsZXhhRm9yQnVzaW5lc3NOZXR3b3JrUHJvZmlsZVNlcnZpY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWxleGFGb3JCdXNpbmVzc05ldHdvcmtQcm9maWxlU2VydmljZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgYWNjZXNzIHRvIFBvbHkgQVZTIGRldmljZXMgKi9cbiAgICBwdWJsaWMgQWxleGFGb3JCdXNpbmVzc1BvbHlEZWxlZ2F0ZWRBY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWxleGFGb3JCdXNpbmVzc1BvbHlEZWxlZ2F0ZWRBY2Nlc3NQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHJlYWQgb25seSBhY2Nlc3MgdG8gQWxleGFGb3JCdXNpbmVzcyBzZXJ2aWNlcyAqL1xuICAgIHB1YmxpYyBBbGV4YUZvckJ1c2luZXNzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQWxleGFGb3JCdXNpbmVzc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gY3JlYXRlL2VkaXQvZGVsZXRlIEFQSXMgaW4gQW1hem9uIEFQSSBHYXRld2F5IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQVBJR2F0ZXdheUFkbWluaXN0cmF0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQVBJR2F0ZXdheUFkbWluaXN0cmF0b3IpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBpbnZva2UgQVBJcyBpbiBBbWF6b24gQVBJIEdhdGV3YXkuICovXG4gICAgcHVibGljIEFtYXpvbkFQSUdhdGV3YXlJbnZva2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkFQSUdhdGV3YXlJbnZva2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFQSSBHYXRld2F5IHRvIHB1c2ggbG9ncyB0byB1c2VyJ3MgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQW1hem9uQVBJR2F0ZXdheVB1c2hUb0Nsb3VkV2F0Y2hMb2dzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkFQSUdhdGV3YXlQdXNoVG9DbG91ZFdhdGNoTG9ncyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBBcHBGbG93IGFuZCBhY2Nlc3MgdG8gQVdTIHNlcnZpY2VzIHN1cHBvcnRlZCBhcyBmbG93IHNvdXJjZSBvciBkZXN0aW5hdGlvbiAoUzMgYW5kIFJlZHNoaWZ0KS4gQWxzbyBwcm92aWRlcyBhY2Nlc3MgdG8gS01TIGZvciBlbmNyeXB0aW9uICovXG4gICAgcHVibGljIEFtYXpvbkFwcEZsb3dGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkFwcEZsb3dGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gQXBwZmxvdyBmbG93cyAqL1xuICAgIHB1YmxpYyBBbWF6b25BcHBGbG93UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXBwRmxvd1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEFwcFN0cmVhbSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkFwcFN0cmVhbUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXBwU3RyZWFtRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBBcHBTdHJlYW0gMi4wIGFjY2VzcyB0byBBV1MgQ2VydGlmaWNhdGUgTWFuYWdlciBQcml2YXRlIENBIGluIGN1c3RvbWVyIGFjY291bnRzIGZvciBjZXJ0aWZpY2F0ZS1iYXNlZCBhdXRoZW50aWNhdGlvbiAqL1xuICAgIHB1YmxpYyBBbWF6b25BcHBTdHJlYW1QQ0FBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXBwU3RyZWFtUENBQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gQXBwU3RyZWFtIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQXBwU3RyZWFtUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXBwU3RyZWFtUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgQW1hem9uIEFwcFN0cmVhbSBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkFwcFN0cmVhbVNlcnZpY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXBwU3RyZWFtU2VydmljZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEF0aGVuYSBhbmQgc2NvcGVkIGFjY2VzcyB0byB0aGUgZGVwZW5kZW5jaWVzIG5lZWRlZCB0byBlbmFibGUgcXVlcnlpbmcsIHdyaXRpbmcgcmVzdWx0cywgYW5kIGRhdGEgbWFuYWdlbWVudC4gKi9cbiAgICBwdWJsaWMgQW1hem9uQXRoZW5hRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BdGhlbmFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHBlcmZvcm0gYWxsIG9wZXJhdGlvbnMgQW1hem9uIEF1Z21lbnRlZCBBSSByZXNvdXJjZXMsIGluY2x1ZGluZyBGbG93RGVmaW5pdGlvbnMsIEh1bWFuVGFza1VpcyBhbmQgSHVtYW5Mb29wcy4gRG9lcyBub3QgYWxsb3cgYWNjZXNzIGZvciBjcmVhdGluZyBGbG93RGVmaW5pdGlvbnMgYWdhaW5zdCB0aGUgcHVibGljLWNyb3dkIFdvcmt0ZWFtLiAqL1xuICAgIHB1YmxpYyBBbWF6b25BdWdtZW50ZWRBSUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQXVnbWVudGVkQUlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHBlcmZvcm0gYWxsIG9wZXJhdGlvbnMgb24gSHVtYW5Mb29wcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uQXVnbWVudGVkQUlIdW1hbkxvb3BGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkF1Z21lbnRlZEFJSHVtYW5Mb29wRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBwZXJmb3JtIGFsbCBvcGVyYXRpb25zIEFtYXpvbiBBdWdtZW50ZWQgQUkgcmVzb3VyY2VzLCBpbmNsdWRpbmcgRmxvd0RlZmluaXRpb25zLCBIdW1hblRhc2tVaXMgYW5kIEh1bWFuTG9vcHMuIEFsc28gcHJvdmlkZXMgYWNjZXNzIHRvIHRob3NlIG9wZXJhdGlvbnMgb2Ygc2VydmljZXMgdGhhdCBhcmUgaW50ZWdyYXRlZCB3aXRoIEFtYXpvbiBBdWdtZW50ZWQgQUkuICovXG4gICAgcHVibGljIEFtYXpvbkF1Z21lbnRlZEFJSW50ZWdyYXRlZEFQSUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BdWdtZW50ZWRBSUludGVncmF0ZWRBUElBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBjb25zb2xlIGZ1bGwgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIEF1cm9yYSBEU1FMICovXG4gICAgcHVibGljIEFtYXpvbkF1cm9yYURTUUxDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BdXJvcmFEU1FMQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBBdXJvcmEgRFNRTCAqL1xuICAgIHB1YmxpYyBBbWF6b25BdXJvcmFEU1FMRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25BdXJvcmFEU1FMRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQXVyb3JhIERTUUwgKi9cbiAgICBwdWJsaWMgQW1hem9uQXVyb3JhRFNRTFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkF1cm9yYURTUUxSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEJlZHJvY2sgTW9kZWwgaW5mZXJlbmNlIHBlcm1pc3Npb24gdG8gQmVkcm9jayBhZ2VudCBjb3JlIG1lbW9yeSAqL1xuICAgIHB1YmxpYyBBbWF6b25CZWRyb2NrQWdlbnRDb3JlTWVtb3J5QmVkcm9ja01vZGVsSW5mZXJlbmNlRXhlY3V0aW9uUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25CZWRyb2NrQWdlbnRDb3JlTWVtb3J5QmVkcm9ja01vZGVsSW5mZXJlbmNlRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBCZWRyb2NrIGFzIHdlbGwgYXMgbGltaXRlZCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyB0aGF0IGFyZSByZXF1aXJlZCBieSBpdCAqL1xuICAgIHB1YmxpYyBBbWF6b25CZWRyb2NrRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25CZWRyb2NrRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGxpbWl0ZWQgYWNjZXNzIHRvIEFtYXpvbiBCZWRyb2NrIGFzIHdlbGwgYXMgdG8gcmVsYXRlZCBzZXJ2aWNlcyB0aGF0IGFyZSByZXF1aXJlZCBieSBpdCAqL1xuICAgIHB1YmxpYyBBbWF6b25CZWRyb2NrTGltaXRlZEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25CZWRyb2NrTGltaXRlZEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGxpbWl0ZWQgYWNjZXNzIHRvIEFtYXpvbiBCZWRyb2NrIE1hcmtldHBsYWNlIGFzIHdlbGwgYXMgdG8gcmVsYXRlZCBzZXJ2aWNlcyB0aGF0IGFyZSByZXF1aXJlZCBieSBpdCAqL1xuICAgIHB1YmxpYyBBbWF6b25CZWRyb2NrTWFya2V0cGxhY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQmVkcm9ja01hcmtldHBsYWNlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gQmVkcm9jayAqL1xuICAgIHB1YmxpYyBBbWF6b25CZWRyb2NrUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQmVkcm9ja1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogRGVmaW5lcyB0aGUgbWF4aW11bSBwZXJtaXNzaW9ucyBvZiBJQU0gcm9sZXMgdGhhdCBBbWF6b24gQmVkcm9jayBTdHVkaW8gY3JlYXRlcyBmb3Igb3BlcmF0aW5nIEFtYXpvbiBCZWRyb2NrIFN0dWRpbyByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbkJlZHJvY2tTdHVkaW9QZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkJlZHJvY2tTdHVkaW9QZXJtaXNzaW9uc0JvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEJyYWtldCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gQWxzbyBwcm92aWRlcyBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyAoZS5nLiwgUzMsIGxvZ3MpLiAqL1xuICAgIHB1YmxpYyBBbWF6b25CcmFrZXRGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkJyYWtldEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgcmVzb3VyY2VzIG5lY2Vzc2FyeSBmb3IgZXhlY3V0aW5nIGFuIEFtYXpvbiBCcmFrZXQgSm9iIGluY2x1ZGluZyBTMywgQ2xvdWR3YXRjaCwgSUFNIGFuZCBCcmFrZXQgKi9cbiAgICBwdWJsaWMgQW1hem9uQnJha2V0Sm9ic0V4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25CcmFrZXRKb2JzRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBCcmFrZXQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBbWF6b25CcmFrZXRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25CcmFrZXRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDaGltZSBBZG1pbiBDb25zb2xlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ2hpbWVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNoaW1lRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIENoaW1lIEFkbWluIENvbnNvbGUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25DaGltZVJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNoaW1lUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIENoaW1lIFNESyBvcGVyYXRpb25zICovXG4gICAgcHVibGljIEFtYXpvbkNoaW1lU0RLKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNoaW1lU0RLKTtcbiAgICB9XG5cbiAgICAvKiogTWFuYWdlZCBQb2xpY3kgRm9yIEFtYXpvbiBDaGltZSBTREsgTWVkaWFQaXBlbGluZXMgU2VydmljZSBMaW5rZWQgUm9sZSAqL1xuICAgIHB1YmxpYyBBbWF6b25DaGltZVNES01lZGlhUGlwZWxpbmVzU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2hpbWVTREtNZWRpYVBpcGVsaW5lc1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBDaGltZSBTREsgTWVzc2FnaW5nIHRvIGFjY2VzcyBBV1MgcmVzb3VyY2VzIGFuZCBlbmFibGUgbWVzc2FnaW5nIGZ1bmN0aW9uYWxpdHkgKi9cbiAgICBwdWJsaWMgQW1hem9uQ2hpbWVTREtNZXNzYWdpbmdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DaGltZVNES01lc3NhZ2luZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIENoaW1lICovXG4gICAgcHVibGljIEFtYXpvbkNoaW1lU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2hpbWVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQ2hpbWUgdG8gYWNjZXNzIEFtYXpvbiBUcmFuc2NyaWJlIGFuZCBBbWF6b24gVHJhbnNjcmliZSBNZWRpY2FsIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFtYXpvbkNoaW1lVHJhbnNjcmlwdGlvblNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNoaW1lVHJhbnNjcmlwdGlvblNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdXNlciBtYW5hZ2VtZW50IGFjY2VzcyB0byBBbWF6b24gQ2hpbWUgQWRtaW4gQ29uc29sZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkNoaW1lVXNlck1hbmFnZW1lbnQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2hpbWVVc2VyTWFuYWdlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIE1hbmFnZWQgcG9saWN5IGZvciBTZXJ2aWNlIExpbmtlZCBSb2xlIGZvciBBbWF6b24gQ2hpbWUgVm9pY2VDb25uZWN0b3IgKi9cbiAgICBwdWJsaWMgQW1hem9uQ2hpbWVWb2ljZUNvbm5lY3RvclNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNoaW1lVm9pY2VDb25uZWN0b3JTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDbG91ZCBEaXJlY3RvcnkgU2VydmljZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ2xvdWREaXJlY3RvcnlGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNsb3VkRGlyZWN0b3J5RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIENsb3VkIERpcmVjdG9yeSBTZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25DbG91ZERpcmVjdG9yeVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNsb3VkRGlyZWN0b3J5UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIEV2aWRlbnRseS4gQWxzbyBwcm92aWRlcyBhY2Nlc3MgdG8gcmVsYXRlZCBBbWF6b24gUzMsIEFtYXpvbiBTTlMsIEFtYXpvbiBDbG91ZFdhdGNoLCBhbmQgb3RoZXIgcmVsYXRlZCBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ2xvdWRXYXRjaEV2aWRlbnRseUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2xvdWRXYXRjaEV2aWRlbnRseUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIEV2aWRlbnRseSAqL1xuICAgIHB1YmxpYyBBbWF6b25DbG91ZFdhdGNoRXZpZGVudGx5UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2xvdWRXYXRjaEV2aWRlbnRseVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIENsb3VkV2F0Y2ggRXZpZGVudGx5IFNlcnZpY2UgdG8gbWFuYWdlIGFzc29jaWF0ZWQgQVdTIFJlc291cmNlcyBvbiBiZWhhbGYgb2YgdGhlIGN1c3RvbWVyICovXG4gICAgcHVibGljIEFtYXpvbkNsb3VkV2F0Y2hFdmlkZW50bHlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DbG91ZFdhdGNoRXZpZGVudGx5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgcGVybWlzc2lvbnMgZm9yIHRoZSBBbWF6b24gQ2xvdWRXYXRjaCBSVU0gc2VydmljZSAqL1xuICAgIHB1YmxpYyBBbWF6b25DbG91ZFdhdGNoUlVNRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DbG91ZFdhdGNoUlVNRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyByZWFkIG9ubHkgcGVybWlzc2lvbnMgZm9yIHRoZSBBbWF6b24gQ2xvdWRXYXRjaCBSVU0gc2VydmljZSAqL1xuICAgIHB1YmxpYyBBbWF6b25DbG91ZFdhdGNoUlVNUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ2xvdWRXYXRjaFJVTVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb24gdG8gQW1hem9uIENsb3VkV2F0Y2ggUlVNIFNlcnZpY2UgdG8gcHVibGlzaCBtb25pdG9yaW5nIGRhdGEgdG8gb3RoZXIgcmVsZXZhbnQgQVdTIHNlcnZpY2VzICovXG4gICAgcHVibGljIEFtYXpvbkNsb3VkV2F0Y2hSVU1TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25DbG91ZFdhdGNoUlVNU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gQ29kZUNhdGFseXN0ICovXG4gICAgcHVibGljIEFtYXpvbkNvZGVDYXRhbHlzdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29kZUNhdGFseXN0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIENvZGVDYXRhbHlzdCAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlQ2F0YWx5c3RSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2RlQ2F0YWx5c3RSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQ29kZUNhdGFseXN0IHRvIGNyZWF0ZSwgdXBkYXRlLCBhbmQgcmVzb2x2ZSBBV1MgU3VwcG9ydCBjYXNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29kZUNhdGFseXN0U3VwcG9ydEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2RlQ2F0YWx5c3RTdXBwb3J0QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHJlcXVpcmVkIGJ5IEFtYXpvbiBDb2RlR3VydSBQcm9maWxlciBhZ2VudC4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29kZUd1cnVQcm9maWxlckFnZW50QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZGVHdXJ1UHJvZmlsZXJBZ2VudEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDb2RlR3VydSBQcm9maWxlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29kZUd1cnVQcm9maWxlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29kZUd1cnVQcm9maWxlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBDb2RlR3VydSBQcm9maWxlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29kZUd1cnVQcm9maWxlclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZGVHdXJ1UHJvZmlsZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyB0byBBbWF6b24gQ29kZUd1cnUgUmV2aWV3ZXIgYW5kIHNjb3BlZCBhY2Nlc3MgdG8gcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlR3VydVJldmlld2VyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2RlR3VydVJldmlld2VyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIENvZGVHdXJ1IFJldmlld2VyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2RlR3VydVJldmlld2VyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29kZUd1cnVSZXZpZXdlclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQSBzZXJ2aWNlLWxpbmtlZCByb2xlIHJlcXVpcmVkIGZvciBBbWF6b24gQ29kZUd1cnUgUmV2aWV3ZXIgdG8gYWNjZXNzIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29kZUd1cnVSZXZpZXdlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZGVHdXJ1UmV2aWV3ZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDb2RlR3VydSBTZWN1cml0eS4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29kZUd1cnVTZWN1cml0eUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29kZUd1cnVTZWN1cml0eUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgcmVxdWlyZWQgZm9yIHdvcmtpbmcgd2l0aCBBbWF6b24gQ29kZUd1cnUgU2VjdXJpdHkgc2NhbnMuICovXG4gICAgcHVibGljIEFtYXpvbkNvZGVHdXJ1U2VjdXJpdHlTY2FuQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZGVHdXJ1U2VjdXJpdHlTY2FuQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFtYXpvbiBDb2duaXRvIEFQSXMgdG8gc3VwcG9ydCBkZXZlbG9wZXIgYXV0aGVudGljYXRlZCBpZGVudGl0aWVzIGZyb20geW91ciBhdXRoZW50aWNhdGlvbiBiYWNrZW5kLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2duaXRvRGV2ZWxvcGVyQXV0aGVudGljYXRlZElkZW50aXRpZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29nbml0b0RldmVsb3BlckF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBDb2duaXRvIFVzZXIgUG9vbHMgc2VydmljZSB0byB1c2UgeW91ciBTRVMgaWRlbnRpdGllcyBmb3IgZW1haWwgc2VuZGluZyAqL1xuICAgIHB1YmxpYyBBbWF6b25Db2duaXRvSWRwRW1haWxTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2duaXRvSWRwRW1haWxTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBbWF6b24gQ29nbml0byBVc2VyIFBvb2xzICovXG4gICAgcHVibGljIEFtYXpvbkNvZ25pdG9JZHBTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2duaXRvSWRwU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gZXhpc3RpbmcgQW1hem9uIENvZ25pdG8gcmVzb3VyY2VzLiBZb3Ugd2lsbCBuZWVkIEFXUyBhY2NvdW50IGFkbWluIHByaXZpbGVnZXMgdG8gY3JlYXRlIG5ldyBDb2duaXRvIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29nbml0b1Bvd2VyVXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2duaXRvUG93ZXJVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gQ29nbml0byByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbkNvZ25pdG9SZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db2duaXRvUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBkZWZpbmVzIHRoZSBzZXQgb2YgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdW5hdXRoZW50aWNhdGVkIGlkZW50aXRpZXMgZm9yIENvZ25pdG8gSWRlbnRpdHkgUG9vbHMuIFRoaXMgcG9saWN5IGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgc3RhbmQgYWxvbmUgcGVybWlzc2lvbiBwb2xpY3kuIEl0IGlzIHVzZWQgYXMgYSBndWFyZHJhaWwgYWdhaW5zdCBvdmVybHkgcGVybWlzc2l2ZSBwb2xpY2llcyBhdHRhY2hlZCBmb3Igcm9sZXMgaW4gYW4gaWRlbnRpdHkgcG9vbC4gRG8gbm90IGF0dGFjaCB0aGlzIHBvbGljeSB0byBhbnkgcm9sZXMsIGFzIENvZ25pdG8gSWRlbnRpdHkgU2VydmljZSB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSBpdCBhcyBhIHNjb3BlZCBkb3duIHBvbGljeSB3aGVuIGNyZWF0aW5nIGNyZWRlbnRpYWxzLiBUaGUgcHJpdmlsZWdlcyB0byB0ZW1wb3JhcmlseSBhY2Nlc3Mgb3RoZXIgQVdTIHJlc291cmNlcyB0aHJvdWdoIHRoZSBlbmhhbmNlZCBmbG93IHdpbGwgbm93IGJlIGRlZmluZWQgYnkgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgcm9sZSBhc3NvY2lhdGVkIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSB1bmF1dGhlbnRpY2F0ZWQgdXNlciBwcm92aWRlZCBieSBhIHNlcnZpY2UsIGFuZCB0aGUgcHJpdmlsZWdlcyBnaXZlbiBpbiB0aGlzIG1hbmFnZWQgcG9saWN5IHRoYXQgaXMgb3duZWQgYnkgQ29nbml0by4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29nbml0b1VuQXV0aGVkSWRlbnRpdGllc1Nlc3Npb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29nbml0b1VuQXV0aGVkSWRlbnRpdGllc1Nlc3Npb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBkZWZpbmVzIHRoZSBzZXQgb2YgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdW5hdXRoZW50aWNhdGVkIGlkZW50aXRpZXMgZm9yIENvZ25pdG8gSWRlbnRpdHkgUG9vbHMuIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBhdHRhY2hlZCB0byB5b3VyIHVuYXV0aCByb2xlLCBhcyBDb2duaXRvIElkZW50aXR5IFNlcnZpY2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGluY2x1ZGUgaXQgYXMgYSBzY29wZWQgZG93biBwb2xpY3kgd2hlbiBjcmVhdGluZyBjcmVkZW50aWFscy4gVGhlIHByaXZpbGVnZXMgdG8gdGVtcG9yYXJpbHkgYWNjZXNzIG90aGVyIEFXUyByZXNvdXJjZXMgdGhyb3VnaCB0aGUgZW5oYW5jZWQgZmxvdyB3aWxsIG5vdyBiZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgdW5hdXRoZW50aWNhdGVkIHVzZXIgcHJvdmlkZWQgYnkgYSBzZXJ2aWNlLCBhbmQgdGhlIHByaXZpbGVnZXMgZ2l2ZW4gaW4gdGhpcyBtYW5hZ2VkIHBvbGljeSB0aGF0IGlzIG93bmVkIGJ5IENvZ25pdG8uICovXG4gICAgcHVibGljIEFtYXpvbkNvZ25pdG9VbmF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvZ25pdG9VbmF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHB1cnBvc2Ugb2YgdGhpcyBwb2xpY3kgaXMgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG8gQVdTIENvbm5lY3QgdXNlcnMgcmVxdWlyZWQgdG8gdXNlIENvbm5lY3QgcmVzb3VyY2VzLiBUaGlzIHBvbGljeSBwcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgQ29ubmVjdCByZXNvdXJjZXMgdmlhIHRoZSBDb25uZWN0IENvbnNvbGUgYW5kIHB1YmxpYyBBUElzICovXG4gICAgcHVibGljIEFtYXpvbkNvbm5lY3RGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvbm5lY3RGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBbWF6b24gQ29ubmVjdCBDYW1wYWlnbnMgc2VydmljZSBsaW5rZWQgcm9sZSAqL1xuICAgIHB1YmxpYyBBbWF6b25Db25uZWN0Q2FtcGFpZ25zU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29ubmVjdENhbXBhaWduc1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb24gdG8gdmlldyB0aGUgQW1hem9uIENvbm5lY3QgaW5zdGFuY2VzIGluIHlvdXIgQVdTIGFjY291bnQuICovXG4gICAgcHVibGljIEFtYXpvbkNvbm5lY3RSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Db25uZWN0UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIENvbm5lY3QgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uQ29ubmVjdFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvbm5lY3RTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gQ29ubmVjdCB0byBzeW5jaHJvbml6ZSBBV1MgcmVzb3VyY2VzIGFjcm9zcyByZWdpb25zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Db25uZWN0U3luY2hyb25pemF0aW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uQ29ubmVjdFN5bmNocm9uaXphdGlvblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIENvbm5lY3QgVm9pY2UgSUQgKi9cbiAgICBwdWJsaWMgQW1hem9uQ29ubmVjdFZvaWNlSURGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkNvbm5lY3RWb2ljZUlERnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGNvbnN1bWUgQW1hem9uIEJlZHJvY2sgbW9kZWxzLCBpbmNsdWRpbmcgaW52b2tpbmcgQW1hem9uIEJlZHJvY2sgYXBwbGljYXRpb24gaW5mZXJlbmNlIHByb2ZpbGUgY3JlYXRlZCBmb3IgcGFydGljdWxhciBBbWF6b24gRGF0YVpvbmUgZG9tYWluLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZUJlZHJvY2tNb2RlbENvbnN1bXB0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRhdGFab25lQmVkcm9ja01vZGVsQ29uc3VtcHRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgQW1hem9uIEJlZHJvY2sgbW9kZWwgYWNjZXNzLCBpbmNsdWRpbmcgY3JlYXRpbmcsIHRhZ2dpbmcgYW5kIGRlbGV0aW5nIGFwcGxpY2F0aW9uIGluZmVyZW5jZSBwcm9maWxlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGF0YVpvbmVCZWRyb2NrTW9kZWxNYW5hZ2VtZW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRhdGFab25lQmVkcm9ja01vZGVsTWFuYWdlbWVudFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciB0aGUgQW1hem9uIERhdGFab25lJ3MgRG9tYWluRXhlY3V0aW9uUm9sZSBzZXJ2aWNlIHJvbGUuIFRoaXMgcm9sZSBpcyB1c2VkIGJ5IEFtYXpvbiBEYXRhWm9uZSB0byBjYXRhbG9nLCBkaXNjb3ZlciwgZ292ZXJuLCBzaGFyZSwgYW5kIGFuYWx5emUgZGF0YSBpbiB0aGUgQW1hem9uIERhdGFab25lIGRvbWFpbi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGF0YVpvbmVEb21haW5FeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRhdGFab25lRG9tYWluRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBEYXRhWm9uZSBjcmVhdGVzIElBTSByb2xlcyBmb3IgRW52aXJvbm1lbnRzIHRvIHBlcmZvcm0gZGF0YSBhbmFseXRpY3MgYWN0aW9ucywgYW5kIHVzZXMgdGhpcyBwb2xpY3kgd2hlbiBjcmVhdGluZyB0aGVzZSByb2xlcyB0byBkZWZpbmUgdGhlIGJvdW5kYXJ5IG9mIHRoZWlyIHBlcm1pc3Npb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZUVudmlyb25tZW50Um9sZVBlcm1pc3Npb25zQm91bmRhcnkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGF0YVpvbmVFbnZpcm9ubWVudFJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIERhdGFab25lIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhcyB3ZWxsIGFzIGxpbWl0ZWQgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgaXQuICovXG4gICAgcHVibGljIEFtYXpvbkRhdGFab25lRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EYXRhWm9uZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRGF0YVpvbmUsIGJ1dCBkb2VzIG5vdCBhbGxvdyB0aGUgbWFuYWdlbWVudCBvZiBkb21haW5zLCB1c2Vycywgb3IgYXNzb2NpYXRlZCBhY2NvdW50cy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGF0YVpvbmVGdWxsVXNlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EYXRhWm9uZUZ1bGxVc2VyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gYWxsb3cgQW1hem9uIERhdGFab25lIHRvIGVuYWJsZSBwdWJsaXNoaW5nIGFuZCBhY2Nlc3MgZ3JhbnRzIHRvIGRhdGEuICovXG4gICAgcHVibGljIEFtYXpvbkRhdGFab25lR2x1ZU1hbmFnZUFjY2Vzc1JvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGF0YVpvbmVHbHVlTWFuYWdlQWNjZXNzUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBEYXRhWm9uZSBpcyBhIGRhdGEgbWFuYWdlbWVudCBzZXJ2aWNlIHRoYXQgZW5hYmxlcyB5b3UgdG8gY2F0YWxvZywgZGlzY292ZXIsIGdvdmVybiwgc2hhcmUsIGFuZCBhbmFseXplIHlvdXIgZGF0YS4gV2l0aCBBbWF6b24gRGF0YVpvbmUsIHlvdSBjYW4gc2hhcmUgYW5kIGFjY2VzcyB5b3VyIGRhdGEgYWNyb3NzIGFjY291bnRzIGFuZCBzdXBwb3J0ZWQgcmVnaW9ucy4gQW1hem9uIERhdGFab25lIHNpbXBsaWZpZXMgeW91ciBleHBlcmllbmNlIGFjcm9zcyBBV1Mgc2VydmljZXMsIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvLCBBbWF6b24gUmVkc2hpZnQsIEFtYXpvbiBBdGhlbmEsIEFXUyBHbHVlLCBhbmQgQVdTIExha2UgRm9ybWF0aW9uLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZVJlZHNoaWZ0R2x1ZVByb3Zpc2lvbmluZ1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EYXRhWm9uZVJlZHNoaWZ0R2x1ZVByb3Zpc2lvbmluZ1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdpdmVzIEFtYXpvbiBEYXRhWm9uZSBwZXJtaXNzaW9ucyB0byBwdWJsaXNoIEFtYXpvbiBSZWRzaGlmdCBkYXRhIHRvIHRoZSBjYXRhbG9nLiBJdCBhbHNvIGdpdmVzIEFtYXpvbiBEYXRhWm9uZSBwZXJtaXNzaW9ucyB0byBncmFudCBhY2Nlc3Mgb3IgcmV2b2tlIGFjY2VzcyB0byBBbWF6b24gUmVkc2hpZnQgb3IgQW1hem9uIFJlZHNoaWZ0IFNlcnZlcmxlc3MgcHVibGlzaGVkIGFzc2V0cyBpbiB0aGUgY2F0YWxvZy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGF0YVpvbmVSZWRzaGlmdE1hbmFnZUFjY2Vzc1JvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGF0YVpvbmVSZWRzaGlmdE1hbmFnZUFjY2Vzc1JvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgQW1hem9uRGF0YVpvbmVTYWdlTWFrZXJFbnZpcm9ubWVudFJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5IHBvbGljeSBpcyB0aGUgbGlzdCBvZiBwZXJtaXNzaW9ucyB0aGF0IGFyZSBwZXJtaXR0ZWQgb24gYW4gZXhlY3V0aW9uIHJvbGUgY3JlYXRlZCBpbiBhIFNhZ2VNYWtlciBlbnZpcm9ubWVudCBwcm92aXNpb25lZCBieSBBbWF6b24gRGF0YVpvbmUuICovXG4gICAgcHVibGljIEFtYXpvbkRhdGFab25lU2FnZU1ha2VyRW52aXJvbm1lbnRSb2xlUGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EYXRhWm9uZVNhZ2VNYWtlckVudmlyb25tZW50Um9sZVBlcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgQW1hem9uRGF0YVpvbmVTYWdlTWFrZXJNYW5hZ2VBY2Nlc3NSb2xlUG9saWN5IHBvbGljeSBncmFudHMgQW1hem9uIERhdGFab25lIHRoZSBwZXJtaXNzaW9ucyByZXF1aXJlZCB0byBncmFudCB1c2VyIGFjY2VzcyB0byB2YXJpb3VzIHJlc291cmNlcyBpbiB0aGUgU2FnZU1ha2VyIGVudmlyb25tZW50LiAqL1xuICAgIHB1YmxpYyBBbWF6b25EYXRhWm9uZVNhZ2VNYWtlck1hbmFnZUFjY2Vzc1JvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGF0YVpvbmVTYWdlTWFrZXJNYW5hZ2VBY2Nlc3NSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIEFtYXpvbkRhdGFab25lU2FnZU1ha2VyUHJvdmlzaW9uaW5nUm9sZVBvbGljeSBwb2xpY3kgZ3JhbnRzIEFtYXpvbiBEYXRhWm9uZSB0aGUgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gaW50ZXJvcGVyYXRlIHdpdGggQW1hem9uIFNhZ2VNYWtlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGF0YVpvbmVTYWdlTWFrZXJQcm92aXNpb25pbmdSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRhdGFab25lU2FnZU1ha2VyUHJvdmlzaW9uaW5nUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqICBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRGV0ZWN0aXZlIHNlcnZpY2UgYW5kIHNjb3BlZCBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUgVUkgZGVwZW5kZW5jaWVzICovXG4gICAgcHVibGljIEFtYXpvbkRldGVjdGl2ZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGV0ZWN0aXZlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGludmVzdGlnYXRvciBhY2Nlc3MgdG8gQW1hem9uIERldGVjdGl2ZSBzZXJ2aWNlIGFuZCBzY29wZWQgYWNjZXNzIHRvIHRoZSBjb25zb2xlIFVJIGRlcGVuZGVuY2llcy4gVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb24gdG8gZGl2ZSBpbnRvIERldGVjdGl2ZSBmb3IgaW52ZXN0aWdhdGlvbiBwdXJwb3NlcyBhbmQgbGltaXRlZCB3cml0ZSBhY2Nlc3MgdG8gR3VhcmRkdXR5LiAqL1xuICAgIHB1YmxpYyBBbWF6b25EZXRlY3RpdmVJbnZlc3RpZ2F0b3JBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGV0ZWN0aXZlSW52ZXN0aWdhdG9yQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbWVtYmVyIGFjY2VzcyB0byBBbWF6b24gRGV0ZWN0aXZlIHNlcnZpY2UgYW5kIHNjb3BlZCBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUgVUkgZGVwZW5kZW5jaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EZXRlY3RpdmVNZW1iZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGV0ZWN0aXZlTWVtYmVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgT3JnYW5pemF0aW9ucyBhY2Nlc3MgdG8gbWFuYWdlIERlbGVnYXRlZCBhZG1pbmlzdHJhdG9yIGZvciBBbWF6b24gRGV0ZWN0aXZlIGFuZCBzY29wZWQgYWNjZXNzIHRvIHRoZSBjb25zb2xlIFVJIGRlcGVuZGVuY2llcy4gVGhpcyBhbHNvIGdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIHNlcnZpY2UtbGlua2VkIHJvbGUgZm9yIERldGVjdGl2ZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGV0ZWN0aXZlT3JnYW5pemF0aW9uc0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EZXRlY3RpdmVPcmdhbml6YXRpb25zQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBEZXRlY3RpdmUgdG8gbWFrZSBzZXJ2aWNlIGNhbGxzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFtYXpvbkRldGVjdGl2ZVNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRldGVjdGl2ZVNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHBvbGljeSBncmFudHMgZnVsbC1hY2Nlc3MgdG8gdGhlIERldk9wcyBHdXJ1IGNvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkRldk9wc0d1cnVDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EZXZPcHNHdXJ1Q29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRGV2T3BzIEd1cnUuICovXG4gICAgcHVibGljIEFtYXpvbkRldk9wc0d1cnVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRldk9wc0d1cnVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBhY2Nlc3MgdG8gZW5hYmxlIGFuZCBtYW5hZ2UgQW1hem9uIERldk9wcyBHdXJ1IHdpdGhpbiBhbiBvcmdhbml6YXRpb24uICovXG4gICAgcHVibGljIEFtYXpvbkRldk9wc0d1cnVPcmdhbml6YXRpb25zQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRldk9wc0d1cnVPcmdhbml6YXRpb25zQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gRGV2T3BzIEd1cnUgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRGV2T3BzR3VydVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRldk9wc0d1cnVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEEgc2VydmljZS1saW5rZWQgcm9sZSByZXF1aXJlZCBmb3IgQW1hem9uIERldk9wc0d1cnUgdG8gYWNjZXNzIHlvdXIgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EZXZPcHNHdXJ1U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRGV2T3BzR3VydVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHVwbG9hZCBETVMgcmVwbGljYXRpb24gbG9ncyB0byBjbG91ZHdhdGNoIGxvZ3MgaW4gY3VzdG9tZXIgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQW1hem9uRE1TQ2xvdWRXYXRjaExvZ3NSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRNU0Nsb3VkV2F0Y2hMb2dzUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBtYW5hZ2UgUzMgc2V0dGluZ3MgZm9yIFJlZHNoaWZ0IGVuZHBvaW50cyBmb3IgRE1TLiAqL1xuICAgIHB1YmxpYyBBbWF6b25ETVNSZWRzaGlmdFMzUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25ETVNSZWRzaGlmdFMzUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBtYW5hZ2UgVlBDIHNldHRpbmdzIGZvciBBV1MgbWFuYWdlZCBjdXN0b21lciBjb25maWd1cmF0aW9ucyAqL1xuICAgIHB1YmxpYyBBbWF6b25ETVNWUENNYW5hZ2VtZW50Um9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25ETVNWUENNYW5hZ2VtZW50Um9sZSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gRG9jdW1lbnREQi1FbGFzdGljIHRvIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Eb2NEQkVsYXN0aWNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Eb2NEQkVsYXN0aWNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIG1hbmFnZSBBbWF6b24gRG9jdW1lbnREQiB3aXRoIE1vbmdvREIgY29tcGF0aWJpbGl0eSB1c2luZyB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gTm90ZSB0aGlzIHBvbGljeSBhbHNvIGdyYW50cyBmdWxsIGFjY2VzcyB0byBwdWJsaXNoIG9uIGFsbCBTTlMgdG9waWNzIHdpdGhpbiB0aGUgYWNjb3VudCwgcGVybWlzc2lvbnMgdG8gY3JlYXRlIGFuZCBlZGl0IEFtYXpvbiBFQzIgaW5zdGFuY2VzIGFuZCBWUEMgY29uZmlndXJhdGlvbnMsIHBlcm1pc3Npb25zIHRvIHZpZXcgYW5kIGxpc3Qga2V5cyBvbiBBbWF6b24gS01TLCBhbmQgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFJEUyBhbmQgQW1hem9uIE5lcHR1bmUuICovXG4gICAgcHVibGljIEFtYXpvbkRvY0RCQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRG9jREJDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBEb2N1bWVudERCIEVsYXN0aWMgQ2x1c3RlcnMgYW5kIG90aGVyIHJlcXVpcmVkIHBlcm1pc3Npb25zIGZvciBpdHMgZGVwZW5kZW5jaWVzIGluY2x1ZGluZyBFQzIsIEtNUywgU2VjcmV0c01hbmFnZXIsIENsb3VkV2F0Y2ggYW5kIElBTS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRG9jREJFbGFzdGljRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Eb2NEQkVsYXN0aWNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gRG9jREItRWxhc3RpYyBhbmQgQ2xvdWRXYXRjaCBtZXRyaWNzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Eb2NEQkVsYXN0aWNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Eb2NEQkVsYXN0aWNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBEb2N1bWVudERCIHdpdGggTW9uZ29EQiBjb21wYXRpYmlsaXR5LiBOb3RlIHRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIGZ1bGwgYWNjZXNzIHRvIHB1Ymxpc2ggb24gYWxsIFNOUyB0b3BpY3Mgd2l0aGluIHRoZSBhY2NvdW50IGFuZCBmdWxsIGFjY2VzcyB0byBBbWF6b24gUkRTIGFuZCBBbWF6b24gTmVwdHVuZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRG9jREJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRvY0RCRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIERvY3VtZW50REIgd2l0aCBNb25nb0RCIGNvbXBhdGliaWxpdHkuIE5vdGUgdGhhdCB0aGlzIHBvbGljeSBhbHNvIGdyYW50cyBhY2Nlc3MgdG8gQW1hem9uIFJEUyBhbmQgQW1hem9uIE5lcHR1bmUgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Eb2NEQlJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkRvY0RCUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gbWFuYWdlIFZQQyBzZXR0aW5ncyBmb3IgQW1hem9uIG1hbmFnZWQgY3VzdG9tZXIgY29uZmlndXJhdGlvbnMgKi9cbiAgICBwdWJsaWMgQW1hem9uRFJTVlBDTWFuYWdlbWVudCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EUlNWUENNYW5hZ2VtZW50KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIER5bmFtb0RCIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRHluYW1vREJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkR5bmFtb0RCRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBEeW5hbW9EQiAqL1xuICAgIHB1YmxpYyBBbWF6b25EeW5hbW9EQkZ1bGxBY2Nlc3NWMigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EeW5hbW9EQkZ1bGxBY2Nlc3NWMik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIG9uIGEgZGVwcmVjYXRpb24gcGF0aC4gU2VlIGRvY3VtZW50YXRpb24gZm9yIGd1aWRhbmNlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0R5bmFtb0RCUGlwZWxpbmUuaHRtbC4gUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIER5bmFtb0RCIGluY2x1ZGluZyBFeHBvcnQvSW1wb3J0IHVzaW5nIEFXUyBEYXRhIFBpcGVsaW5lIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRHluYW1vREJGdWxsQWNjZXNzd2l0aERhdGFQaXBlbGluZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25EeW5hbW9EQkZ1bGxBY2Nlc3N3aXRoRGF0YVBpcGVsaW5lKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gRHluYW1vREIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25EeW5hbW9EQlJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkR5bmFtb0RCUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBJQU0gUG9saWN5IHRoYXQgYWxsb3dzIHRoZSBDU0kgZHJpdmVyIHNlcnZpY2UgYWNjb3VudCB0byBtYWtlIGNhbGxzIHRvIHJlbGF0ZWQgc2VydmljZXMgc3VjaCBhcyBFQzIgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVCU0NTSURyaXZlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQlNDU0lEcml2ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gQW1hem9uIEVDUiByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyQ29udGFpbmVyUmVnaXN0cnlGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBFQzIgQ29udGFpbmVyIFJlZ2lzdHJ5IHJlcG9zaXRvcmllcywgYnV0IGRvZXMgbm90IGFsbG93IHJlcG9zaXRvcnkgZGVsZXRpb24gb3IgcG9saWN5IGNoYW5nZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5UG93ZXJVc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5UG93ZXJVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHB1bGwgaW1hZ2VzIGZyb20gQW1hem9uIEVDMiBDb250YWluZXIgUmVnaXN0cnkgcmVwb3NpdG9yaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVB1bGxPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5UHVsbE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBFQzIgQ29udGFpbmVyIFJlZ2lzdHJ5IHJlcG9zaXRvcmllcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyQ29udGFpbmVyUmVnaXN0cnlSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJDb250YWluZXJSZWdpc3RyeVJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogICBQb2xpY3kgdG8gZW5hYmxlIFRhc2sgQXV0b3NjYWxpbmcgZm9yIEFtYXpvbiBFQzIgQ29udGFpbmVyIFNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyQ29udGFpbmVyU2VydmljZUF1dG9zY2FsZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyQ29udGFpbmVyU2VydmljZUF1dG9zY2FsZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIENsb3VkV2F0Y2ggRXZlbnRzIGZvciBFQzIgQ29udGFpbmVyIFNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyQ29udGFpbmVyU2VydmljZUV2ZW50c1JvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyQ29udGFpbmVyU2VydmljZUV2ZW50c1JvbGUpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIEFtYXpvbiBFQzIgUm9sZSBmb3IgQW1hem9uIEVDMiBDb250YWluZXIgU2VydmljZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyQ29udGFpbmVyU2VydmljZWZvckVDMlJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyQ29udGFpbmVyU2VydmljZWZvckVDMlJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgQW1hem9uIEVDUyBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVDMkNvbnRhaW5lclNlcnZpY2VSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMkNvbnRhaW5lclNlcnZpY2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEVDMiB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVDMkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gc2NhbiBhbGwgc3VwcG9ydGVkIHJlc291cmNlIHR5cGVzIGZvciByZWxldmFudCBkYXRhIHdoZW4gdXNpbmcgRGVzY3JpYmVJbWFnZVJlZmVyZW5jZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVDMkltYWdlUmVmZXJlbmNlc0FjY2Vzc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJJbWFnZVJlZmVyZW5jZXNBY2Nlc3NQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBFQzIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEVDMiBhY2Nlc3MgdG8gUzMgYnVja2V0IHRvIGRvd25sb2FkIHJldmlzaW9uLiBUaGlzIHJvbGUgaXMgbmVlZGVkIGJ5IHRoZSBDb2RlRGVwbG95IGFnZW50IG9uIEVDMiBpbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVDMlJvbGVmb3JBV1NDb2RlRGVwbG95KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMlJvbGVmb3JBV1NDb2RlRGVwbG95KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgRUMyIGxpbWl0ZWQgYWNjZXNzIHRvIFMzIGJ1Y2tldCB0byBkb3dubG9hZCByZXZpc2lvbi4gVGhpcyByb2xlIGlzIG5lZWRlZCBieSB0aGUgQ29kZURlcGxveSBhZ2VudCBvbiBFQzIgaW5zdGFuY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJSb2xlZm9yQVdTQ29kZURlcGxveUxpbWl0ZWQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyUm9sZWZvckFXU0NvZGVEZXBsb3lMaW1pdGVkKTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIHRoZSBBbWF6b24gRUMyIFJvbGUgZm9yIERhdGEgUGlwZWxpbmUgc2VydmljZSByb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJSb2xlZm9yRGF0YVBpcGVsaW5lUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJSb2xlZm9yRGF0YVBpcGVsaW5lUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHdpbGwgc29vbiBiZSBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIEFtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmUgcG9saWN5IHRvIGVuYWJsZSBBV1MgU3lzdGVtcyBNYW5hZ2VyIHNlcnZpY2UgY29yZSBmdW5jdGlvbmFsaXR5IG9uIEVDMiBpbnN0YW5jZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3lzdGVtcy1tYW5hZ2VyL2xhdGVzdC91c2VyZ3VpZGUvc2V0dXAtaW5zdGFuY2UtcHJvZmlsZS5odG1sICovXG4gICAgcHVibGljIEFtYXpvbkVDMlJvbGVmb3JTU00oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUMyUm9sZWZvclNTTSk7XG4gICAgfVxuXG4gICAgLyoqIE1hbmFnZWQgcG9saWN5IGZvciB0aGUgQW1hem9uIExhdW5jaFdpemFyZCBzZXJ2aWNlIHJvbGUgZm9yIEVDMiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJSb2xlUG9saWN5Rm9yTGF1bmNoV2l6YXJkKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDMlJvbGVQb2xpY3lGb3JMYXVuY2hXaXphcmQpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIEF1dG9zY2FsaW5nIGZvciBBbWF6b24gRUMyIFNwb3QgRmxlZXQgKi9cbiAgICBwdWJsaWMgQW1hem9uRUMyU3BvdEZsZWV0QXV0b3NjYWxlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJTcG90RmxlZXRBdXRvc2NhbGVSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEVDMiBTcG90IEZsZWV0IHRvIHJlcXVlc3QsIHRlcm1pbmF0ZSBhbmQgdGFnIFNwb3QgSW5zdGFuY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQzJTcG90RmxlZXRUYWdnaW5nUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQzJTcG90RmxlZXRUYWdnaW5nUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBBbWF6b24gRUNTIHJlc291cmNlcyBhbmQgZW5hYmxlcyBFQ1MgZmVhdHVyZXMgdGhyb3VnaCBhY2Nlc3MgdG8gb3RoZXIgQVdTIHNlcnZpY2UgcmVzb3VyY2VzLCBpbmNsdWRpbmcgVlBDcywgQXV0byBTY2FsaW5nIGdyb3VwcywgYW5kIENsb3VkRm9ybWF0aW9uIHN0YWNrcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUNTRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQ1NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGVuYWJsZSBBbWF6b24gRUNTIENvbXB1dGUgdG8gbWFuYWdlIHlvdXIgRUMyIGluc3RhbmNlcyBhbmQgcmVsYXRlZCByZXNvdXJjZXMgYXMgcGFydCBvZiBFQ1MgbWFuYWdlZCBpbnN0YW5jZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uRUNTQ29tcHV0ZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDU0NvbXB1dGVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBvdGhlciBBV1Mgc2VydmljZSByZXNvdXJjZXMgcmVxdWlyZWQgdG8gbWFuYWdlIGxvYWQgYmFsYW5jZXJzIGFzc29jaWF0ZWQgd2l0aCBFQ1Mgd29ya2xvYWRzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQ1NJbmZyYXN0cnVjdHVyZVJvbGVQb2xpY3lGb3JMb2FkQmFsYW5jZXJzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvckxvYWRCYWxhbmNlcnMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBFQ1MgYWNjZXNzIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIEVDMiBtYW5hZ2VkIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25FQ1NJbmZyYXN0cnVjdHVyZVJvbGVQb2xpY3lGb3JNYW5hZ2VkSW5zdGFuY2VzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvck1hbmFnZWRJbnN0YW5jZXMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHksIEFXUyBTZWNyZXRzIE1hbmFnZXIgYW5kIG90aGVyIEFXUyBTZXJ2aWNlcyByZXF1aXJlZCB0byBtYW5hZ2UgRUNTIFNlcnZpY2UgQ29ubmVjdCBUTFMgZmVhdHVyZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvclNlcnZpY2VDb25uZWN0VHJhbnNwb3J0TGF5ZXJTZWN1cml0eSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FQ1NJbmZyYXN0cnVjdHVyZVJvbGVQb2xpY3lGb3JTZXJ2aWNlQ29ubmVjdFRyYW5zcG9ydExheWVyU2VjdXJpdHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gb3RoZXIgQVdTIHNlcnZpY2UgcmVzb3VyY2VzIHJlcXVpcmVkIHRvIG1hbmFnZSB2b2x1bWVzIGFzc29jaWF0ZWQgd2l0aCBFQ1Mgd29ya2xvYWRzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQ1NJbmZyYXN0cnVjdHVyZVJvbGVQb2xpY3lGb3JWb2x1bWVzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvclZvbHVtZXMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gb3RoZXIgQVdTIHNlcnZpY2UgcmVzb3VyY2VzIHJlcXVpcmVkIHRvIG1hbmFnZSBWUEMgTGF0dGljZSBmZWF0dXJlIGluIEVDUyB3b3JrbG9hZHMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVDU0luZnJhc3RydWN0dXJlUm9sZVBvbGljeUZvclZwY0xhdHRpY2UoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUNTSW5mcmFzdHJ1Y3R1cmVSb2xlUG9saWN5Rm9yVnBjTGF0dGljZSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciB0aGUgQW1hem9uIEVDUyBJbnN0YW5jZSBSb2xlIGZvciBBbWF6b24gRUNTIE1hbmFnZWQgSW5zdGFuY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FQ1NJbnN0YW5jZVJvbGVQb2xpY3lGb3JNYW5hZ2VkSW5zdGFuY2VzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDU0luc3RhbmNlUm9sZVBvbGljeUZvck1hbmFnZWRJbnN0YW5jZXMpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIEFtYXpvbiBFQ1MgdG8gbWFuYWdlIHlvdXIgY2x1c3Rlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUNTU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUNTU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gb3RoZXIgQVdTIHNlcnZpY2UgcmVzb3VyY2VzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHJ1biBBbWF6b24gRUNTIHRhc2tzICovXG4gICAgcHVibGljIEFtYXpvbkVDU1Rhc2tFeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVDU1Rhc2tFeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbWFuYWdlbWVudCBhY2Nlc3MgdG8gRUZTIHJlc291cmNlcyBhbmQgcmVhZCBhY2Nlc3MgdG8gRUMyICovXG4gICAgcHVibGljIEFtYXpvbkVGU0NTSURyaXZlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FRlNDU0lEcml2ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyB0aGUgQW1hem9uIFZQQyBDTkkgUGx1Z2luIChhbWF6b24tdnBjLWNuaS1rOHMpIHRoZSBwZXJtaXNzaW9ucyBpdCByZXF1aXJlcyB0byBtb2RpZnkgdGhlIElQIGFkZHJlc3MgY29uZmlndXJhdGlvbiBvbiB5b3VyIEVLUyB3b3JrZXIgbm9kZXMuIFRoaXMgcGVybWlzc2lvbiBzZXQgYWxsb3dzIHRoZSBDTkkgdG8gbGlzdCwgZGVzY3JpYmUsIGFuZCBtb2RpZnkgRWxhc3RpYyBOZXR3b3JrIEludGVyZmFjZXMgb24geW91ciBiZWhhbGYuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIEFXUyBWUEMgQ05JIFBsdWdpbiBpcyBhdmFpbGFibGUgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hbWF6b24tdnBjLWNuaS1rOHMgKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTQ05JUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU0NOSVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBhdHRhY2hlZCB0byB0aGUgRUtTIENsdXN0ZXIgUm9sZSB0aGF0IGdyYW50cyBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgdGhlIGNsdXN0ZXIncyBibG9jayBzdG9yYWdlIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTQmxvY2tTdG9yYWdlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU0Jsb2NrU3RvcmFnZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIEt1YmVybmV0ZXMgdGhlIHBlcm1pc3Npb25zIGl0IHJlcXVpcmVzIHRvIG1hbmFnZSByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuIEt1YmVybmV0ZXMgcmVxdWlyZXMgRWMyOkNyZWF0ZVRhZ3MgcGVybWlzc2lvbnMgdG8gcGxhY2UgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24gb24gRUMyIHJlc291cmNlcyBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIEluc3RhbmNlcywgU2VjdXJpdHkgR3JvdXBzLCBhbmQgRWxhc3RpYyBOZXR3b3JrIEludGVyZmFjZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVLU0NsdXN0ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTQ2x1c3RlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBhdHRhY2hlZCB0byB0aGUgRUtTIENsdXN0ZXIgUm9sZSB0aGF0IGdyYW50cyBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgdGhlIGNsdXN0ZXIncyBjb21wdXRlIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTQ29tcHV0ZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NDb21wdXRlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIEFtYXpvbiBFS1MgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgZm9yIEVLUyBjb25uZWN0b3IgKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTQ29ubmVjdG9yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTQ29ubmVjdG9yU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIHZpZXcgdGhlIGRhc2hib2FyZCBpbiB0aGUgQW1hem9uIEVLUyBjb25zb2xlLiBUaGUgZGFzaGJvYXJkIGFnZ3JlZ2F0ZXMgaW5mb3JtYXRpb24gYWJvdXQgbXVsdGlwbGUgY2x1c3RlcnMgYW5kIHJlbGF0ZWQgcmVzb3VyY2VzIHVzaW5nIEFXUyBPcmdhbml6YXRpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NEYXNoYm9hcmRDb25zb2xlUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTRGFzaGJvYXJkQ29uc29sZVJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZW5hYmxlcyB0aGUgQW1hem9uIEVLUyBEYXNoYm9hcmQgdG8gYWNjZXNzIGFuZCBkaXNwbGF5IG9yZ2FuaXphdGlvbi13aWRlIGluZm9ybWF0aW9uLiBUaGUgcG9saWN5IGFsbG93cyB0aGUgRUtTIERhc2hib2FyZCBzZXJ2aWNlIHRvIGdhdGhlciBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIEFXUyBPcmdhbml6YXRpb25zIHN0cnVjdHVyZSBhbmQgYWNjb3VudHMuICovXG4gICAgcHVibGljIEFtYXpvbkVLU0Rhc2hib2FyZFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU0Rhc2hib2FyZFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIG90aGVyIEFXUyBzZXJ2aWNlIHJlc291cmNlcyB0aGF0IGFyZSByZXF1aXJlZCB0byBydW4gQW1hem9uIEVLUyBwb2RzIG9uIEFXUyBGYXJnYXRlICovXG4gICAgcHVibGljIEFtYXpvbkVLU0ZhcmdhdGVQb2RFeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU0ZhcmdhdGVQb2RFeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyB0byBBbWF6b24gRUtTIHRvIHJ1biBmYXJnYXRlIHRhc2tzICovXG4gICAgcHVibGljIEFtYXpvbkVLU0ZvckZhcmdhdGVTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NGb3JGYXJnYXRlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgYXR0YWNoZWQgdG8gdGhlIEVLUyBDbHVzdGVyIFJvbGUgdGhhdCBncmFudHMgcGVybWlzc2lvbnMgdG8gbWFuYWdlIHRoZSBjbHVzdGVyJ3MgbG9hZCBiYWxhbmNpbmcgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NMb2FkQmFsYW5jaW5nUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU0xvYWRCYWxhbmNpbmdQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBwZXJtaXNzaW9ucyB0byBFS1MgbG9jYWwgY2x1c3RlcidzIGNvbnRyb2wtcGxhbmUgaW5zdGFuY2VzIHJ1bm5pbmcgaW4geW91ciBhY2NvdW50IHRvIG1hbmFnZSByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVLU0xvY2FsT3V0cG9zdENsdXN0ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTTG9jYWxPdXRwb3N0Q2x1c3RlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gRUtTIExvY2FsIHRvIGNhbGwgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NMb2NhbE91dHBvc3RTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NMb2NhbE91dHBvc3RTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBhdHRhY2hlZCB0byB0aGUgRUtTIENsdXN0ZXIgUm9sZSB0aGF0IGdyYW50cyBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgdGhlIGNsdXN0ZXIncyBuZXR3b3JraW5nIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRUtTTmV0d29ya2luZ1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NOZXR3b3JraW5nUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIEFtYXpvbiBFbGFzdGljIENvbnRhaW5lciBTZXJ2aWNlIGZvciBLdWJlcm5ldGVzIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHRoZSBuZWNlc3NhcnkgcmVzb3VyY2VzIHRvIG9wZXJhdGUgRUtTIENsdXN0ZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NTZXJ2aWNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU1NlcnZpY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBIFNlcnZpY2UtTGlua2VkIFJvbGUgcmVxdWlyZWQgZm9yIEFtYXpvbiBFS1MgdG8gY2FsbCBBV1Mgc2VydmljZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVLU1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVLU1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHVzZWQgYnkgVlBDIFJlc291cmNlIENvbnRyb2xsZXIgdG8gbWFuYWdlIEVOSSBhbmQgSVBzIGZvciB3b3JrZXIgbm9kZXMuICovXG4gICAgcHVibGljIEFtYXpvbkVLU1ZQQ1Jlc291cmNlQ29udHJvbGxlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NWUENSZXNvdXJjZUNvbnRyb2xsZXIpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgQW1hem9uIEVLUyB3b3JrZXIgbm9kZXMgdG8gY29ubmVjdCB0byBBbWF6b24gRUtTIENsdXN0ZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FS1NXb3JrZXJOb2RlTWluaW1hbFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FS1NXb3JrZXJOb2RlTWluaW1hbFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBBbWF6b24gRUtTIHdvcmtlciBub2RlcyB0byBjb25uZWN0IHRvIEFtYXpvbiBFS1MgQ2x1c3RlcnMuICovXG4gICAgcHVibGljIEFtYXpvbkVLU1dvcmtlck5vZGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRUtTV29ya2VyTm9kZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBFbGFzdGlDYWNoZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aUNhY2hlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGlDYWNoZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBFbGFzdGlDYWNoZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aUNhY2hlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpQ2FjaGVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBBbWF6b24gRUNSIFB1YmxpYyByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY0NvbnRhaW5lclJlZ2lzdHJ5UHVibGljRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljQ29udGFpbmVyUmVnaXN0cnlQdWJsaWNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEVDUiBQdWJsaWMgcmVwb3NpdG9yaWVzLCBidXQgZG9lcyBub3QgYWxsb3cgcmVwb3NpdG9yeSBkZWxldGlvbiBvciBwb2xpY3kgY2hhbmdlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY0NvbnRhaW5lclJlZ2lzdHJ5UHVibGljUG93ZXJVc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNDb250YWluZXJSZWdpc3RyeVB1YmxpY1Bvd2VyVXNlcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIEVDUiBQdWJsaWMgcmVwb3NpdG9yaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljQ29udGFpbmVyUmVnaXN0cnlQdWJsaWNSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljQ29udGFpbmVyUmVnaXN0cnlQdWJsaWNSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJvb3QgY2xpZW50IGFjY2VzcyB0byBhbiBBbWF6b24gRUZTIGZpbGUgc3lzdGVtICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtQ2xpZW50RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljRmlsZVN5c3RlbUNsaWVudEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgY2xpZW50IGFjY2VzcyB0byBhbiBBbWF6b24gRUZTIGZpbGUgc3lzdGVtICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtQ2xpZW50UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1DbGllbnRSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgYW5kIHdyaXRlIGNsaWVudCBhY2Nlc3MgdG8gYW4gQW1hem9uIEVGUyBmaWxlIHN5c3RlbSAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljRmlsZVN5c3RlbUNsaWVudFJlYWRXcml0ZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljRmlsZVN5c3RlbUNsaWVudFJlYWRXcml0ZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBFRlMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljRmlsZVN5c3RlbUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gRUZTIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljRmlsZVN5c3RlbVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBFbGFzdGljIEZpbGUgU3lzdGVtIHRvIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY0ZpbGVTeXN0ZW1TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBjdXN0b21lcnMgdG8gdXNlIEFXUyBTeXN0ZW1zIE1hbmFnZXIgdG8gYXV0b21hdGljYWxseSBtYW5hZ2UgQW1hem9uIEVGUyB1dGlsaXRpZXMgKGFtYXpvbi1lZnMtdXRpbHMpIHBhY2thZ2Ugb24gdGhlaXIgRUMyIGluc3RhbmNlcywgYW5kIHVzZSBDbG91ZFdhdGNoTG9nIHRvIGdldCBFRlMgZmlsZSBzeXN0ZW0gbW91bnQgc3VjY2Vzcy9mYWlsdXJlIG5vdGlmaWNhdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtc1V0aWxzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNGaWxlU3lzdGVtc1V0aWxzKTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIHRoZSBBbWF6b24gRWxhc3RpYyBNYXBSZWR1Y2UgRWRpdG9ycyBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VFZGl0b3JzUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljTWFwUmVkdWNlRWRpdG9yc1JvbGUpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gRWxhc3RpYyBNYXBSZWR1Y2UgZm9yIEF1dG8gU2NhbGluZy4gUm9sZSB0byBhbGxvdyBBdXRvIFNjYWxpbmcgdG8gYWRkIGFuZCByZW1vdmUgaW5zdGFuY2VzIGZyb20geW91ciBFTVIgY2x1c3Rlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY01hcFJlZHVjZWZvckF1dG9TY2FsaW5nUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljTWFwUmVkdWNlZm9yQXV0b1NjYWxpbmdSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIHRoZSBBbWF6b24gRWxhc3RpYyBNYXBSZWR1Y2UgZm9yIEVDMiBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNNYXBSZWR1Y2Vmb3JFQzJSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNNYXBSZWR1Y2Vmb3JFQzJSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgb24gYSBkZXByZWNhdGlvbiBwYXRoLiBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgZ3VpZGFuY2U6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbXIvbGF0ZXN0L01hbmFnZW1lbnRHdWlkZS9lbXItbWFuYWdlZC1pYW0tcG9saWNpZXMuaHRtbC4gUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEVsYXN0aWMgTWFwUmVkdWNlIGFuZCB1bmRlcmx5aW5nIHNlcnZpY2VzIHRoYXQgaXQgcmVxdWlyZXMgc3VjaCBhcyBFQzIgYW5kIFMzICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGFsbG93IEVNUiB0byBjcmVhdGUsIGRlc2NyaWJlIGFuZCBkZWxldGUgRUMyIHBsYWNlbWVudCBncm91cHMuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VQbGFjZW1lbnRHcm91cFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljTWFwUmVkdWNlUGxhY2VtZW50R3JvdXBQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBFbGFzdGljIE1hcFJlZHVjZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNNYXBSZWR1Y2VSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljTWFwUmVkdWNlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyBvbiBhIGRlcHJlY2F0aW9uIHBhdGguIFNlZSBkb2N1bWVudGF0aW9uIGZvciBndWlkYW5jZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Vtci9sYXRlc3QvTWFuYWdlbWVudEd1aWRlL2Vtci1tYW5hZ2VkLWlhbS1wb2xpY2llcy5odG1sLiAgRGVmYXVsdCBwb2xpY3kgZm9yIHRoZSBBbWF6b24gRWxhc3RpYyBNYXBSZWR1Y2Ugc2VydmljZSByb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljTWFwUmVkdWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljTWFwUmVkdWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IEFtYXpvbiBFbGFzdGljc2VhcmNoIFNlcnZpY2UgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcyBzdWNoIGFzIEVDMiBOZXR3b3JraW5nIEFQSXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbkVsYXN0aWNzZWFyY2hTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FbGFzdGljc2VhcmNoU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgdXNlcnMgZnVsbCBhY2Nlc3MgdG8gRWxhc3RpYyBUcmFuc2NvZGVyIGFuZCB0aGUgYWNjZXNzIHRvIGFzc29jaWF0ZWQgc2VydmljZXMgdGhhdCBpcyByZXF1aXJlZCBmb3IgZnVsbCBFbGFzdGljIFRyYW5zY29kZXIgZnVuY3Rpb25hbGl0eS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRWxhc3RpY1RyYW5zY29kZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNUcmFuc2NvZGVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyB1c2VycyBwZXJtaXNzaW9uIHRvIGNoYW5nZSBwcmVzZXRzLCBzdWJtaXQgam9icywgYW5kIHZpZXcgRWxhc3RpYyBUcmFuc2NvZGVyIHNldHRpbmdzLiBUaGlzIHBvbGljeSBhbHNvIGdyYW50cyBzb21lIHJlYWQtb25seSBhY2Nlc3MgdG8gc29tZSBvdGhlciBzZXJ2aWNlcyByZXF1aXJlZCB0byB1c2UgdGhlIEVsYXN0aWMgVHJhbnNjb2RlIGNvbnNvbGUsIGluY2x1ZGluZyBTMywgSUFNLCBhbmQgU05TLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljVHJhbnNjb2RlckpvYnNTdWJtaXR0ZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY1RyYW5zY29kZXJKb2JzU3VibWl0dGVyKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHVzZXJzIHJlYWQtb25seSBhY2Nlc3MgdG8gRWxhc3RpYyBUcmFuc2NvZGVyIGFuZCBsaXN0IGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljVHJhbnNjb2RlclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVsYXN0aWNUcmFuc2NvZGVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIEFtYXpvbiBFbGFzdGljIFRyYW5zY29kZXIgc2VydmljZSByb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FbGFzdGljVHJhbnNjb2RlclJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRWxhc3RpY1RyYW5zY29kZXJSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBhY3Rpb25zIHRoYXQgRU1SIHJlcXVpcmVzIHRvIHRlcm1pbmF0ZSBhbmQgZGVsZXRlIEFXUyBFQzIgcmVzb3VyY2VzIGlmIHRoZSBFTVIgU2VydmljZSByb2xlIGhhcyBsb3N0IHRoYXQgYWJpbGl0eS4gKi9cbiAgICBwdWJsaWMgQW1hem9uRU1SQ2xlYW51cFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FTVJDbGVhbnVwUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFjY2VzcyB0byBvdGhlciBBV1Mgc2VydmljZSByZXNvdXJjZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gcnVuIEFtYXpvbiBFTVIgKi9cbiAgICBwdWJsaWMgQW1hem9uRU1SQ29udGFpbmVyc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVNUkNvbnRhaW5lcnNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBFTVIgKi9cbiAgICBwdWJsaWMgQW1hem9uRU1SRnVsbEFjY2Vzc1BvbGljeVYyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVNUkZ1bGxBY2Nlc3NQb2xpY3lWMik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEVNUiBhbmQgdGhlIGFzc29jaWF0ZWQgQ2xvdWRXYXRjaCBNZXRyaWNzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FTVJSZWFkT25seUFjY2Vzc1BvbGljeVYyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVNUlJlYWRPbmx5QWNjZXNzUG9saWN5VjIpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgYWNjZXNzIHRvIG90aGVyIEFXUyBzZXJ2aWNlIHJlc291cmNlcyB0aGF0IGFyZSByZXF1aXJlZCB0byBydW4gQW1hem9uIEVNUlNlcnZlcmxlc3MgKi9cbiAgICBwdWJsaWMgQW1hem9uRU1SU2VydmVybGVzc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVNUlNlcnZlcmxlc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIHVzZWQgZm9yIHRoZSBBbWF6b24gRU1SIFNlcnZpY2UgUm9sZSBhbmQgc2hvdWxkIE5PVCBiZSB1c2VkIGZvciBhbnkgb3RoZXIgSUFNIHVzZXJzIG9yIHJvbGVzIGluIHlvdXIgYWNjb3VudC4gVGhlIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBFTVIgYW5kIHJlbGF0ZWQgc2VydmljZXMgbmVjZXNzYXJ5IGZvciB0aGUgb3BlcmF0aW9uIG9mIHlvdXIgRU1SIGNsdXN0ZXIuICovXG4gICAgcHVibGljIEFtYXpvbkVNUlNlcnZpY2VQb2xpY3lWMigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FTVJTZXJ2aWNlUG9saWN5VjIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBsaW1pdGVkIGFjY2VzcyB0byB0aGUgQW1hem9uIENvZ25pdG8gY29uZmlndXJhdGlvbiBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FU0NvZ25pdG9BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRVNDb2duaXRvQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFtYXpvbiBFUyBjb25maWd1cmF0aW9uIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFtYXpvbkVTRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FU0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBBbWF6b24gRVMgY29uZmlndXJhdGlvbiBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FU1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkVTUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgRXZlbnRCcmlkZ2UgdG8gYWNjZXNzIFNlY3JldCBNYW5hZ2VyIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uRXZlbnRCcmlkZ2VBcGlEZXN0aW5hdGlvbnNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FdmVudEJyaWRnZUFwaURlc3RpbmF0aW9uc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEV2ZW50QnJpZGdlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FdmVudEJyaWRnZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRXZlbnRCcmlkZ2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEV2ZW50QnJpZGdlIFBpcGVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FdmVudEJyaWRnZVBpcGVzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FdmVudEJyaWRnZVBpcGVzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhbmQgb3BlcmF0b3IgKGFiaWxpdHkgdG8gU3RvcCBhbmQgU3RhcnQgcnVubmluZyBQaXBlcykgYWNjZXNzIHRvIEFtYXpvbiBFdmVudEJyaWRnZSBQaXBlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRXZlbnRCcmlkZ2VQaXBlc09wZXJhdG9yQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkV2ZW50QnJpZGdlUGlwZXNPcGVyYXRvckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIEV2ZW50QnJpZGdlIFBpcGVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25FdmVudEJyaWRnZVBpcGVzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRXZlbnRCcmlkZ2VQaXBlc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gRXZlbnRCcmlkZ2UuICovXG4gICAgcHVibGljIEFtYXpvbkV2ZW50QnJpZGdlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRXZlbnRCcmlkZ2VSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBBbWF6b25FdmVudEJyaWRnZVNjaGVkdWxlckZ1bGxBY2Nlc3MgbWFuYWdlZCBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIHVzZSBhbGwgRXZlbnRCcmlkZ2UgU2NoZWR1bGVyIGFjdGlvbnMgZm9yIHNjaGVkdWxlcywgYW5kIHNjaGVkdWxlIGdyb3Vwcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRXZlbnRCcmlkZ2VTY2hlZHVsZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkV2ZW50QnJpZGdlU2NoZWR1bGVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBBbWF6b25FdmVudEJyaWRnZVNjaGVkdWxlclJlYWRPbmx5QWNjZXNzIG1hbmFnZWQgcG9saWN5IGdyYW50cyByZWFkLW9ubHkgcGVybWlzc2lvbnMgdG8gdmlldyBkZXRhaWxzIGFib3V0IHlvdXIgc2NoZWR1bGVzIGFuZCBzY2hlZHVsZSBncm91cHMgKi9cbiAgICBwdWJsaWMgQW1hem9uRXZlbnRCcmlkZ2VTY2hlZHVsZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25FdmVudEJyaWRnZVNjaGVkdWxlclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEV2ZW50QnJpZGdlIFNjaGVtYXMuICovXG4gICAgcHVibGljIEFtYXpvbkV2ZW50QnJpZGdlU2NoZW1hc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRXZlbnRCcmlkZ2VTY2hlbWFzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEV2ZW50QnJpZGdlIFNjaGVtYXMuICovXG4gICAgcHVibGljIEFtYXpvbkV2ZW50QnJpZGdlU2NoZW1hc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkV2ZW50QnJpZGdlU2NoZW1hc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIE1hbmFnZWQgUnVsZXMgY3JlYXRlZCBieSBBbWF6b24gRXZlbnRCcmlkZ2Ugc2NoZW1hcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uRXZlbnRCcmlkZ2VTY2hlbWFzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRXZlbnRCcmlkZ2VTY2hlbWFzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gRVZTIHRvIG1hbmFnZSByZXNvdXJjZXMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQW1hem9uRVZTU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRVZTU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIEFXUyBGSVMgdG8gbWFuYWdlIG1vbml0b3JpbmcgYW5kIHJlc291cmNlIHNlbGVjdGlvbiBmb3IgZXhwZXJpbWVudHMuICovXG4gICAgcHVibGljIEFtYXpvbkZJU1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkZJU1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR2l2ZXMgYWNjZXNzIHRvIGFsbCBhY3Rpb25zIGZvciBBbWF6b24gRm9yZWNhc3QgKi9cbiAgICBwdWJsaWMgQW1hem9uRm9yZWNhc3RGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkZvcmVjYXN0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdpdmVzIGFjY2VzcyB0byBhbGwgYWN0aW9ucyBmb3IgQW1hem9uIEZyYXVkIERldGVjdG9yICovXG4gICAgcHVibGljIEFtYXpvbkZyYXVkRGV0ZWN0b3JGdWxsQWNjZXNzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkZyYXVkRGV0ZWN0b3JGdWxsQWNjZXNzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRnVsbCBBY2Nlc3MgUG9saWN5IGZvciBBbWF6b24gRnJlZVJUT1MgKi9cbiAgICBwdWJsaWMgQW1hem9uRnJlZVJUT1NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkZyZWVSVE9TRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB1c2VyIHRvIGFjY2VzcyBBbWF6b24gRnJlZVJUT1MgT1RBIFVwZGF0ZSAqL1xuICAgIHB1YmxpYyBBbWF6b25GcmVlUlRPU09UQVVwZGF0ZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25GcmVlUlRPU09UQVVwZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBGU3ggYW5kIGFjY2VzcyB0byByZWxhdGVkIEFXUyBzZXJ2aWNlcyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkZTeENvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkZTeENvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gRlN4IGFuZCBhY2Nlc3MgdG8gcmVsYXRlZCBBV1Mgc2VydmljZXMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25GU3hDb25zb2xlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRlN4Q29uc29sZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEZTeCBhbmQgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25GU3hGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkZTeEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBGU3guICovXG4gICAgcHVibGljIEFtYXpvbkZTeFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkZTeFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBGU3ggdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQW1hem9uRlN4U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uRlN4U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gR2xhY2llciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkdsYWNpZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkdsYWNpZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gR2xhY2llciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbkdsYWNpZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25HbGFjaWVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWNjZXNzIHRvIEFtYXpvbiBBdGhlbmEgYW5kIHRoZSBkZXBlbmRlbmNpZXMgbmVlZGVkIHRvIGVuYWJsZSBxdWVyeWluZyBhbmQgd3JpdGluZyByZXN1bHRzIHRvIHMzIGZyb20gdGhlIEFtYXpvbiBBdGhlbmEgcGx1Z2luIGluIEFtYXpvbiBHcmFmYW5hLiAqL1xuICAgIHB1YmxpYyBBbWF6b25HcmFmYW5hQXRoZW5hQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkdyYWZhbmFBdGhlbmFBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWNjZXNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIGFuZCB0aGUgZGVwZW5kZW5jaWVzIG5lZWRlZCB0byB1c2UgQ2xvdWRXYXRjaCBhcyBhIGRhdGFzb3VyY2Ugd2l0aGluIEFtYXpvbiBNYW5hZ2VkIEdyYWZhbmEuICovXG4gICAgcHVibGljIEFtYXpvbkdyYWZhbmFDbG91ZFdhdGNoQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkdyYWZhbmFDbG91ZFdhdGNoQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHNjb3BlZCBhY2Nlc3MgdG8gQW1hem9uIFJlZHNoaWZ0IGFuZCB0aGUgZGVwZW5kZW5jaWVzIG5lZWRlZCB0byB1c2UgdGhlIEFtYXpvbiBSZWRzaGlmdCBwbHVnaW4gaW4gQW1hem9uIEdyYWZhbmEuICovXG4gICAgcHVibGljIEFtYXpvbkdyYWZhbmFSZWRzaGlmdEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25HcmFmYW5hUmVkc2hpZnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyBtYW5hZ2VkIG9yIHVzZWQgYnkgQW1hem9uIEdyYWZhbmEuICovXG4gICAgcHVibGljIEFtYXpvbkdyYWZhbmFTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25HcmFmYW5hU2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB1c2UgQW1hem9uIEd1YXJkRHV0eS4gKi9cbiAgICBwdWJsaWMgQW1hem9uR3VhcmREdXR5RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25HdWFyZER1dHlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gdXNlIEFtYXpvbiBHdWFyZER1dHkgKi9cbiAgICBwdWJsaWMgQW1hem9uR3VhcmREdXR5RnVsbEFjY2Vzc1YyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkd1YXJkRHV0eUZ1bGxBY2Nlc3NWMik7XG4gICAgfVxuXG4gICAgLyoqIEd1YXJkRHV0eSBtYWx3YXJlIHByb3RlY3Rpb24gdXNlcyB0aGUgc2VydmljZS1saW5rZWQgcm9sZSAoU0xSKSBuYW1lZCBBV1NTZXJ2aWNlUm9sZUZvckFtYXpvbkd1YXJkRHV0eU1hbHdhcmVQcm90ZWN0aW9uLiBUaGlzIHNlcnZpY2UtbGlua2VkIHJvbGUgYWxsb3dzIEd1YXJkRHV0eSBtYWx3YXJlIHByb3RlY3Rpb24gdG8gcGVyZm9ybSBhZ2VudC1sZXNzIHNjYW5zIHRvIGRldGVjdCBtYWx3YXJlLiBJdCBhbGxvd3MgR3VhcmREdXR5IHRvIGNyZWF0ZSBzbmFwc2hvdHMgaW4geW91ciBhY2NvdW50LCBhbmQgc2hhcmUgdGhlIHNuYXBzaG90cyB3aXRoIHRoZSBHdWFyZER1dHkgc2VydmljZSBhY2NvdW50IHRvIHNjYW4gZm9yIG1hbHdhcmUuIEl0IGV2YWx1YXRlcyB0aGVzZSBzaGFyZWQgc25hcHNob3RzIGFuZCBpbmNsdWRlcyB0aGUgcmV0cmlldmVkIEVDMiBpbnN0YW5jZSBtZXRhZGF0YSBpbiB0aGUgR3VhcmREdXR5IE1hbHdhcmUgUHJvdGVjdGlvbiBmaW5kaW5ncy4gVGhlIEFXU1NlcnZpY2VSb2xlRm9yQW1hem9uR3VhcmREdXR5TWFsd2FyZVByb3RlY3Rpb24gc2VydmljZS1saW5rZWQgcm9sZSB0cnVzdHMgdGhlIG1hbHdhcmUtcHJvdGVjdGlvbi5ndWFyZGR1dHkuYW1hem9uYXdzLmNvbSBzZXJ2aWNlIHRvIGFzc3VtZSB0aGUgcm9sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uR3VhcmREdXR5TWFsd2FyZVByb3RlY3Rpb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25HdWFyZER1dHlNYWx3YXJlUHJvdGVjdGlvblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gR3VhcmREdXR5IHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25HdWFyZER1dHlSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25HdWFyZER1dHlSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZSBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIEd1YXJkIER1dHkgKi9cbiAgICBwdWJsaWMgQW1hem9uR3VhcmREdXR5U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uR3VhcmREdXR5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gSGVhbHRoTGFrZSBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25IZWFsdGhMYWtlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25IZWFsdGhMYWtlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEhlYWx0aExha2Ugc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uSGVhbHRoTGFrZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkhlYWx0aExha2VSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEhvbmV5Y29kZSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIHRoZSBTREsuICovXG4gICAgcHVibGljIEFtYXpvbkhvbmV5Y29kZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSG9uZXljb2RlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gSG9uZXljb2RlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgdGhlIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uSG9uZXljb2RlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSG9uZXljb2RlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBIHNlcnZpY2UtbGlua2VkIHJvbGUgcmVxdWlyZWQgZm9yIEFtYXpvbiBIb25leWNvZGUgdG8gYWNjZXNzIHlvdXIgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Ib25leWNvZGVTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Ib25leWNvZGVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEhvbmV5Y29kZSBUZWFtIEFzc29jaWF0aW9uIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgdGhlIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uSG9uZXljb2RlVGVhbUFzc29jaWF0aW9uRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Ib25leWNvZGVUZWFtQXNzb2NpYXRpb25GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBIb25leWNvZGUgVGVhbSBBc3NvY2lhdGlvbiB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIHRoZSBTREsuICovXG4gICAgcHVibGljIEFtYXpvbkhvbmV5Y29kZVRlYW1Bc3NvY2lhdGlvblJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkhvbmV5Y29kZVRlYW1Bc3NvY2lhdGlvblJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gSG9uZXljb2RlIFdvcmtib29rIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgdGhlIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uSG9uZXljb2RlV29ya2Jvb2tGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkhvbmV5Y29kZVdvcmtib29rRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gSG9uZXljb2RlIFdvcmtib29rIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgdGhlIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uSG9uZXljb2RlV29ya2Jvb2tSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Ib25leWNvZGVXb3JrYm9va1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIEFtYXpvbiBJbnNwZWN0b3IgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBuZWVkZWQgdG8gcGVyZm9ybSBhZ2VudC1sZXNzIHNlY3VyaXR5IGFzc2Vzc21lbnRzICovXG4gICAgcHVibGljIEFtYXpvbkluc3BlY3RvcjJBZ2VudGxlc3NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25JbnNwZWN0b3IyQWdlbnRsZXNzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gSW5zcGVjdG9yIGFuZCBhY2Nlc3MgdG8gb3RoZXIgcmVsYXRlZCBzZXJ2aWNlcyBzdWNoIGFzIG9yZ2FuaXphdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvbkluc3BlY3RvcjJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkluc3BlY3RvcjJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEluc3BlY3RvciBhbmQgYWNjZXNzIHRvIG90aGVyIHJlbGF0ZWQgc2VydmljZXMgc3VjaCBhcyBvcmdhbml6YXRpb25zIHdpdGggcmVzdHJpY3RpdmUgb3JnYW5pemF0aW9uYWwgYWNjZXNzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25JbnNwZWN0b3IyRnVsbEFjY2Vzc1YyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkluc3BlY3RvcjJGdWxsQWNjZXNzVjIpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIGlzIGEgbWFuYWdlZCBwb2xpY3kgdGhhdCBjdXN0b21lciBzaG91bGQgYXR0YWNoIHRvIHRoZWlyIHJvbGVzIHRvIGNvbW11bmljYXRlIHdpdGggaW5zcGVjdG9yIHNlcnZpY2UgZm9yIENJUyBzY2FucyAqL1xuICAgIHB1YmxpYyBBbWF6b25JbnNwZWN0b3IyTWFuYWdlZENpc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25JbnNwZWN0b3IyTWFuYWdlZENpc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gdGhlIEFtYXpvbiBpbnNwZWN0b3IyIHNlcnZpY2UgYW5kIHJlbGV2YW50IHN1cHBvcnQgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uSW5zcGVjdG9yMlJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkluc3BlY3RvcjJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBBbWF6b24gSW5zcGVjdG9yIGFjY2VzcyB0byBBV1MgU2VydmljZXMgbmVlZGVkIHRvIHBlcmZvcm0gc2VjdXJpdHkgYXNzZXNzbWVudHMgKi9cbiAgICBwdWJsaWMgQW1hem9uSW5zcGVjdG9yMlNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkluc3BlY3RvcjJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBJbnNwZWN0b3IuICovXG4gICAgcHVibGljIEFtYXpvbkluc3BlY3RvckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSW5zcGVjdG9yRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEluc3BlY3Rvci4gKi9cbiAgICBwdWJsaWMgQW1hem9uSW5zcGVjdG9yUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uSW5zcGVjdG9yUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgQW1hem9uIEluc3BlY3RvciBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIG5lZWRlZCB0byBwZXJmb3JtIHNlY3VyaXR5IGFzc2Vzc21lbnRzICovXG4gICAgcHVibGljIEFtYXpvbkluc3BlY3RvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkluc3BlY3RvclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIEtlbmRyYSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbktlbmRyYUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2VuZHJhRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEtlbmRyYSB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbktlbmRyYVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktlbmRyYVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBmdWxsIGFjY2VzcyB0byBBbWF6b24gS2V5c3BhY2VzICovXG4gICAgcHVibGljIEFtYXpvbktleXNwYWNlc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2V5c3BhY2VzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gS2V5c3BhY2VzICovXG4gICAgcHVibGljIEFtYXpvbktleXNwYWNlc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktleXNwYWNlc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBLZXlzcGFjZXMgYW5kIHJlbGF0ZWQgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25LZXlzcGFjZXNSZWFkT25seUFjY2Vzc1YyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktleXNwYWNlc1JlYWRPbmx5QWNjZXNzVjIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gS2luZXNpcyBBbmFseXRpY3MgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25LaW5lc2lzQW5hbHl0aWNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25LaW5lc2lzQW5hbHl0aWNzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIEtpbmVzaXMgQW5hbHl0aWNzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uS2luZXNpc0FuYWx5dGljc1JlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktpbmVzaXNBbmFseXRpY3NSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBBbWF6b24gS2luZXNpcyBGaXJlaG9zZSBEZWxpdmVyeSBTdHJlYW1zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25LaW5lc2lzRmlyZWhvc2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktpbmVzaXNGaXJlaG9zZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFsbCBBbWF6b24gS2luZXNpcyBGaXJlaG9zZSBEZWxpdmVyeSBTdHJlYW1zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25LaW5lc2lzRmlyZWhvc2VSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25LaW5lc2lzRmlyZWhvc2VSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBzdHJlYW1zIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uS2luZXNpc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uS2luZXNpc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFsbCBzdHJlYW1zIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uS2luZXNpc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbktpbmVzaXNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBLaW5lc2lzIFZpZGVvIFN0cmVhbXMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25LaW5lc2lzVmlkZW9TdHJlYW1zRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25LaW5lc2lzVmlkZW9TdHJlYW1zRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIEtpbmVzaXMgVmlkZW8gU3RyZWFtcyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvbktpbmVzaXNWaWRlb1N0cmVhbXNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25LaW5lc2lzVmlkZW9TdHJlYW1zUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBGdWxsIGFjY2VzcyB0byBBV1MgTGF1bmNoIHdpemFyZCBhbmQgb3RoZXIgcmVxdWlyZWQgc2VydmljZXMuICovXG4gICAgcHVibGljIEFtYXpvbkxhdW5jaFdpemFyZEZ1bGxBY2Nlc3NWMigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25MYXVuY2hXaXphcmRGdWxsQWNjZXNzVjIpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgY3VzdG9tZXJzIHRvIGNhbGwgTGV4IHJ1bnRpbWUgZnJvbSBjaGFubmVscyAqL1xuICAgIHB1YmxpYyBBbWF6b25MZXhDaGFubmVsc0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25MZXhDaGFubmVsc0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBMZXggdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAgQWxzbyBwcm92aWRlcyBhY2Nlc3MgdG8gY3JlYXRlIExleCBTZXJ2aWNlIExpbmtlZCBSb2xlcyBhbmQgZ3JhbnQgTGV4IHBlcm1pc3Npb25zIHRvIGludm9rZSBhIGxpbWl0ZWQgc2V0IG9mIExhbWJkYSBmdW5jdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvbkxleEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTGV4RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIExleC4gKi9cbiAgICBwdWJsaWMgQW1hem9uTGV4UmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTGV4UmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIExleCB0byByZXBsaWNhdGUgTGV4IHJlc291cmNlcyBhY3Jvc3MgcmVnaW9ucyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uTGV4UmVwbGljYXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTGV4UmVwbGljYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIExleCBjb252ZXJzYXRpb25hbCBBUElzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25MZXhSdW5Cb3RzT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25MZXhSdW5Cb3RzT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIExleCBWMiBib3RzIGFjY2VzcyB0byBjYWxsIG90aGVyIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uTGV4VjJCb3RQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTGV4VjJCb3RQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTG9va291dCBmb3IgRXF1aXBtZW50IG9wZXJhdGlvbnMgKi9cbiAgICBwdWJsaWMgQW1hem9uTG9va291dEVxdWlwbWVudEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTG9va291dEVxdWlwbWVudEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBMb29rb3V0IGZvciBFcXVpcG1lbnRzICovXG4gICAgcHVibGljIEFtYXpvbkxvb2tvdXRFcXVpcG1lbnRSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Mb29rb3V0RXF1aXBtZW50UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHaXZlcyBhY2Nlc3MgdG8gYWxsIGFjdGlvbnMgZm9yIEFtYXpvbiBMb29rb3V0IGZvciBNZXRyaWNzICovXG4gICAgcHVibGljIEFtYXpvbkxvb2tvdXRNZXRyaWNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Mb29rb3V0TWV0cmljc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHaXZlcyBhY2Nlc3MgdG8gYWxsIHJlYWQtb25seSBhY3Rpb25zIGZvciBBbWF6b24gTG9va291dCBmb3IgTWV0cmljcyAqL1xuICAgIHB1YmxpYyBBbWF6b25Mb29rb3V0TWV0cmljc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkxvb2tvdXRNZXRyaWNzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTG9va291dCBmb3IgVmlzaW9uIGFuZCBzY29wZWQgYWNjZXNzIHRvIHJlcXVpcmVkIHNlcnZpY2UgYW5kIGNvbnNvbGUgZGVwZW5kZW5jaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Mb29rb3V0VmlzaW9uQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTG9va291dFZpc2lvbkNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gTG9va291dCBmb3IgVmlzaW9uIGFuZCBzY29wZWQgYWNjZXNzIHRvIHJlcXVpcmVkIHNlcnZpY2UgYW5kIGNvbnNvbGUgZGVwZW5kZW5jaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Mb29rb3V0VmlzaW9uQ29uc29sZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbkxvb2tvdXRWaXNpb25Db25zb2xlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTG9va291dCBmb3IgVmlzaW9uIGFuZCBzY29wZWQgYWNjZXNzIHRvIHJlcXVpcmVkIGRlcGVuZGVuY2llcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTG9va291dFZpc2lvbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTG9va291dFZpc2lvbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBMb29rb3V0IGZvciBWaXNpb24gYW5kIHNjb3BlZCBhY2Nlc3MgdG8gcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Mb29rb3V0VmlzaW9uUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTG9va291dFZpc2lvblJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHVzZXJzIHBlcm1pc3Npb24gdG8gcmVxdWVzdCBBbWF6b24gTWFjaGluZSBMZWFybmluZyBiYXRjaCBwcmVkaWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWFjaGluZUxlYXJuaW5nQmF0Y2hQcmVkaWN0aW9uc0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNoaW5lTGVhcm5pbmdCYXRjaFByZWRpY3Rpb25zQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgY3JlYXRlIGFjY2VzcyBmb3Igbm9uLXByZWRpY3Rpb24gQW1hem9uIE1hY2hpbmUgTGVhcm5pbmcgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNoaW5lTGVhcm5pbmdDcmVhdGVPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1hY2hpbmVMZWFybmluZ0NyZWF0ZU9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTWFjaGluZSBMZWFybmluZyByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbk1hY2hpbmVMZWFybmluZ0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaGluZUxlYXJuaW5nRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyB1c2VycyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbmQgZGVsZXRlIHRoZSByZWFsLXRpbWUgZW5kcG9pbnQgZm9yIEFtYXpvbiBNYWNoaW5lIExlYXJuaW5nIG1vZGVscy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWFjaGluZUxlYXJuaW5nTWFuYWdlUmVhbFRpbWVFbmRwb2ludE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaGluZUxlYXJuaW5nTWFuYWdlUmVhbFRpbWVFbmRwb2ludE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBNYWNoaW5lIExlYXJuaW5nIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWFjaGluZUxlYXJuaW5nUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaGluZUxlYXJuaW5nUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgdXNlcnMgcGVybWlzc2lvbiB0byByZXF1ZXN0IEFtYXpvbiBNYWNoaW5lIExlYXJuaW5nIHJlYWwtdGltZSBwcmVkaWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWFjaGluZUxlYXJuaW5nUmVhbFRpbWVQcmVkaWN0aW9uT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NYWNoaW5lTGVhcm5pbmdSZWFsVGltZVByZWRpY3Rpb25Pbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIE1hY2hpbmUgTGVhcm5pbmcgdG8gY29uZmlndXJlIGFuZCB1c2UgeW91ciBSZWRzaGlmdCBDbHVzdGVycyBhbmQgUzMgU3RhZ2luZyBMb2NhdGlvbnMgZm9yIFJlZHNoaWZ0IERhdGEgU291cmNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNoaW5lTGVhcm5pbmdSb2xlZm9yUmVkc2hpZnREYXRhU291cmNlVjMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaGluZUxlYXJuaW5nUm9sZWZvclJlZHNoaWZ0RGF0YVNvdXJjZVYzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIE1hY2llLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNpZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaWVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZSBzZXJ2aWNlLWxpbmtlZCByb2xlIG9mIEFtYXpvbiBNYWNpZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWFjaWVIYW5kc2hha2VSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1hY2llSGFuZHNoYWtlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBBbWF6b24gTWFjaWUuICovXG4gICAgcHVibGljIEFtYXpvbk1hY2llUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaWVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBNYWNpZSByZWFkLW9ubHkgYWNjZXNzIHRvIHJlc291cmNlIGRlcGVuZGVuY2llcyBpbiB5b3VyIGFjY291bnQgaW4gb3JkZXIgdG8gZW5hYmxlIGRhdGEgYW5hbHlzaXMuICovXG4gICAgcHVibGljIEFtYXpvbk1hY2llU2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFjaWVTZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UgbGlua2VkIHJvbGUgZm9yIEFtYXpvbiBNYWNpZSAqL1xuICAgIHB1YmxpYyBBbWF6b25NYWNpZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1hY2llU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTWFuYWdlZCBCbG9ja2NoYWluIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBBbWF6b25NYW5hZ2VkQmxvY2tjaGFpbkNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1hbmFnZWRCbG9ja2NoYWluQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTWFuYWdlZCBCbG9ja2NoYWluLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYW5hZ2VkQmxvY2tjaGFpbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWFuYWdlZEJsb2NrY2hhaW5GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gTWFuYWdlZCBCbG9ja2NoYWluLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYW5hZ2VkQmxvY2tjaGFpblJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1hbmFnZWRCbG9ja2NoYWluUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIE1hbmFnZWQgQmxvY2tjaGFpbiAqL1xuICAgIHB1YmxpYyBBbWF6b25NYW5hZ2VkQmxvY2tjaGFpblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1hbmFnZWRCbG9ja2NoYWluU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBNYW5hZ2VkIEFwYWNoZSBDYXNzYW5kcmEgU2VydmljZSAqL1xuICAgIHB1YmxpYyBBbWF6b25NQ1NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1DU0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIE1hbmFnZWQgQXBhY2hlIENhc3NhbmRyYSBTZXJ2aWNlICovXG4gICAgcHVibGljIEFtYXpvbk1DU1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1DU1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIEFQSXMgaW4gQW1hem9uIE1lY2hhbmljYWwgVHVyay4gKi9cbiAgICBwdWJsaWMgQW1hem9uTWVjaGFuaWNhbFR1cmtGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1lY2hhbmljYWxUdXJrRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byByZWFkIG9ubHkgQVBJcyBpbiBBbWF6b24gTWVjaGFuaWNhbCBUdXJrLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NZWNoYW5pY2FsVHVya1JlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1lY2hhbmljYWxUdXJrUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gTWVtb3J5REIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NZW1vcnlEQkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTWVtb3J5REJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gTWVtb3J5REIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NZW1vcnlEQlJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1lbW9yeURCUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFsbCByZXBvcnRzIGluY2x1ZGluZyBmaW5hbmNpYWwgZGF0YSBmb3IgYWxsIGFwcGxpY2F0aW9uIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uTW9iaWxlQW5hbHl0aWNzRmluYW5jaWFsUmVwb3J0QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1vYmlsZUFuYWx5dGljc0ZpbmFuY2lhbFJlcG9ydEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBhcHBsaWNhdGlvbiByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvbk1vYmlsZUFuYWx5dGljc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTW9iaWxlQW5hbHl0aWNzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gbm9uIGZpbmFuY2lhbCByZXBvcnRzIGZvciBhbGwgYXBwbGljYXRpb24gcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Nb2JpbGVBbmFseXRpY3NOb25GaW5hbmNpYWxSZXBvcnRBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTW9iaWxlQW5hbHl0aWNzTm9uRmluYW5jaWFsUmVwb3J0QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgd3JpdGUgb25seSBhY2Nlc3MgdG8gcHV0IGV2ZW50IGRhdGEgZm9yIGFsbCBhcHBsaWNhdGlvbiByZXNvdXJjZXMuIChSZWNvbW1lbmRlZCBmb3IgU0RLIGludGVncmF0aW9uKSAqL1xuICAgIHB1YmxpYyBBbWF6b25Nb2JpbGVBbmFseXRpY3NXcml0ZU9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTW9iaWxlQW5hbHl0aWNzV3JpdGVPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gbWFuYWdlIEFtYXpvbiBNb25pdHJvbiAqL1xuICAgIHB1YmxpYyBBbWF6b25Nb25pdHJvbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTW9uaXRyb25GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uTVEgdmlhIG91ciBBUEkvU0RLLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NUUFwaUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTVFBcGlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b25NUSB2aWEgb3VyIEFQSS9TREsuICovXG4gICAgcHVibGljIEFtYXpvbk1RQXBpUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTVFBcGlSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbk1RIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uTVFGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1RRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uTVEgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25NUVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1RUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIExpbmtlZCBSb2xlIFBvbGljeSBmb3IgQVdTIEFtYXpvbiBNUSAqL1xuICAgIHB1YmxpYyBBbWF6b25NUVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1RU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHJlYWRvbmx5IGFjY2VzcyB0byBBbWF6b24gTVNLIENvbm5lY3QgKi9cbiAgICBwdWJsaWMgQW1hem9uTVNLQ29ubmVjdFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk1TS0Nvbm5lY3RSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIE1TSyBhbmQgb3RoZXIgcmVxdWlyZWQgcGVybWlzc2lvbnMgZm9yIGl0cyBkZXBlbmRlbmNpZXMuICovXG4gICAgcHVibGljIEFtYXpvbk1TS0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTVNLRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgcmVhZG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBNU0sgKi9cbiAgICBwdWJsaWMgQW1hem9uTVNLUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTVNLUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgU2VydmljZSBMaW5rZWQgUm9sZSB1c2VkIGJ5IEFtYXpvbiBNYW5hZ2VkIFdvcmtmbG93cyBmb3IgQXBhY2hlIEFpcmZsb3cuICovXG4gICAgcHVibGljIEFtYXpvbk1XQUFTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25NV0FBU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWNjZXNzIHRvIHJlc291cmNlcyBuZWVkZWQgYnkgTmltYmxlIFN0dWRpbyBMYXVuY2ggUHJvZmlsZSB3b3JrZXJzLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8gRUMyIGluc3RhbmNlcyBjcmVhdGVkIGJ5IE5pbWJsZSBTdHVkaW8gQnVpbGRlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uTmltYmxlU3R1ZGlvTGF1bmNoUHJvZmlsZVdvcmtlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25OaW1ibGVTdHVkaW9MYXVuY2hQcm9maWxlV29ya2VyKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIGFjY2VzcyB0byBBbWF6b24gTmltYmxlIFN0dWRpbyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdHVkaW8gYWRtaW4gYW5kIHJlbGF0ZWQgc3R1ZGlvIHJlc291cmNlcyBpbiBvdGhlciBzZXJ2aWNlcy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHRoZSBBZG1pbiByb2xlIGFzc29jaWF0ZWQgd2l0aCB5b3VyIHN0dWRpby4gKi9cbiAgICBwdWJsaWMgQW1hem9uTmltYmxlU3R1ZGlvU3R1ZGlvQWRtaW4oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uTmltYmxlU3R1ZGlvU3R1ZGlvQWRtaW4pO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWNjZXNzIHRvIEFtYXpvbiBOaW1ibGUgU3R1ZGlvIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHN0dWRpbyB1c2VyIGFuZCByZWxhdGVkIHN0dWRpbyByZXNvdXJjZXMgaW4gb3RoZXIgc2VydmljZXMuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB0aGUgVXNlciByb2xlIGFzc29jaWF0ZWQgd2l0aCB5b3VyIHN0dWRpby4gKi9cbiAgICBwdWJsaWMgQW1hem9uTmltYmxlU3R1ZGlvU3R1ZGlvVXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25OaW1ibGVTdHVkaW9TdHVkaW9Vc2VyKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIE9yYWNsZSBEYXRhYmFzZUBBV1MgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbk9EQlNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk9EQlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIE9taWNzIGFuZCBvdGhlciByZXF1aXJlZCBBV1MgU2VydmljZXMuIFRoaXMgcG9saWN5IGFsbG93cyB0aGUgdXNlciB0byB2aWV3IGFuZCBhY2NlcHQgUkFNIHNoYXJlIGludml0YXRpb25zIHRvIGFjY2VzcyByZXNvdXJjZXMgb3V0c2lkZSBvZiB0aGUgdXNlcidzIEFXUyBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBBbWF6b25PbWljc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT21pY3NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBPbWljcyAqL1xuICAgIHB1YmxpYyBBbWF6b25PbWljc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk9taWNzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBhY2Nlc3MgdG8gYWxsIEFtYXpvbiBPbmUgRW50ZXJwcmlzZSByZXNvdXJjZXMgYW5kIG9wZXJhdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvbk9uZUVudGVycHJpc2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk9uZUVudGVycHJpc2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIGxpbWl0ZWQgcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgdGhhdCBhbGxvdyBkZXZpY2UgaW5zdGFsbGF0aW9uIGFuZCBhY3RpdmF0aW9uLiAqL1xuICAgIHB1YmxpYyBBbWF6b25PbmVFbnRlcnByaXNlSW5zdGFsbGVyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk9uZUVudGVycHJpc2VJbnN0YWxsZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcmVhZCBvbmx5IHBlcm1pc3Npb25zIHRvIGFsbCBBbWF6b24gT25lIEVudGVycHJpc2UgcmVzb3VyY2VzIGFuZCBvcGVyYXRpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25PbmVFbnRlcnByaXNlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT25lRW50ZXJwcmlzZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFtYXpvbiBPcGVuU2VhcmNoIERhc2hib2FyZHMgU2VydmljZSB0byBhY2Nlc3Mgb3RoZXIgQVdTIHNlcnZpY2VzIHN1Y2ggYXMgQ2xvdWRXYXRjaCBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBbWF6b25PcGVuU2VhcmNoRGFzaGJvYXJkc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbk9wZW5TZWFyY2hEYXNoYm9hcmRzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgT3BlblNlYXJjaCBEaXJlY3RRdWVyeSBTZXJ2aWNlIHRvIGFjY2VzcyBBV1MgR2x1ZSBBUElzIGZvciBjcmVhdGluZyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hEaXJlY3RRdWVyeUdsdWVDcmVhdGVBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT3BlblNlYXJjaERpcmVjdFF1ZXJ5R2x1ZUNyZWF0ZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gT3BlblNlYXJjaCBJbmdlc3Rpb24gdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uT3BlblNlYXJjaEluZ2VzdGlvbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT3BlblNlYXJjaEluZ2VzdGlvbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIHRoZSBBbWF6b24gT3BlblNlYXJjaCBJbmdlc3Rpb24gU2VydmljZSAqL1xuICAgIHB1YmxpYyBBbWF6b25PcGVuU2VhcmNoSW5nZXN0aW9uUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT3BlblNlYXJjaEluZ2VzdGlvblJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBPcGVuU2VhcmNoIEluZ2VzdGlvbiBTZXJ2aWNlIHRvIGFjY2VzcyBvdGhlciBBV1Mgc2VydmljZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hJbmdlc3Rpb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoSW5nZXN0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBBbWF6b24gT3BlblNlYXJjaCBTZXJ2ZXJsZXNzIHRvIGFjY2VzcyBvdGhlciBBV1Mgc2VydmljZXMgc3VjaCBhcyBDbG91ZFdhdGNoIEFQSXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hTZXJ2ZXJsZXNzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT3BlblNlYXJjaFNlcnZlcmxlc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgQW1hem9uIENvZ25pdG8gY29uZmlndXJhdGlvbiBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25PcGVuU2VhcmNoU2VydmljZUNvZ25pdG9BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT3BlblNlYXJjaFNlcnZpY2VDb2duaXRvQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFtYXpvbiBPcGVuU2VhcmNoIFNlcnZpY2UgY29uZmlndXJhdGlvbiBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25PcGVuU2VhcmNoU2VydmljZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT3BlblNlYXJjaFNlcnZpY2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgQW1hem9uIE9wZW5TZWFyY2ggU2VydmljZSBjb25maWd1cmF0aW9uIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hTZXJ2aWNlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uT3BlblNlYXJjaFNlcnZpY2VSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IEFtYXpvbiBPcGVuU2VhcmNoIFNlcnZpY2UgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcyBzdWNoIGFzIEVDMiBOZXR3b3JraW5nIEFQSXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvbk9wZW5TZWFyY2hTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25PcGVuU2VhcmNoU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUGVyc29uYWxpemUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCBTREsuIEFsc28gcHJvdmlkZXMgc2VsZWN0IGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIChlLmcuLCBTMywgQ2xvdWRXYXRjaCkuICovXG4gICAgcHVibGljIEFtYXpvblBlcnNvbmFsaXplRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25QZXJzb25hbGl6ZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFBvbGx5IHNlcnZpY2UgYW5kIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUG9sbHlGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblBvbGx5RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBQb2xseSByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvblBvbGx5UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUG9sbHlSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyB0byBBV1MgTWFuYWdlZCBQcm9tZXRoZXVzIHJlc291cmNlcyBpbiB0aGUgQVdTIGNvbnNvbGUgKi9cbiAgICBwdWJsaWMgQW1hem9uUHJvbWV0aGV1c0NvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblByb21ldGhldXNDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyB0byBBV1MgTWFuYWdlZCBQcm9tZXRoZXVzIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25Qcm9tZXRoZXVzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Qcm9tZXRoZXVzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBhY2Nlc3MgdG8gcnVuIHF1ZXJpZXMgYWdhaW5zdCBBV1MgTWFuYWdlZCBQcm9tZXRoZXVzIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25Qcm9tZXRoZXVzUXVlcnlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUHJvbWV0aGV1c1F1ZXJ5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHdyaXRlIG9ubHkgYWNjZXNzIHRvIEFXUyBNYW5hZ2VkIFByb21ldGhldXMgd29ya3NwYWNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25Qcm9tZXRoZXVzUmVtb3RlV3JpdGVBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUHJvbWV0aGV1c1JlbW90ZVdyaXRlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBSZXNvdXJjZXMgbWFuYWdlZCBvciB1c2VkIGJ5IEFtYXpvbiBNYW5hZ2VkIFNlcnZpY2UgZm9yIFByb21ldGhldXMgQ29sbGVjdG9yICovXG4gICAgcHVibGljIEFtYXpvblByb21ldGhldXNTY3JhcGVyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUHJvbWV0aGV1c1NjcmFwZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGRldmVsb3BlciBhY2Nlc3MgdG8gZW5hYmxlIGludGVyYWN0aW9ucyB3aXRoIEFtYXpvbiBRICovXG4gICAgcHVibGljIEFtYXpvblFEZXZlbG9wZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUURldmVsb3BlckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGVuYWJsZSBpbnRlcmFjdGlvbnMgd2l0aCBBbWF6b24gUSAqL1xuICAgIHB1YmxpYyBBbWF6b25RRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25RRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBRTERCIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUUxEQkNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblFMREJDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBRTERCIHZpYSB0aGUgc2VydmljZSBBUEkuICovXG4gICAgcHVibGljIEFtYXpvblFMREJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblFMREJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gUUxEQi4gKi9cbiAgICBwdWJsaWMgQW1hem9uUUxEQlJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblFMREJSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gUkRTIHRvIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNCZXRhU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUkRTQmV0YVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBSRFMgQ3VzdG9tIHRvIHBlcmZvcm0gdmFyaW91cyBhdXRvbWF0aW9uIGFjdGlvbnMgYW5kIGRhdGFiYXNlIG1hbmFnZW1lbnQgdGFza3MgdGhyb3VnaCBhbiBFQzIgaW5zdGFuY2UgcHJvZmlsZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUkRTQ3VzdG9tSW5zdGFuY2VQcm9maWxlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNDdXN0b21JbnN0YW5jZVByb2ZpbGVSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIFJEUyBDdXN0b20gUHJldmlldyBTZXJ2aWNlIFJvbGUgUG9saWN5ICovXG4gICAgcHVibGljIEFtYXpvblJEU0N1c3RvbVByZXZpZXdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNDdXN0b21QcmV2aWV3U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIFJEUyBDdXN0b20gdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvblJEU0N1c3RvbVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU0N1c3RvbVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGZ1bGwgYWNjZXNzIHRvIHVzZSB0aGUgUkRTIGRhdGEgQVBJcywgc2VjcmV0IHN0b3JlIEFQSXMgZm9yIFJEUyBkYXRhYmFzZSBjcmVkZW50aWFscywgYW5kIERCIGNvbnNvbGUgcXVlcnkgbWFuYWdlbWVudCBBUElzIHRvIGV4ZWN1dGUgU1FMIHN0YXRlbWVudHMgb24gQXVyb3JhIFNlcnZlcmxlc3MgY2x1c3RlcnMgaW4gdGhlIEFXUyBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNEYXRhRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNEYXRhRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IFJEUyB0byBhY2Nlc3MgRGlyZWN0b3J5IFNlcnZpY2UgTWFuYWdlZCBBRCBvbiBiZWhhbGYgb2YgdGhlIGN1c3RvbWVyIGZvciBkb21haW4tam9pbmVkIFNRTCBTZXJ2ZXIgREIgaW5zdGFuY2VzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNEaXJlY3RvcnlTZXJ2aWNlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU0RpcmVjdG9yeVNlcnZpY2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQ2xvdWR3YXRjaCBmb3IgUkRTIEVuaGFuY2VkIE1vbml0b3JpbmcgKi9cbiAgICBwdWJsaWMgQW1hem9uUkRTRW5oYW5jZWRNb25pdG9yaW5nUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNFbmhhbmNlZE1vbml0b3JpbmdSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFJEUyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblJEU0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUkRTRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIFJEUyBQZXJmb3JtYW5jZSBJbnNpZ2h0cyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgKi9cbiAgICBwdWJsaWMgQW1hem9uUkRTUGVyZm9ybWFuY2VJbnNpZ2h0c0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUkRTUGVyZm9ybWFuY2VJbnNpZ2h0c0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBSZWFkLU9ubHkgcG9saWN5IGZvciBSRFMgUGVyZm9ybWFuY2UgSW5zaWdodHMgKi9cbiAgICBwdWJsaWMgQW1hem9uUkRTUGVyZm9ybWFuY2VJbnNpZ2h0c1JlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJEU1BlcmZvcm1hbmNlSW5zaWdodHNSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBSRFMgUHJldmlldyBTZXJ2aWNlIFJvbGUgUG9saWN5ICovXG4gICAgcHVibGljIEFtYXpvblJEU1ByZXZpZXdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNQcmV2aWV3U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBSRFMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gUkRTIHRvIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SRFNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SRFNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIHJ1biBTUUwgY29tbWFuZHMgdG8gY29weSwgbG9hZCwgdW5sb2FkLCBxdWVyeSwgYW5kIGFuYWx5emUgZGF0YSBvbiBBbWF6b24gUmVkc2hpZnQuIFRoZSBwb2xpY3kgYWxzbyBncmFudHMgcGVybWlzc2lvbnMgdG8gcnVuIHNlbGVjdCBzdGF0ZW1lbnRzIGZvciByZWxhdGVkIHNlcnZpY2VzLCBzdWNoIGFzIEFtYXpvbiBTMywgQW1hem9uIENsb3VkV2F0Y2ggbG9ncywgQW1hem9uIFNhZ2VNYWtlciwgb3IgQVdTIEdsdWUuICovXG4gICAgcHVibGljIEFtYXpvblJlZHNoaWZ0QWxsQ29tbWFuZHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJlZHNoaWZ0QWxsQ29tbWFuZHNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFJlZHNoaWZ0IERhdGEgQVBJcy4gVGhpcyBwb2xpY3kgYWxzbyBncmFudHMgc2NvcGVkIGFjY2VzcyB0byBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVkc2hpZnREYXRhRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWRzaGlmdERhdGFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFJlZHNoaWZ0IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVkc2hpZnRGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJlZHNoaWZ0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBbWF6b24gUmVkc2hpZnQgUXVlcnkgRWRpdG9yIGFuZCB0byBzYXZlZCBxdWVyaWVzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVkc2hpZnRRdWVyeUVkaXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBbWF6b24gUmVkc2hpZnQgUXVlcnkgRWRpdG9yIFYyIG9wZXJhdGlvbnMgYW5kIHJlc291cmNlcy4gVGhpcyBwb2xpY3kgYWxzbyBncmFudHMgYWNjZXNzIHRvIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzLiBUaGlzIGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIGxpc3QgdGhlIEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVycywgcmVhZCBrZXlzIGFuZCBhbGlhc2VzIGluIEFXUyBLTVMgYW5kIG1hbmFnZSB0aGUgUXVlcnkgRWRpdG9yIFYyIHNlY3JldHMgaW4gQVdTIFNlY3JldHMgTWFuYWdlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVkc2hpZnRRdWVyeUVkaXRvclYyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yVjJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHRoZSBhYmlsaXR5IHRvIHdvcmsgd2l0aCBBbWF6b24gUmVkc2hpZnQgUXVlcnkgRWRpdG9yIFYyIHdpdGhvdXQgc2hhcmluZyByZXNvdXJjZXMuIFRoZSBncmFudGVkIHByaW5jaXBhbCBjYW4gb25seSByZWFkLCB1cGRhdGUgYW5kIGRlbGV0ZSBpdHMgb3duIHJlc291cmNlcyBidXQgY2Fubm90IHNoYXJlIHRoZW0uIFRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIGFjY2VzcyB0byBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcy4gVGhpcyBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byBsaXN0IHRoZSBBbWF6b24gUmVkc2hpZnQgY2x1c3RlcnMgYW5kIG1hbmFnZSB0aGUgUXVlcnkgRWRpdG9yIFYyIHNlY3JldHMgb2YgdGhlIHByaW5jaXBhbCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yVjJOb1NoYXJpbmcoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUmVkc2hpZnRRdWVyeUVkaXRvclYyTm9TaGFyaW5nKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHRoZSBhYmlsaXR5IHRvIHdvcmsgd2l0aCBBbWF6b24gUmVkc2hpZnQgUXVlcnkgRWRpdG9yIFYyIHdpdGggbGltaXRlZCBzaGFyaW5nIG9mIHJlc291cmNlcy4gVGhlIGdyYW50ZWQgcHJpbmNpcGFsIGNhbiByZWFkLCB3cml0ZSBhbmQgc2hhcmUgaXRzIG93biByZXNvdXJjZXMuIFRoZSBncmFudGVkIHByaW5jaXBhbCBjYW4gcmVhZCB0aGUgcmVzb3VyY2VzIHNoYXJlZCB3aXRoIGl0cyB0ZWFtIGJ1dCBjYW5ub3QgdXBkYXRlIHRoZW0uIFRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIGFjY2VzcyB0byBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcy4gVGhpcyBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byBsaXN0IHRoZSBBbWF6b24gUmVkc2hpZnQgY2x1c3RlcnMgYW5kIG1hbmFnZSB0aGUgUXVlcnkgRWRpdG9yIFYyIHNlY3JldHMgb2YgdGhlIHByaW5jaXBhbCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yVjJSZWFkU2hhcmluZygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWRzaGlmdFF1ZXJ5RWRpdG9yVjJSZWFkU2hhcmluZyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyB0aGUgYWJpbGl0eSB0byB3b3JrIHdpdGggQW1hem9uIFJlZHNoaWZ0IFF1ZXJ5IEVkaXRvciBWMiB3aXRoIHNoYXJpbmcgb2YgcmVzb3VyY2VzLiBUaGUgZ3JhbnRlZCBwcmluY2lwYWwgY2FuIHJlYWQsIHdyaXRlIGFuZCBzaGFyZSBpdHMgb3duIHJlc291cmNlcy4gVGhlIGdyYW50ZWQgcHJpbmNpcGFsIGNhbiByZWFkIGFuZCB1cGRhdGUgdGhlIHJlc291cmNlcyBzaGFyZWQgd2l0aCBpdHMgdGVhbS4gVGhpcyBwb2xpY3kgYWxzbyBncmFudHMgYWNjZXNzIHRvIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzLiBUaGlzIGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIGxpc3QgdGhlIEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVycyBhbmQgbWFuYWdlIHRoZSBRdWVyeSBFZGl0b3IgVjIgc2VjcmV0cyBvZiB0aGUgcHJpbmNpcGFsIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuICovXG4gICAgcHVibGljIEFtYXpvblJlZHNoaWZ0UXVlcnlFZGl0b3JWMlJlYWRXcml0ZVNoYXJpbmcoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUmVkc2hpZnRRdWVyeUVkaXRvclYyUmVhZFdyaXRlU2hhcmluZyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFJlZHNoaWZ0IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uUmVkc2hpZnRSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWRzaGlmdFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBSZWRzaGlmdCB0byBjYWxsIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWRzaGlmdFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJlZHNoaWZ0U2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBzcGVjaWZpZXMgcmVrb2duaXRpb24gYW5kIHMzIHBlcm1pc3Npb25zIHJlcXVpcmVkIGJ5IEFtYXpvbiBSZWtvZ25pdGlvbiBDdXN0b20gTGFiZWxzIGZlYXR1cmUuICovXG4gICAgcHVibGljIEFtYXpvblJla29nbml0aW9uQ3VzdG9tTGFiZWxzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWtvZ25pdGlvbkN1c3RvbUxhYmVsc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBY2Nlc3MgdG8gYWxsIEFtYXpvbiBSZWtvZ25pdGlvbiBBUElzICovXG4gICAgcHVibGljIEFtYXpvblJla29nbml0aW9uRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25SZWtvZ25pdGlvbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBY2Nlc3MgdG8gYWxsIFJlYWQgcmVrb2duaXRpb24gQVBJcyAqL1xuICAgIHB1YmxpYyBBbWF6b25SZWtvZ25pdGlvblJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJla29nbml0aW9uUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgUmVrb2duaXRpb24gdG8gY2FsbCBBV1Mgc2VydmljZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFtYXpvblJla29nbml0aW9uU2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUmVrb2duaXRpb25TZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBSb3V0ZSA1MyBBdXRvIE5hbWluZyBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzQXV0b05hbWluZ0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M0F1dG9OYW1pbmdGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBhbGwgUm91dGUgNTMgQXV0byBOYW1pbmcgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M0F1dG9OYW1pbmdSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzQXV0b05hbWluZ1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVnaXN0cmFudCBsZXZlbCBhY2Nlc3MgdG8gUm91dGUgNTMgQXV0byBOYW1pbmcgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M0F1dG9OYW1pbmdSZWdpc3RyYW50QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJvdXRlNTNBdXRvTmFtaW5nUmVnaXN0cmFudEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBSb3V0ZTUzIERvbWFpbnMgYWN0aW9ucyBhbmQgQ3JlYXRlIEhvc3RlZCBab25lIHRvIGFsbG93IEhvc3RlZCBab25lIGNyZWF0aW9uIGFzIHBhcnQgb2YgZG9tYWluIHJlZ2lzdHJhdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNEb21haW5zRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzRG9tYWluc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gUm91dGU1MyBEb21haW5zIGxpc3QgYW5kIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNEb21haW5zUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M0RvbWFpbnNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBBbWF6b24gUm91dGUgNTMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUm91dGUgNTMgUHJvZmlsZSByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNQcm9maWxlc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1Byb2ZpbGVzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBSb3V0ZSA1MyBQcm9maWxlIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M1Byb2ZpbGVzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1Byb2ZpbGVzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIGFsbCBBbWF6b24gUm91dGUgNTMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFJvdXRlIDUzIFJlY292ZXJ5IENsdXN0ZXIgKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M1JlY292ZXJ5Q2x1c3RlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1JlY292ZXJ5Q2x1c3RlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBSb3V0ZSA1MyBSZWNvdmVyeSBDbHVzdGVyICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNSZWNvdmVyeUNsdXN0ZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Sb3V0ZTUzUmVjb3ZlcnlDbHVzdGVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gUm91dGUgNTMgUmVjb3ZlcnkgQ29udHJvbCBDb25maWcgKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M1JlY292ZXJ5Q29udHJvbENvbmZpZ0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1JlY292ZXJ5Q29udHJvbENvbmZpZ0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBSb3V0ZSA1MyBSZWNvdmVyeSBDb250cm9sIENvbmZpZyAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzUmVjb3ZlcnlDb250cm9sQ29uZmlnUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1JlY292ZXJ5Q29udHJvbENvbmZpZ1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFJvdXRlIDUzIFJlY292ZXJ5IFJlYWRpbmVzcyAqL1xuICAgIHB1YmxpYyBBbWF6b25Sb3V0ZTUzUmVjb3ZlcnlSZWFkaW5lc3NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJvdXRlNTNSZWNvdmVyeVJlYWRpbmVzc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBSb3V0ZSA1MyBSZWNvdmVyeSBSZWFkaW5lc3MgKi9cbiAgICBwdWJsaWMgQW1hem9uUm91dGU1M1JlY292ZXJ5UmVhZGluZXNzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1JlY292ZXJ5UmVhZGluZXNzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBGdWxsIGFjY2VzcyBwb2xpY3kgZm9yIFJvdXRlIDUzIFJlc29sdmVyICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNSZXNvbHZlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUm91dGU1M1Jlc29sdmVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFJlYWQgb25seSBwb2xpY3kgZm9yIFJvdXRlIDUzIFJlc29sdmVyICovXG4gICAgcHVibGljIEFtYXpvblJvdXRlNTNSZXNvbHZlclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblJvdXRlNTNSZXNvbHZlclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIGJ1Y2tldHMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TM0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUzNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIExhbWJkYSBmdW5jdGlvbnMgcGVybWlzc2lvbnMgdG8gaW50ZXJhY3Qgd2l0aCBBbWF6b24gUzMgT2JqZWN0IExhbWJkYS4gQWxzbyBncmFudHMgTGFtYmRhIHBlcm1pc3Npb25zIHRvIHdyaXRlIHRvIENsb3VkV2F0Y2ggTG9ncy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUzNPYmplY3RMYW1iZGFFeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblMzT2JqZWN0TGFtYmRhRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBTMyBvbiBPdXRwb3N0cyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblMzT3V0cG9zdHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblMzT3V0cG9zdHNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gUzMgb24gT3V0cG9zdHMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TM091dHBvc3RzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUzNPdXRwb3N0c1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBhbGwgYnVja2V0cyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblMzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUzNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBTMyB0YWJsZSBidWNrZXRzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TM1RhYmxlc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uUzNUYWJsZXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBtYW5hZ2VkIHBvbGljeSBncmFudHMgQVdTIExha2UgRm9ybWF0aW9uIHBlcm1pc3Npb25zIHRvIGFjdCBvbiBhbGwgdGFibGUgYnVja2V0cywgbmFtZXNwYWNlcywgYW5kIHRhYmxlcyB3aXRoaW4gdGhlIGFjY291bnQuICovXG4gICAgcHVibGljIEFtYXpvblMzVGFibGVzTGFrZUZvcm1hdGlvblNlcnZpY2VSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblMzVGFibGVzTGFrZUZvcm1hdGlvblNlcnZpY2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBhbGwgUzMgdGFibGUgYnVja2V0cy4gKi9cbiAgICBwdWJsaWMgQW1hem9uUzNUYWJsZXNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TM1RhYmxlc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSByb2xlIHBvbGljeSB1c2VkIGJ5IHRoZSBBV1MgU2VydmljZSBDYXRhbG9nIHNlcnZpY2UgdG8gcHJvdmlzaW9uIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBDb2RlUGlwZWxpbmUsIENvZGVCdWlsZCwgQ29kZUNvbW1pdCwgR2x1ZSwgQ2xvdWRGb3JtYXRpb24sIGV0YywuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckFkbWluU2VydmljZUNhdGFsb2dQcm9kdWN0c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckFkbWluU2VydmljZUNhdGFsb2dQcm9kdWN0c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIEFtYXpvbiBTYWdlTWFrZXIgQ2FudmFzIHRvIHVzZSBBSSBzZXJ2aWNlcyB0byBzdXBwb3J0IHJlYWR5IHRvIHVzZSBBSSBzb2x1dGlvbnMuIFRoaXMgcG9saWN5IHdpbGwgYWRkIG1vcmUgbXV0YXRpbmcgcGVybWlzc2lvbnMgZm9yIHNlcnZpY2VzIGFzIEFtYXpvbiBTYWdlTWFrZXIgQ2FudmFzIGFkZHMgc3VwcG9ydC4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyQ2FudmFzQUlTZXJ2aWNlc0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJDYW52YXNBSVNlcnZpY2VzQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIHVzZSBBbWF6b24gQmVkcm9jayBpbiBTYWdlTWFrZXIgQ2FudmFzIGJ5IHByb3ZpZGluZyBhY2Nlc3MgdG8gZG93bnN0cmVhbSBzZXJ2aWNlcyBzdWNoIGFzIFMzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJDYW52YXNCZWRyb2NrQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNhbnZhc0JlZHJvY2tBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gU2FnZU1ha2VyIHJlc291cmNlcyBhbmQgb3BlcmF0aW9ucyBmb3IgZGF0YSBwcmVwYXJhdGlvbiBpbiBDYW52YXMuIFRoZSBwb2xpY3kgYWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgKGUuZy4sIFMzLCBJQU0sIEtNUywgUkRTLCBDbG91ZFdhdGNoIExvZ3MsIFJlZHNoaWZ0LCBBdGhlbmEsIEdsdWUsIEV2ZW50QnJpZGdlLCBTZWNyZXRzIE1hbmFnZXIpLiBUaGlzIHBvbGljeSBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIEFtYXpvbiBTYWdlTWFrZXIgRG9tYWluL1VzZXIgUHJvZmlsZSBleGVjdXRpb24gcm9sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyQ2FudmFzRGF0YVByZXBGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNhbnZhc0RhdGFQcmVwRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gU2FnZU1ha2VyIENhbnZhcyB0byBjcmVhdGUsIG1hbmFnZSBhbmQgdmlldyBlbmRwb2ludCBkZXRhaWxzIGZvciBlbmRwb2ludHMgY3JlYXRlZCB0aHJvdWdoIENhbnZhcy4gQWxsb3dzIEFtYXpvbiBTYWdlTWFrZXIgQ2FudmFzIHRvIHJldHJpZXZlIGVuZHBvaW50IGludm9jYXRpb24gbWV0cmljcyBmcm9tIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckNhbnZhc0RpcmVjdERlcGxveUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJDYW52YXNEaXJlY3REZXBsb3lBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gQW1hem9uIEVNUiBTZXJ2ZXJsZXNzIGZvciBzZXJ2aWNlcyBzdWNoIGFzIFMzLCB1c2VkIGJ5IEFtYXpvbiBTYWdlTWFrZXIgQ2FudmFzIGZvciBsYXJnZSBkYXRhIHByb2Nlc3NpbmcuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckNhbnZhc0VNUlNlcnZlcmxlc3NFeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNhbnZhc0VNUlNlcnZlcmxlc3NFeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIGNvbW1vbmx5IG5lZWRlZCB0byB1c2UgU2FnZU1ha2VyIENhbnZhcyB3aXRoIEFtYXpvbiBGb3JlY2FzdC4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyQ2FudmFzRm9yZWNhc3RBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyQ2FudmFzRm9yZWNhc3RBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gU2FnZU1ha2VyIENhbnZhcyByZXNvdXJjZXMgYW5kIG9wZXJhdGlvbnMuIFRoZSBwb2xpY3kgYWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgKGUuZy4sIFMzLCBJQU0sIFZQQywgRUNSLCBDbG91ZFdhdGNoIExvZ3MsIFJlZHNoaWZ0LCBTZWNyZXRzIE1hbmFnZXIsIGFuZCBGb3JlY2FzdCkuIFRoaXMgcG9saWN5IHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgQW1hem9uIFNhZ2VNYWtlciBEb21haW4vVXNlciBQcm9maWxlIGV4ZWN1dGlvbiByb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJDYW52YXNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNhbnZhc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgQW1hem9uIFNhZ2VNYWtlciBDYW52YXMgdG8gdXNlIHRoZSBTYWdlTWFrZXIgRGF0YSBTY2llbmNlIEFzc2lzdGFudCBzZXJ2aWNlLiBUaGUgRGF0YSBTY2llbmNlIEFzc2lzdGFudCBjdXJyZW50bHkgdXNlcyBib3RoIEFtYXpvbiBTYWdlTWFrZXIgYW5kIEFtYXpvbiBRIERldmVsb3BlciB0byBwcm9jZXNzIHVzZXIgcHJvbXB0cy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyQ2FudmFzU01EYXRhU2NpZW5jZUFzc2lzdGFudEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJDYW52YXNTTURhdGFTY2llbmNlQXNzaXN0YW50QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIGNvbW1vbmx5IG5lZWRlZCB0byB1c2UgQW1hem9uIFNhZ2VNYWtlciBDbHVzdGVyLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJDbHVzdGVySW5zdGFuY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckNsdXN0ZXJJbnN0YW5jZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBNYW5hZ2VkIHBvbGljeSBmb3IgU2VydmljZSBMaW5rZWQgUm9sZSBmb3IgQW1hem9uIFNhZ2VNYWtlciBDb3JlIFNlcnZpY2VzICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckNvcmVTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJDb3JlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyBuZWNlc3NhcnkgZm9yIFNhZ2VNYWtlciBFZGdlIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIGEgZGV2aWNlIGZsZWV0IGZvciB0aGUgY3VzdG9tZXIgdXNpbmcgdGhlIGRlZmF1bHQgY2xvdWQgY29ubmVjdGlvbi4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyRWRnZURldmljZUZsZWV0UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckVkZ2VEZXZpY2VGbGVldFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGUgb2ZmbGluZSBzdG9yZSBmb3IgYW4gQW1hem9uIFNhZ2VNYWtlciBGZWF0dXJlU3RvcmUgZmVhdHVyZSBncm91cC4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyRmVhdHVyZVN0b3JlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckZlYXR1cmVTdG9yZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBTYWdlTWFrZXIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCBTREsuIEFsc28gcHJvdmlkZXMgc2VsZWN0IGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIChlLmcuLCBTMywgRUNSLCBDbG91ZFdhdGNoIExvZ3MpLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlIGFjY2VzcyB0byBzZXJ2aWNlcyB0aGF0IGFyZSBjb21tb25seSBuZWVkZWQgdG8gdXNlIFNhZ2VNYWtlciBnZW9zcGF0aWFsLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJHZW9zcGF0aWFsRXhlY3V0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJHZW9zcGF0aWFsRXhlY3V0aW9uUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0aGF0IGFsbG93IGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBTYWdlTWFrZXIgR2Vvc3BhdGlhbCB0aHJvdWdoIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCBTREsuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckdlb3NwYXRpYWxGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckdlb3NwYXRpYWxGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBzZXJ2aWNlcyB0aGF0IGFyZSByZXF1aXJlZCB0byBydW4gU2FnZU1ha2VyIEdyb3VuZFRydXRoIExhYmVsaW5nIGpvYiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJHcm91bmRUcnV0aEV4ZWN1dGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJHcm91bmRUcnV0aEV4ZWN1dGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIHByaXZpbGVnZXMgcmVxdWlyZWQgZm9yIHNldHRpbmcgdXAgU2FnZU1ha2VyIEh5cGVyUG9kIG9ic2VydmFiaWxpdHkuIEl0IGVuYWJsZXMgYWNjZXNzIHRvIEFtYXpvbiBNYW5hZ2VkIFByb21ldGhldXMsIEFtYXpvbiBNYW5hZ2VkIEdyYWZhbmEgYW5kIEVLUyBBZGRvbnMuIFRoZSBwb2xpY3kgYWxzbyBpbmNsdWRlcyBicm9hZCBhY2Nlc3MgdG8gR3JhZmFuYSBIVFRQIEFQSXMgdGhyb3VnaCBTZXJ2aWNlQWNjb3VudFRva2VucyBhY3Jvc3MgYWxsIEFtYXpvbiBNYW5hZ2VkIEdyYWZhbmEgd29ya3NwYWNlcyBpbiB5b3VyIGFjY291bnQuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckh5cGVyUG9kT2JzZXJ2YWJpbGl0eUFkbWluQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlckh5cGVyUG9kT2JzZXJ2YWJpbGl0eUFkbWluQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIEFtYXpvbiBTYWdlTWFrZXIgSHlwZXJQb2QgdG8gcmVsYXRlZCBBV1Mgc2VydmljZXMgc3VjaCBhcyBBbWF6b24gRUtTLCBBbWF6b24gQ2xvdWRXYXRjaCBldGMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckh5cGVyUG9kU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VySHlwZXJQb2RTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIHNldCB1cCB0aGUgU2FnZU1ha2VyIEh5cGVyUG9kIHRyYWluaW5nIG9wZXJhdG9yLiBJdCBlbmFibGVzIGFjY2VzcyB0byBBbWF6b24gU2FnZU1ha2VyIEh5cGVyUG9kIGFuZCBFS1MgYWRkLW9ucy4gVGhlIHBvbGljeSBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byBkZXNjcmliZSB0aGUgU2FnZU1ha2VyIEh5cGVyUG9kIHJlc291cmNlcyBpbiB5b3VyIGFjY291bnQuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlckh5cGVyUG9kVHJhaW5pbmdPcGVyYXRvckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJIeXBlclBvZFRyYWluaW5nT3BlcmF0b3JBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gY3JlYXRlIEFtYXpvbiBBdWdtZW50ZWQgQUkgRmxvd0RlZmluaXRpb24gcmVzb3VyY2VzIGFnYWluc3QgYW55IFdvcmt0ZWFtLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJNZWNoYW5pY2FsVHVya0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJNZWNoYW5pY2FsVHVya0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgQVdTIG1hbmFnZWQgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gdXNlIGFsbCBBbWF6b24gU2FnZU1ha2VyIEdvdmVybmFuY2UgZmVhdHVyZXMuIFRoZSBwb2xpY3kgYWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgKGUuZy4sIFMzLCBLTVMpLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJNb2RlbEdvdmVybmFuY2VVc2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyTW9kZWxHb3Zlcm5hbmNlVXNlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBpcyBhIG5ldyBtYW5hZ2VkIHBvbGljeSBmb3IgTW9kZWwgUmVnaXN0cnkgaW4gU2FnZW1ha2VyLiBUaGlzIHBvbGljeSBpcyBhIHN0YW5kYWxvbmUgcG9saWN5IHRoYXQgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSB1c2VyIHJvbGUgdG8gYWNjZXNzIE1vZGVsIFJlZ2lzdHJ5IHJlbGF0ZWQgZnVuY3Rpb25hbGl0aWVzIGluIFNhZ2VtYWtlci4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyTW9kZWxSZWdpc3RyeUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyTW9kZWxSZWdpc3RyeUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBNYW5hZ2VkIHBvbGljeSBmb3IgU2VydmljZSBMaW5rZWQgUm9sZSBmb3IgQW1hem9uIFNhZ2VNYWtlciBOb3RlYm9va3MgKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyTm90ZWJvb2tzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyTm90ZWJvb2tzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIEFtYXpvbiBTYWdlTWFrZXIgcGFydG5lciBhcHAgdXNlcnMgdG8gYWNjZXNzIGFwcGxpY2F0aW9ucywgbGlzdCBhdmFpbGFibGUgYXBwbGljYXRpb25zLCBsYXVuY2ggYXBwbGljYXRpb24gd2ViIFVJcywgYW5kIGNvbm5lY3QgdmlhIHRoZSBhcHBsaWNhdGlvbiBTREsuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclBhcnRuZXJBcHBzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJQYXJ0bmVyQXBwc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIHJvbGUgcG9saWN5IHVzZWQgYnkgdGhlIEFXUyBBUElHYXRld2F5IHdpdGhpbiB0aGUgQVdTIFNlcnZpY2VDYXRhbG9nIHByb3Zpc2lvbmVkIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBMYW1iZGEgYW5kIG90aGVycy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyUGFydG5lclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNBcGlHYXRld2F5U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyUGFydG5lclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNBcGlHYXRld2F5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIHJvbGUgcG9saWN5IHVzZWQgYnkgdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiB3aXRoaW4gdGhlIEFXUyBTZXJ2aWNlQ2F0YWxvZyBwcm92aXNpb25lZCBwcm9kdWN0cyBmcm9tIEFtYXpvbiBTYWdlTWFrZXIgcG9ydGZvbGlvIG9mIHByb2R1Y3RzLiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYSBzdWJzZXQgb2YgcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgTGFtYmRhLCBBUElHYXRld2F5IGFuZCBvdGhlcnMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclBhcnRuZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzQ2xvdWRGb3JtYXRpb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJQYXJ0bmVyU2VydmljZUNhdGFsb2dQcm9kdWN0c0Nsb3VkRm9ybWF0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIHJvbGUgcG9saWN5IHVzZWQgYnkgdGhlIEFXUyBMYW1iZGEgd2l0aGluIHRoZSBBV1MgU2VydmljZUNhdGFsb2cgcHJvdmlzaW9uZWQgcHJvZHVjdHMgZnJvbSBBbWF6b24gU2FnZU1ha2VyIHBvcnRmb2xpbyBvZiBwcm9kdWN0cy4gR3JhbnRzIHBlcm1pc3Npb25zIHRvIGEgc2V0IG9mIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIFNlY3JldHMgTWFuYWdlciBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJQYXJ0bmVyU2VydmljZUNhdGFsb2dQcm9kdWN0c0xhbWJkYVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclBhcnRuZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzTGFtYmRhU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIEFtYXpvbiBNYW5hZ2VkIFBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgY29tbW9ubHkgbmVlZGVkIGZvciB1c2Ugd2l0aCBDYWxsYmFjayBzdGVwcyBhbmQgTGFtYmRhIHN0ZXBzIGluIFNhZ2VNYWtlciBNb2RlbCBCdWlsZGluZyBQaXBlbGluZXMuIEl0IGlzIGFkZGVkIHRvIHRoZSBBbWF6b25TYWdlTWFrZXItRXhlY3V0aW9uUm9sZSB0aGF0IGNhbiBiZSBjcmVhdGVkIHdoZW4gc2V0dGluZyB1cCBTYWdlTWFrZXIgU3R1ZGlvLiBJdCBjYW4gYWxzbyBiZSBhdHRhY2hlZCB0byBhbnkgb3RoZXIgcm9sZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgYXV0aG9yaW5nIG9yIGV4ZWN1dGluZyBwaXBlbGluZXMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclBpcGVsaW5lc0ludGVncmF0aW9ucygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJQaXBlbGluZXNJbnRlZ3JhdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSB3aWxsIGJlIHVzZWQgQnkgU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvcyB0byBjcmVhdGUgVlBDIHJlbGF0ZWQgcmVzb3VyY2VzIGZvciBRdWlja1NpZ2h0ICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclF1aWNrU2lnaHRWUENQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyUXVpY2tTaWdodFZQQ1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFNhZ2VNYWtlciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIHJvbGUgcG9saWN5IHVzZWQgYnkgdGhlIEFXUyBBUElHYXRld2F5IHdpdGhpbiB0aGUgQVdTIFNlcnZpY2VDYXRhbG9nIHByb3Zpc2lvbmVkIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBDbG91ZFdhdGNoIExvZ3MgYW5kIG90aGVycy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0FwaUdhdGV3YXlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzQXBpR2F0ZXdheVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSByb2xlIHBvbGljeSB1c2VkIGJ5IHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gd2l0aGluIHRoZSBBV1MgU2VydmljZUNhdGFsb2cgcHJvdmlzaW9uZWQgcHJvZHVjdHMgZnJvbSBBbWF6b24gU2FnZU1ha2VyIHBvcnRmb2xpbyBvZiBwcm9kdWN0cy4gR3JhbnRzIHBlcm1pc3Npb25zIHRvIGEgc3Vic2V0IG9mIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIFNhZ2VNYWtlciBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzQ2xvdWRmb3JtYXRpb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzQ2xvdWRmb3JtYXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIENvZGVCdWlsZCB3aXRoaW4gdGhlIEFXUyBTZXJ2aWNlQ2F0YWxvZyBwcm92aXNpb25lZCBwcm9kdWN0cyBmcm9tIEFtYXpvbiBTYWdlTWFrZXIgcG9ydGZvbGlvIG9mIHByb2R1Y3RzLiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYSBzdWJzZXQgb2YgcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgQ29kZVBpcGVsaW5lLCBDb2RlQnVpbGQgYW5kIG90aGVycy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0NvZGVCdWlsZFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNDb2RlQnVpbGRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIENvZGVQaXBlbGluZSB3aXRoaW4gdGhlIEFXUyBTZXJ2aWNlQ2F0YWxvZyBwcm92aXNpb25lZCBwcm9kdWN0cyBmcm9tIEFtYXpvbiBTYWdlTWFrZXIgcG9ydGZvbGlvIG9mIHByb2R1Y3RzLiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYSBzdWJzZXQgb2YgcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgQ29kZVBpcGVsaW5lLCBDb2RlQnVpbGQgYW5kIG90aGVycy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0NvZGVQaXBlbGluZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNDb2RlUGlwZWxpbmVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIENsb3VkV2F0Y2ggRXZlbnRzIHdpdGhpbiB0aGUgQVdTIFNlcnZpY2VDYXRhbG9nIHByb3Zpc2lvbmVkIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHN1YnNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBDb2RlUGlwZWxpbmUgYW5kIG90aGVycy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0V2ZW50c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNFdmVudHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIEZpcmVob3NlIHdpdGhpbiB0aGUgQVdTIFNlcnZpY2VDYXRhbG9nIHByb3Zpc2lvbmVkIHByb2R1Y3RzIGZyb20gQW1hem9uIFNhZ2VNYWtlciBwb3J0Zm9saW8gb2YgcHJvZHVjdHMuIEdyYW50cyBwZXJtaXNzaW9ucyB0byBhIHNldCBvZiByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBGaXJlaG9zZSBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzRmlyZWhvc2VTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzRmlyZWhvc2VTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIEdsdWUgd2l0aGluIHRoZSBBV1MgU2VydmljZUNhdGFsb2cgcHJvdmlzaW9uZWQgcHJvZHVjdHMgZnJvbSBBbWF6b24gU2FnZU1ha2VyIHBvcnRmb2xpbyBvZiBwcm9kdWN0cy4gR3JhbnRzIHBlcm1pc3Npb25zIHRvIGEgc2V0IG9mIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIEdsdWUsIFMzIGFuZCBvdGhlcnMuICovXG4gICAgcHVibGljIEFtYXpvblNhZ2VNYWtlclNlcnZpY2VDYXRhbG9nUHJvZHVjdHNHbHVlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0dsdWVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2Ugcm9sZSBwb2xpY3kgdXNlZCBieSB0aGUgQVdTIExhbWJkYSB3aXRoaW4gdGhlIEFXUyBTZXJ2aWNlQ2F0YWxvZyBwcm92aXNpb25lZCBwcm9kdWN0cyBmcm9tIEFtYXpvbiBTYWdlTWFrZXIgcG9ydGZvbGlvIG9mIHByb2R1Y3RzLiBHcmFudHMgcGVybWlzc2lvbnMgdG8gYSBzZXQgb2YgcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgRUNSLCBTMyBhbmQgb3RoZXJzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TYWdlTWFrZXJTZXJ2aWNlQ2F0YWxvZ1Byb2R1Y3RzTGFtYmRhU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2FnZU1ha2VyU2VydmljZUNhdGFsb2dQcm9kdWN0c0xhbWJkYVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBBbWF6b24gTWFuYWdlZCBQb2xpY3kgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyB0byBjcmVhdGUgYW5kIG1hbmFnZSBTYWdlTWFrZXIgVHJhaW5pbmcgUGxhbnMuIEl0IGFsbG93cyB1c2VycyB0byBjcmVhdGUgVHJhaW5pbmcgUGxhbnMgYW5kIFJlc2VydmVkIENhcGFjaXRpZXMsIGRlc2NyaWJlIGV4aXN0aW5nIFRyYWluaW5nIFBsYW5zLCBhbmQgcGVyZm9ybSBzZWFyY2ggYW5kIGxpc3Rpbmcgb3BlcmF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2FnZU1ha2VyVHJhaW5pbmdQbGFuQ3JlYXRlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNhZ2VNYWtlclRyYWluaW5nUGxhbkNyZWF0ZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBTZWN1cml0eSBMYWtlIGFuZCByZWxhdGVkIHNlcnZpY2VzIG5lZWRlZCB0byBhZG1pbmlzdGVyIFNlY3VyaXR5IExha2UuICovXG4gICAgcHVibGljIEFtYXpvblNlY3VyaXR5TGFrZUFkbWluaXN0cmF0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2VjdXJpdHlMYWtlQWRtaW5pc3RyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgQW1hem9uIFNlY3VyaXR5TGFrZSBtZXRhIHN0b3JlIG1hbmFnZXIgbGFtYmRhIHdoaWNoIGFsbG93cyB0aGUgYWNjZXNzIHRvIGNsb3Vkd2F0Y2gsIFMzLCBHbHVlIGFuZCBTUVMuICovXG4gICAgcHVibGljIEFtYXpvblNlY3VyaXR5TGFrZU1ldGFzdG9yZU1hbmFnZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU2VjdXJpdHlMYWtlTWV0YXN0b3JlTWFuYWdlcik7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBTZWN1cml0eSBMYWtlIGNyZWF0ZXMgSUFNIHJvbGVzIGZvciB0aGlyZC1wYXJ0eSBjdXN0b20gc291cmNlcyB0byB3cml0ZSBkYXRhIHRvIGEgZGF0YSBsYWtlIGFuZCBmb3IgdGhpcmQtcGFydHkgc3Vic2NyaWJlcnMgdG8gY29uc3VtZSBkYXRhIGZyb20gYSBkYXRhIGxha2UsIGFuZCB1c2VzIHRoaXMgcG9saWN5IHdoZW4gY3JlYXRpbmcgdGhlc2Ugcm9sZXMgdG8gZGVmaW5lIHRoZSBib3VuZGFyeSBvZiB0aGVpciBwZXJtaXNzaW9ucy4gKi9cbiAgICBwdWJsaWMgQW1hem9uU2VjdXJpdHlMYWtlUGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TZWN1cml0eUxha2VQZXJtaXNzaW9uc0JvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFNFUyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblNFU0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU0VTRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFNFUyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblNFU1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNFU1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFNFUyB0byBwdWJsaXNoIEFtYXpvbiBDbG91ZFdhdGNoIGJhc2ljIG1vbml0b3JpbmcgbWV0cmljcyBvbiBiZWhhbGYgb2YgeW91ciBTRVMgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFtYXpvblNFU1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNFU1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFNOUyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblNOU0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU05TRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFNOUyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFtYXpvblNOU1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNOU1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIEFtYXpvbiBTTlMgc2VydmljZSByb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TTlNSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNOU1JvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gU1FTIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU1FTRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TUVNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gU1FTIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU1FTUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU1FTUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gdmlldyBhdXRvbWF0aW9uIGV4ZWN1dGlvbnMgYW5kIHNlbmQgYXBwcm92YWwgZGVjaXNpb25zIHRvIGF1dG9tYXRpb24gd2FpdGluZyBmb3IgYXBwcm92YWwgKi9cbiAgICBwdWJsaWMgQW1hem9uU1NNQXV0b21hdGlvbkFwcHJvdmVyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNTTUF1dG9tYXRpb25BcHByb3ZlckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciBFQzIgQXV0b21hdGlvbiBzZXJ2aWNlIHRvIGV4ZWN1dGUgYWN0aXZpdGllcyBkZWZpbmVkIHdpdGhpbiBBdXRvbWF0aW9uIGRvY3VtZW50cyAqL1xuICAgIHB1YmxpYyBBbWF6b25TU01BdXRvbWF0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TU01BdXRvbWF0aW9uUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBTU00gQWdlbnQgdG8gYWNjZXNzIERpcmVjdG9yeSBTZXJ2aWNlIG9uIGJlaGFsZiBvZiB0aGUgY3VzdG9tZXIgZm9yIGRvbWFpbi1qb2luIHRoZSBtYW5hZ2VkIGluc3RhbmNlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TU01EaXJlY3RvcnlTZXJ2aWNlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNTTURpcmVjdG9yeVNlcnZpY2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gU1NNLiAqL1xuICAgIHB1YmxpYyBBbWF6b25TU01GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNTTUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiAgU2VydmljZSBSb2xlIHRvIGJlIHVzZWQgZm9yIEVDMiBNYWludGVuYW5jZSBXaW5kb3cgKi9cbiAgICBwdWJsaWMgQW1hem9uU1NNTWFpbnRlbmFuY2VXaW5kb3dSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblNTTU1haW50ZW5hbmNlV2luZG93Um9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGVuYWJsZXMgQVdTIFN5c3RlbXMgTWFuYWdlciBmdW5jdGlvbmFsaXR5IG9uIEVDMiBpbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFtYXpvblNTTU1hbmFnZWRFQzJJbnN0YW5jZURlZmF1bHRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU1NNTWFuYWdlZEVDMkluc3RhbmNlRGVmYXVsdFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBwb2xpY3kgZm9yIEFtYXpvbiBFQzIgUm9sZSB0byBlbmFibGUgQVdTIFN5c3RlbXMgTWFuYWdlciBzZXJ2aWNlIGNvcmUgZnVuY3Rpb25hbGl0eS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBhY2Nlc3MgdG8gY2hpbGQgaW5zdGFuY2VzIGZvciBwYXRjaCBhc3NvY2lhdGlvbiBvcGVyYXRpb24uICovXG4gICAgcHVibGljIEFtYXpvblNTTVBhdGNoQXNzb2NpYXRpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU1NNUGF0Y2hBc3NvY2lhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFNTTS4gKi9cbiAgICBwdWJsaWMgQW1hem9uU1NNUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uU1NNUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyBtYW5hZ2VkIG9yIHVzZWQgYnkgQW1hem9uIFNTTSAqL1xuICAgIHB1YmxpYyBBbWF6b25TU01TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25TU01TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFjY2VzcyB0byBhbGwgQW1hem9uIFRleHRyYWN0IEFQSXMgKi9cbiAgICBwdWJsaWMgQW1hem9uVGV4dHJhY3RGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblRleHRyYWN0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBUZXh0cmFjdCB0byBjYWxsIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQW1hem9uVGV4dHJhY3RTZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25UZXh0cmFjdFNlcnZpY2VSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gbWFuYWdlIEFtYXpvbiBUaW1lc3RyZWFtIHVzaW5nIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiBOb3RlIHRoYXQgdGhpcyBwb2xpY3kgYWxzbyBncmFudHMgcGVybWlzc2lvbnMgZm9yIGNlcnRhaW4gS01TIG9wZXJhdGlvbnMsIGFuZCBvcGVyYXRpb25zIHRvIG1hbmFnZSB5b3VyIHNhdmVkIHF1ZXJpZXMuIElmIHVzaW5nIEN1c3RvbWVyIG1hbmFnZWQgQ01LLCBwbGVhc2UgcmVmZXIgdG8gZG9jdW1lbnRhdGlvbiBmb3IgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBuZWVkZWQuICovXG4gICAgcHVibGljIEFtYXpvblRpbWVzdHJlYW1Db25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25UaW1lc3RyZWFtQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gVGltZXN0cmVhbS4gTm90ZSB0aGF0IHRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIGNlcnRhaW4gS01TIG9wZXJhdGlvbiBhY2Nlc3MuIElmIHVzaW5nIEN1c3RvbWVyIG1hbmFnZWQgQ01LLCBwbGVhc2UgcmVmZXIgdG8gZG9jdW1lbnRhdGlvbiBmb3IgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBuZWVkZWQuICovXG4gICAgcHVibGljIEFtYXpvblRpbWVzdHJlYW1GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblRpbWVzdHJlYW1GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gY3JlYXRlLCB1cGRhdGUsIGRlbGV0ZSBhbmQgbGlzdCBBbWF6b24gVGltZXN0cmVhbSBJbmZsdXhEQiBpbnN0YW5jZXMgYW5kIGNyZWF0ZSBhbmQgbGlzdCBwYXJhbWV0ZXIgZ3JvdXBzLiBQbGVhc2UgcmVmZXIgdG8gZG9jdW1lbnRhdGlvbiBmb3IgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBuZWVkZWQuICovXG4gICAgcHVibGljIEFtYXpvblRpbWVzdHJlYW1JbmZsdXhEQkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVGltZXN0cmVhbUluZmx1eERCRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBtYW5hZ2UgQW1hem9uIFRpbWVzdHJlYW0gSW5mbHV4REIgaW5zdGFuY2VzIGFuZCBwYXJhbWV0ZXIgZ3JvdXBzIGV4Y2VwdCBtYXJrZXRwbGFjZSBvcGVyYXRpb25zLiAqL1xuICAgIHB1YmxpYyBBbWF6b25UaW1lc3RyZWFtSW5mbHV4REJGdWxsQWNjZXNzV2l0aG91dE1hcmtldHBsYWNlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblRpbWVzdHJlYW1JbmZsdXhEQkZ1bGxBY2Nlc3NXaXRob3V0TWFya2V0cGxhY2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBjcmVhdGUsIHVwZGF0ZSwgZGVsZXRlIGFuZCBsaXN0IEFtYXpvbiBUaW1lc3RyZWFtIEluZmx1eERCIGluc3RhbmNlcyBhbmQgY3JlYXRlIGFuZCBsaXN0IHBhcmFtZXRlciBncm91cHMuIFBsZWFzZSByZWZlciB0byBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIG5lZWRlZC4gKi9cbiAgICBwdWJsaWMgQW1hem9uVGltZXN0cmVhbUluZmx1eERCU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVGltZXN0cmVhbUluZmx1eERCU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBUaW1lc3RyZWFtLiBQb2xpY3kgYWxzbyBwcm92aWRlcyBwZXJtaXNzaW9uIHRvIGNhbmNlbCBhbnkgcnVubmluZyBxdWVyeS4gSWYgdXNpbmcgQ3VzdG9tZXIgbWFuYWdlZCBDTUssIHBsZWFzZSByZWZlciB0byBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIG5lZWRlZC4gKi9cbiAgICBwdWJsaWMgQW1hem9uVGltZXN0cmVhbVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblRpbWVzdHJlYW1SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBUcmFuc2NyaWJlIG9wZXJhdGlvbnMgKi9cbiAgICBwdWJsaWMgQW1hem9uVHJhbnNjcmliZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uVHJhbnNjcmliZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gcmVhZCBvbmx5IG9wZXJhdGlvbiBmb3IgQW1hem9uIFRyYW5zY3JpYmUgKi9cbiAgICBwdWJsaWMgQW1hem9uVHJhbnNjcmliZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblRyYW5zY3JpYmVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIFZlcmlmaWVkIFBlcm1pc3Npb25zICovXG4gICAgcHVibGljIEFtYXpvblZlcmlmaWVkUGVybWlzc2lvbnNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblZlcmlmaWVkUGVybWlzc2lvbnNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgVmVyaWZpZWQgUGVybWlzc2lvbnMgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQW1hem9uVmVyaWZpZWRQZXJtaXNzaW9uc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblZlcmlmaWVkUGVybWlzc2lvbnNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBjcmVhdGUgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBhdHRhY2ggdGhlbSB0byBjcm9zcy1hY2NvdW50IHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBbWF6b25WUENDcm9zc0FjY291bnROZXR3b3JrSW50ZXJmYWNlT3BlcmF0aW9ucygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25WUENDcm9zc0FjY291bnROZXR3b3JrSW50ZXJmYWNlT3BlcmF0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBWUEMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25WUENGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblZQQ0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0byBkZXNjcmliZSBBV1MgcmVzb3VyY2VzLCBydW4gTmV0d29yayBBY2Nlc3MgQW5hbHl6ZXIsIGFuZCBjcmVhdGUgb3IgZGVsZXRlIHRhZ3Mgb24gTmV0d29yayBJbnNpZ2h0cyBBY2Nlc3MgU2NvcGUgYW5kIE5ldHdvcmsgSW5zaWdodHMgQWNjZXNzIFNjb3BlIEFuYWx5c2lzLiAqL1xuICAgIHB1YmxpYyBBbWF6b25WUENOZXR3b3JrQWNjZXNzQW5hbHl6ZXJGdWxsQWNjZXNzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblZQQ05ldHdvcmtBY2Nlc3NBbmFseXplckZ1bGxBY2Nlc3NQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0byBkZXNjcmliZSBBV1MgcmVzb3VyY2VzLCBydW4gUmVhY2hhYmlsaXR5IEFuYWx5emVyLCBhbmQgY3JlYXRlIG9yIGRlbGV0ZSB0YWdzIG9uIE5ldHdvcmsgSW5zaWdodHMgUGF0aCBhbmQgTmV0d29yayBJbnNpZ2h0cyBBbmFseXNpcy4gKi9cbiAgICBwdWJsaWMgQW1hem9uVlBDUmVhY2hhYmlsaXR5QW5hbHl6ZXJGdWxsQWNjZXNzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblZQQ1JlYWNoYWJpbGl0eUFuYWx5emVyRnVsbEFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIGF0dGFjaGVkIHRvIHRoZSByb2xlIElBTVJvbGVGb3JSZWFjaGFiaWxpdHlBbmFseXplckNyb3NzQWNjb3VudFJlc291cmNlQWNjZXNzLiBUaGlzIHJvbGUgaXMgZGVwbG95ZWQgdG8gdGhlIG1lbWJlciBhY2NvdW50cyBpbiBhbiBvcmdhbml6YXRpb24gd2hlbiB0aGUgbWFuYWdlbWVudCBhY2NvdW50IGVuYWJsZXMgdHJ1c3RlZCBhY2Nlc3MgZm9yIFJlYWNoYWJpbGl0eSBBbmFseXplci4gSXQgcHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gdmlldyByZXNvdXJjZXMgZnJvbSBhY3Jvc3MgeW91ciBvcmdhbml6YXRpb24gdXNpbmcgdGhlIFJlYWNoYWJpbGl0eSBBbmFseXplciBjb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25WUENSZWFjaGFiaWxpdHlBbmFseXplclBhdGhDb21wb25lbnRSZWFkUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblZQQ1JlYWNoYWJpbGl0eUFuYWx5emVyUGF0aENvbXBvbmVudFJlYWRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBWUEMgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBbWF6b25WUENSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25WUENSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBXb3JrRG9jcyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya0RvY3NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtEb2NzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIFdvcmtEb2NzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrRG9jc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtEb2NzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIFdvcmtNYWlsIEV2ZW50cyAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrTWFpbEV2ZW50c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtNYWlsRXZlbnRzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBXb3JrTWFpbCwgRGlyZWN0b3J5IFNlcnZpY2UsIFNFUywgRUMyIGFuZCByZWFkIGFjY2VzcyB0byBLTVMgbWV0YWRhdGEuICovXG4gICAgcHVibGljIEFtYXpvbldvcmtNYWlsRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrTWFpbEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBGdWxsIGFjY2VzcyB0byB0aGUgV29ya01haWwgTWVzc2FnZSBGbG93IEFQSXMgKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya01haWxNZXNzYWdlRmxvd0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya01haWxNZXNzYWdlRmxvd0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBSZWFkIG9ubHkgYWNjZXNzIHRvIFdvcmtNYWlsIG1lc3NhZ2VzIGZvciB0aGUgR2V0UmF3TWVzc2FnZUNvbnRlbnQgQVBJICovXG4gICAgcHVibGljIEFtYXpvbldvcmtNYWlsTWVzc2FnZUZsb3dSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrTWFpbE1lc3NhZ2VGbG93UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIFdvcmtNYWlsIGFuZCBTRVMuICovXG4gICAgcHVibGljIEFtYXpvbldvcmtNYWlsUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya01haWxSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBbWF6b24gV29ya1NwYWNlcyBhZG1pbmlzdHJhdGl2ZSBhY3Rpb25zIHZpYSBBV1MgU0RLIGFuZCBDTEkuICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNBZG1pbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrU3BhY2VzQWRtaW4pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhZG1pbmlzdHJhdG9yIGFjY2VzcyBmb3IgcGFja2FnaW5nIGFuIGFwcGxpY2F0aW9uIGluIEFtYXpvbiBXb3JrU3BhY2VzIEFwcGxpY2F0aW9uIE1hbmFnZXIuICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNBcHBsaWNhdGlvbk1hbmFnZXJBZG1pbkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrU3BhY2VzQXBwbGljYXRpb25NYW5hZ2VyQWRtaW5BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIG1hbmFnZWQgcG9saWN5IHByb3ZpZGVzIGZ1bGwgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyIFByaXZhdGUgQ0EgcmVzb3VyY2VzIGluIHlvdXIgQVdTIGFjY291bnQgZm9yIGNlcnRpZmljYXRlLWJhc2VkIGF1dGhlbnRpY2F0aW9uLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3Jrc3BhY2VzUENBQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtzcGFjZXNQQ0FBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBBV1MgV29ya1NwYWNlcyBzZXJ2aWNlIGFjY2VzcyB0byByZXF1aXJlZCBjdXN0b21lciBhY2NvdW50IHJlc291cmNlcyBmb3IgbGF1bmNoaW5nIFdvcmtzcGFjZXMgUG9vbHMgKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya1NwYWNlc1Bvb2xTZXJ2aWNlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNQb29sU2VydmljZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIFdvcmtTcGFjZXMgU2VjdXJlIEJyb3dzZXIgYW5kIGl0cyBkZXBlbmRlbmNpZXMgdGhyb3VnaCB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSwgU0RLLCBhbmQgQ0xJLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrU3BhY2VzU2VjdXJlQnJvd3NlclJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNTZWN1cmVCcm93c2VyUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIFdvcmtTcGFjZXMgYmFja2VuZCBzZXJ2aWNlIHRvIHBlcmZvcm0gV29ya3NwYWNlIFNlbGYgU2VydmljZSBhY3Rpb25zICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNTZWxmU2VydmljZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrU3BhY2VzU2VsZlNlcnZpY2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBjdXN0b21lciBhY2NvdW50IGFjY2VzcyB0byBBV1MgV29ya1NwYWNlcyBzZXJ2aWNlIGZvciBsYXVuY2hpbmcgYSBXb3Jrc3BhY2UuICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNTZXJ2aWNlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvbldvcmtTcGFjZXNTZXJ2aWNlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFdvcmtTcGFjZXMgVGhpbiBDbGllbnQgYXMgd2VsbCBhcyBsaW1pdGVkIGFjY2VzcyB0byByZXF1aXJlZCByZWxhdGVkIHNlcnZpY2VzICovXG4gICAgcHVibGljIEFtYXpvbldvcmtTcGFjZXNUaGluQ2xpZW50RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrU3BhY2VzVGhpbkNsaWVudEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIFdvcmtTcGFjZXMgVGhpbiBDbGllbnQgTW9uaXRvcmluZyAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrU3BhY2VzVGhpbkNsaWVudE1vbml0b3JpbmdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrU3BhY2VzVGhpbkNsaWVudE1vbml0b3JpbmdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQW1hem9uIFdvcmtTcGFjZXMgVGhpbiBDbGllbnQgYW5kIGl0cyBkZXBlbmRlbmNpZXMgKi9cbiAgICBwdWJsaWMgQW1hem9uV29ya1NwYWNlc1RoaW5DbGllbnRSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25Xb3JrU3BhY2VzVGhpbkNsaWVudFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gV29ya1NwYWNlcyBXZWIgYW5kIGl0cyBkZXBlbmRlbmNpZXMgdGhyb3VnaCB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSwgU0RLLCBhbmQgQ0xJLiAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrU3BhY2VzV2ViUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya1NwYWNlc1dlYlJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFtYXpvbiBXb3JrU3BhY2VzIFdlYiAqL1xuICAgIHB1YmxpYyBBbWF6b25Xb3JrU3BhY2VzV2ViU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQW1hem9uV29ya1NwYWNlc1dlYlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFpvY2Fsby4gKi9cbiAgICBwdWJsaWMgQW1hem9uWm9jYWxvRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BbWF6b25ab2NhbG9GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBbWF6b24gWm9jYWxvICovXG4gICAgcHVibGljIEFtYXpvblpvY2Fsb1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtYXpvblpvY2Fsb1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQW1wbGlmeSBmdWxsIGFjY2VzcyBwZXJtaXNzaW9ucyB0byBkZXBsb3kgQW1wbGlmeSBiYWNrZW5kIHJlc291cmNlcyAoQVdTIEFwcFN5bmMsIEFtYXpvbiBDb2duaXRvLCBBbWF6b24gUzMgYW5kIG90aGVyIHJlbGF0ZWQgc2VydmljZXMpIHZpYSB0aGUgQVdTIENsb3VkIERldmVsb3BtZW50IEtpdCAoQVdTIENESykgKi9cbiAgICBwdWJsaWMgQW1wbGlmeUJhY2tlbmREZXBsb3lGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFtcGxpZnlCYWNrZW5kRGVwbG95RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBUEkgR2F0ZXdheSB0byBtYW5hZ2UgYXNzb2NpYXRlZCBBV1MgUmVzb3VyY2VzIG9uIGJlaGFsZiBvZiB0aGUgY3VzdG9tZXIuICovXG4gICAgcHVibGljIEFQSUdhdGV3YXlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BUElHYXRld2F5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQXBwSW50ZWdyYXRpb25zIHRvIG1hbmFnZSBBcHBGbG93IHJlc291cmNlcyBhbmQgcHVibGlzaCBDbG91ZFdhdGNoIG1ldHJpYyBkYXRhIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBcHBJbnRlZ3JhdGlvbnNTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BcHBJbnRlZ3JhdGlvbnNTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBlbmFibGUgQXBwbGljYXRpb24gQXV0b3NjYWxpbmcgZm9yIEFtYXpvbiBBcHBTdHJlYW0gKi9cbiAgICBwdWJsaWMgQXBwbGljYXRpb25BdXRvU2NhbGluZ0ZvckFtYXpvbkFwcFN0cmVhbUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BcHBsaWNhdGlvbkF1dG9TY2FsaW5nRm9yQW1hem9uQXBwU3RyZWFtQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFwcGxpY2F0aW9uIERpc2NvdmVyeSBTZXJ2aWNlIENvbnRpbnVvdXMgRXhwb3J0IGZlYXR1cmUgKi9cbiAgICBwdWJsaWMgQXBwbGljYXRpb25EaXNjb3ZlcnlTZXJ2aWNlQ29udGludW91c0V4cG9ydFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFwcGxpY2F0aW9uRGlzY292ZXJ5U2VydmljZUNvbnRpbnVvdXNFeHBvcnRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgQXBwUnVubmVyIE5ldHdvcmtpbmcgdG8gbWFuYWdlIHJlbGF0ZWQgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQXBwUnVubmVyTmV0d29ya2luZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFwcFJ1bm5lck5ldHdvcmtpbmdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgQXBwUnVubmVyIHRvIG1hbmFnZSByZWxhdGVkIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFwcFJ1bm5lclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFwcFJ1bm5lclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFwcFN0dWRpbyB0byBtYW5hZ2UgYXNzb2NpYXRlZCBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBcHBTdHVkaW9TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BcHBTdHVkaW9TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgQW1hem9uIEF1cm9yYSBEU1FMIFNlcnZpY2UgTGlua2VkIFJvbGUgKi9cbiAgICBwdWJsaWMgQXVyb3JhRHNxbFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkF1cm9yYURzcWxTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEF1dG8gU2NhbGluZyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEF1dG9TY2FsaW5nQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXV0b1NjYWxpbmdDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQXV0byBTY2FsaW5nIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQXV0b1NjYWxpbmdDb25zb2xlUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXV0b1NjYWxpbmdDb25zb2xlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBdXRvIFNjYWxpbmcuICovXG4gICAgcHVibGljIEF1dG9TY2FsaW5nRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BdXRvU2NhbGluZ0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIEF1dG9TY2FsaW5nIE5vdGlmaWNhdGlvbiBBY2Nlc3Mgc2VydmljZSByb2xlLiAqL1xuICAgIHB1YmxpYyBBdXRvU2NhbGluZ05vdGlmaWNhdGlvbkFjY2Vzc1JvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXV0b1NjYWxpbmdOb3RpZmljYXRpb25BY2Nlc3NSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBdXRvIFNjYWxpbmcuICovXG4gICAgcHVibGljIEF1dG9TY2FsaW5nUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXV0b1NjYWxpbmdSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBdXRvIFNjYWxpbmcgKi9cbiAgICBwdWJsaWMgQXV0b1NjYWxpbmdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BdXRvU2NhbGluZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRGVmYXVsdCBwb2xpY3kgZm9yIEFXUyBDb25maWcgc2VydmljZSByb2xlLiBQcm92aWRlcyBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3IgQVdTIENvbmZpZyB0byB0cmFjayBjaGFuZ2VzIHRvIHlvdXIgQVdTIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTQ29uZmlnUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb25maWdSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHRoZSBTU00gRGlhZ25vc2lzIFMzIGJ1Y2tldCBmb3IgZGlhZ25vc2lzIGFuZCByZW1lZGlhdGlvbiBvZiBpc3N1ZXMuICovXG4gICAgcHVibGljIEFXU1NTTUF1dG9tYXRpb25EaWFnbm9zaXNCdWNrZXRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NNQXV0b21hdGlvbkRpYWdub3Npc0J1Y2tldFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgcGVybWlzc2lvbiBmb3IgRGlhZ25vc2luZyBpc3N1ZXMgd2l0aCBTU00gc2VydmljZXMgYnkgZXhlY3V0aW5nIGFjdGl2aXRpZXMgZGVmaW5lZCB3aXRoaW4gQXV0b21hdGlvbiBEb2N1bWVudHMsIHByaW1hcmlseSB1c2VkIGZvciBydW5uaW5nIHRoZSBBdXRvbWF0aW9uIGRvY3VtZW50cyBpbiBhIGNyb3NzLWFjY291bnQgY3Jvc3MtcmVnaW9uIHNldHVwIGJ5IHRyaWdnZXJpbmcgY2hpbGQgYXV0b21hdGlvbnMgd2l0aGluIG1lbWJlciBhY2NvdW50cy4gKi9cbiAgICBwdWJsaWMgQVdTU1NNRGlhZ25vc2lzQXV0b21hdGlvbkFkbWluaXN0cmF0aW9uUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU01EaWFnbm9zaXNBdXRvbWF0aW9uQWRtaW5pc3RyYXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBwZXJtaXNzaW9uIGZvciBEaWFnbm9zaW5nIGlzc3VlcyB3aXRoIFNTTSBzZXJ2aWNlcyBieSBleGVjdXRpbmcgYWN0aXZpdGllcyBkZWZpbmVkIHdpdGhpbiBBdXRvbWF0aW9uIERvY3VtZW50cywgcHJpbWFyaWx5IHVzZWQgZm9yIHJ1bm5pbmcgdGhlIEF1dG9tYXRpb24gZG9jdW1lbnRzIGluIGEgdGFyZ2V0IGFjY291bnQvcmVnaW9uIHNldHVwIGJ5IGRpYWdub3NpbmcgU1NNIHNlcnZpY2UgaGVhbHRoIGFjcm9zcyBhbGwgbm9kZXMuICovXG4gICAgcHVibGljIEFXU1NTTURpYWdub3Npc0F1dG9tYXRpb25FeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTTURpYWdub3Npc0F1dG9tYXRpb25FeGVjdXRpb25Sb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIG9wZXJhdGlvbmFsIGFjY291bnRzIHRvIGRpYWdub3NlIHVubWFuYWdlZCBub2RlcyBieSBwcm92aWRpbmcgT3JnYW5pc2F0aW9uIHNwZWNpZmljIHBlcm1pc3Npb25zIHJlcXVpcmVkIGJ5IFNTTSBhdXRvbWF0aW9uIHRvIHB1bGwgdGhlIGxpc3Qgb2YgbWVtYmVyIGFjY291bnRzIHdpdGhpbiBhIHJvb3Qgb2YgYW4gT3JnYW5pc2F0aW9uIHRvIHRyaWdnZXIgY3Jvc3MtYWNjb3VudCBjcm9zcy1yZWdpb24gZXhlY3V0aW9uIGJ5IGFsbG93aW5nIGFzc3VtaW5nIEV4ZWN1dGlvbiByb2xlcyBpbiB0YXJnZXQgYWNjb3VudC9yZWdpb24uICovXG4gICAgcHVibGljIEFXU1NTTURpYWdub3Npc0F1dG9tYXRpb25PcGVyYXRpb25hbEFjY291bnRBZG1pbmlzdHJhdGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NNRGlhZ25vc2lzQXV0b21hdGlvbk9wZXJhdGlvbmFsQWNjb3VudEFkbWluaXN0cmF0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgcGVybWlzc2lvbiBmb3IgUmVtZWRpYXRpbmcgaXNzdWVzIHdpdGggU1NNIHNlcnZpY2VzIGJ5IGV4ZWN1dGluZyBhY3Rpdml0aWVzIGRlZmluZWQgd2l0aGluIEF1dG9tYXRpb24gRG9jdW1lbnRzLCBwcmltYXJpbHkgdXNlZCBmb3IgcnVubmluZyB0aGUgQXV0b21hdGlvbiBkb2N1bWVudHMgaW4gYSBjcm9zcy1hY2NvdW50IGNyb3NzLXJlZ2lvbiBzZXR1cCBieSB0cmlnZ2VyaW5nIGNoaWxkIGF1dG9tYXRpb25zIHdpdGhpbiBtZW1iZXIgYWNjb3VudHMuICovXG4gICAgcHVibGljIEFXU1NTTVJlbWVkaWF0aW9uQXV0b21hdGlvbkFkbWluaXN0cmF0aW9uUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU01SZW1lZGlhdGlvbkF1dG9tYXRpb25BZG1pbmlzdHJhdGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgUmVtZWRpYXRpbmcgaXNzdWVzIHdpdGggU1NNIHNlcnZpY2VzIGJ5IGV4ZWN1dGluZyBhY3Rpdml0aWVzIGRlZmluZWQgd2l0aGluIEF1dG9tYXRpb24gRG9jdW1lbnRzLCBwcmltYXJpbHkgdXNlZCBmb3IgcnVubmluZyB0aGUgQXV0b21hdGlvbiBkb2N1bWVudHMgaW4gYSB0YXJnZXQgYWNjb3VudC9yZWdpb24gc2V0dXAgYnkgcmVtZWRpYXRpbmcgU1NNIHNlcnZpY2VzIGhlYWx0aCBhY3Jvc3MgYWxsIG5vZGVzLiAqL1xuICAgIHB1YmxpYyBBV1NTU01SZW1lZGlhdGlvbkF1dG9tYXRpb25FeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTTVJlbWVkaWF0aW9uQXV0b21hdGlvbkV4ZWN1dGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyBmb3Igb3BlcmF0aW9uYWwgYWNjb3VudHMgdG8gUmVtZWRpYXRlIHVubWFuYWdlZCBub2RlcyBieSBwcm92aWRpbmcgT3JnYW5pc2F0aW9uIHNwZWNpZmljIHBlcm1pc3Npb25zIHJlcXVpcmVkIGJ5IFNTTSBhdXRvbWF0aW9uIHRvIHB1bGwgdGhlIGxpc3Qgb2YgbWVtYmVyIGFjY291bnRzIHdpdGhpbiBhIHJvb3Qgb2YgYW4gT3JnYW5pc2F0aW9uIHRvIHRyaWdnZXIgY3Jvc3MtYWNjb3VudCBjcm9zcy1yZWdpb24gZXhlY3V0aW9uIGJ5IGFsbG93aW5nIGFzc3VtaW5nIEV4ZWN1dGlvbiByb2xlcyBpbiB0YXJnZXQgYWNjb3VudC9yZWdpb24uICovXG4gICAgcHVibGljIEFXU1NTTVJlbWVkaWF0aW9uQXV0b21hdGlvbk9wZXJhdGlvbmFsQWNjb3VudEFkbWluaXN0cmF0aW9uUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU01SZW1lZGlhdGlvbkF1dG9tYXRpb25PcGVyYXRpb25hbEFjY291bnRBZG1pbmlzdHJhdGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdXNlcnMgdG8gYWNjZXNzIHRoZSBBY2NvdW50IEFjdGl2aXR5IHBhZ2UuICovXG4gICAgcHVibGljIEFXU0FjY291bnRBY3Rpdml0eUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBY2NvdW50QWN0aXZpdHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgQWNjb3VudCBNYW5hZ2VtZW50LiAqL1xuICAgIHB1YmxpYyBBV1NBY2NvdW50TWFuYWdlbWVudEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQWNjb3VudE1hbmFnZW1lbnRGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgQWNjb3VudCBNYW5hZ2VtZW50ICovXG4gICAgcHVibGljIEFXU0FjY291bnRNYW5hZ2VtZW50UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQWNjb3VudE1hbmFnZW1lbnRSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB1c2VycyB0byBhY2Nlc3MgdGhlIEFjY291bnQgVXNhZ2UgUmVwb3J0IHBhZ2UuICovXG4gICAgcHVibGljIEFXU0FjY291bnRVc2FnZVJlcG9ydEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBY2NvdW50VXNhZ2VSZXBvcnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgZm9yIHRoZSBEaXNjb3ZlcnkgQWdlbnRsZXNzIENvbm5lY3RvciB0byByZWdpc3RlciB3aXRoIEFXUyBBcHBsaWNhdGlvbiBEaXNjb3ZlcnkgU2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTQWdlbnRsZXNzRGlzY292ZXJ5U2VydmljZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBZ2VudGxlc3NEaXNjb3ZlcnlTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFXUyBBcHBGYWJyaWMgc2VydmljZSBhbmQgcmVhZCBvbmx5IGFjY2VzcyB0byBkZXBlbmRlbnQgc2VydmljZXMgc3VjaCBhcyBTMywgS2luZXNpcywgS01TLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBGYWJyaWNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcEZhYnJpY0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIHRoZSBBV1MgQXBwRmFicmljICovXG4gICAgcHVibGljIEFXU0FwcEZhYnJpY1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcEZhYnJpY1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQXBwRmFicmljIGFjY2VzcyB0byBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFXU0FwcEZhYnJpY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcEZhYnJpY1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgQXBwU3RyZWFtIGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nQXBwU3RyZWFtRmxlZXRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0FwcFN0cmVhbUZsZWV0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgQ2Fzc2FuZHJhIGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nQ2Fzc2FuZHJhVGFibGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0Nhc3NhbmRyYVRhYmxlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgQ29tcHJlaGVuZCBhbmQgQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0NvbXByZWhlbmRFbmRwb2ludFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nQ29tcHJlaGVuZEVuZHBvaW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgQVBJR2F0ZXdheSBhbmQgQ2xvdWRXYXRjaCBmb3IgY3VzdG9tIHJlc291cmNlIHNjYWxpbmcgKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25BdXRvU2NhbGluZ0N1c3RvbVJlc291cmNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b1NjYWxpbmdDdXN0b21SZXNvdXJjZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIER5bmFtb0RCIGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRHluYW1vREJUYWJsZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRHluYW1vREJUYWJsZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIEVDMiBTcG90IEZsZWV0IGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRUMyU3BvdEZsZWV0UmVxdWVzdFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRUMyU3BvdEZsZWV0UmVxdWVzdFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIEVDMiBDb250YWluZXIgU2VydmljZSBhbmQgQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0VDU1NlcnZpY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0VDU1NlcnZpY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBBbWF6b24gRWxhc3RpQ2FjaGUgYW5kIEFtYXpvbiBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRWxhc3RpQ2FjaGVSR1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nRWxhc3RpQ2FjaGVSR1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudGluZyBwZXJtaXNzaW9ucyB0byBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgdG8gYWNjZXNzIEVsYXN0aWMgTWFwIFJlZHVjZSBhbmQgQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0VNUkluc3RhbmNlR3JvdXBQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ0VNUkluc3RhbmNlR3JvdXBQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBNYW5hZ2VkIFN0cmVhbWluZyBmb3IgQXBhY2hlIEthZmthIGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nS2Fma2FDbHVzdGVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdLYWZrYUNsdXN0ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBMYW1iZGEgYW5kIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdMYW1iZGFDb25jdXJyZW5jeVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nTGFtYmRhQ29uY3VycmVuY3lQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBBbWF6b24gTmVwdHVuZSBhbmQgQW1hem9uIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdOZXB0dW5lQ2x1c3RlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nTmVwdHVuZUNsdXN0ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8gQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHRvIGFjY2VzcyBSRFMgYW5kIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdSRFNDbHVzdGVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uQXV0b3NjYWxpbmdSRFNDbHVzdGVyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgU2FnZU1ha2VyIGFuZCBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nU2FnZU1ha2VyRW5kcG9pbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ1NhZ2VNYWtlckVuZHBvaW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB0byBhY2Nlc3MgQW1hem9uIFdvcmtTcGFjZXMgYW5kIEFtYXpvbiBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkF1dG9zY2FsaW5nV29ya1NwYWNlc1Bvb2xQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25BdXRvc2NhbGluZ1dvcmtTcGFjZXNQb29sUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIGZvciB0aGUgRGlzY292ZXJ5IEFnZW50IHRvIHJlZ2lzdGVyIHdpdGggQVdTIEFwcGxpY2F0aW9uIERpc2NvdmVyeSBTZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkRpc2NvdmVyeUFnZW50QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uRGlzY292ZXJ5QWdlbnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQXBwbGljYXRpb24gRGlzY292ZXJ5IFNlcnZpY2UgQWdlbnRsZXNzIENvbGxlY3RvcnMgdG8gYXV0byB1cGRhdGUsIHJlZ2lzdGVyLCBhbmQgY29tbXVuaWNhdGUgd2l0aCBBcHBsaWNhdGlvbiBEaXNjb3ZlcnkgU2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkRpc2NvdmVyeUFnZW50bGVzc0NvbGxlY3RvckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbkRpc2NvdmVyeUFnZW50bGVzc0NvbGxlY3RvckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHZpZXcgYW5kIHRhZyBDb25maWd1cmF0aW9uIEl0ZW1zIG1haW50YWluZWQgYnkgdGhlIEFXUyBBcHBsaWNhdGlvbiBEaXNjb3ZlcnkgU2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbkRpc2NvdmVyeVNlcnZpY2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uRGlzY292ZXJ5U2VydmljZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgaW5zdGFsbGluZyB0aGUgQVdTIFJlcGxpY2F0aW9uIEFnZW50LCB3aGljaCBpcyB1c2VkIHdpdGggQVdTIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChNR04pIHRvIG1pZ3JhdGUgZXh0ZXJuYWwgc2VydmVycyB0byBBV1MuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcyB3aG9zZSBjcmVkZW50aWFscyB5b3UgcHJvdmlkZSB3aGVuIGluc3RhbGxpbmcgdGhlIEFXUyBSZXBsaWNhdGlvbiBBZ2VudC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25BZ2VudEluc3RhbGxhdGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkFnZW50SW5zdGFsbGF0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIGluc3RhbGxpbmcgYW5kIHVzaW5nIHRoZSBBV1MgUmVwbGljYXRpb24gQWdlbnQsIHdoaWNoIGlzIHVzZWQgd2l0aCBBV1MgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgKE1HTikgdG8gbWlncmF0ZSBleHRlcm5hbCBzZXJ2ZXJzIHRvIEFXUy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzIHdob3NlIGNyZWRlbnRpYWxzIHlvdSBwcm92aWRlIHdoZW4gaW5zdGFsbGluZyB0aGUgQVdTIFJlcGxpY2F0aW9uIEFnZW50LiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkFnZW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uTWlncmF0aW9uQWdlbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgdXNpbmcgdGhlIEFXUyBSZXBsaWNhdGlvbiBBZ2VudCwgd2hpY2ggaXMgdXNlZCB3aXRoIEFXUyBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSAoTUdOKSB0byBtaWdyYXRlIGV4dGVybmFsIHNlcnZlcnMgdG8gQVdTLiBXZSBkbyBub3QgcmVjb21tZW5kIHRoYXQgeW91IGF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25BZ2VudFBvbGljeVYyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uTWlncmF0aW9uQWdlbnRQb2xpY3lWMik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyB0aGUgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgKE1HTikgQ29udmVyc2lvbiBTZXJ2ZXIsIHdoaWNoIGFyZSBFQzIgaW5zdGFuY2VzIGxhdW5jaGVkIGJ5IEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlLCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBNR04gc2VydmljZS4gQW4gSUFNIHJvbGUgd2l0aCB0aGlzIHBvbGljeSBpcyBhdHRhY2hlZCAoYXMgYW4gRUMyIEluc3RhbmNlIFByb2ZpbGUpIGJ5IE1HTiB0byB0aGUgTUdOIENvbnZlcnNpb24gU2VydmVycywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgbGF1bmNoZWQgYW5kIHRlcm1pbmF0ZWQgYnkgTUdOLCB3aGVuIG5lZWRlZC4gV2UgZG8gbm90IHJlY29tbWVuZCB0aGF0IHlvdSBhdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuIE1HTiBDb252ZXJzaW9uIFNlcnZlcnMgYXJlIHVzZWQgYnkgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2Ugd2hlbiB1c2VycyBjaG9vc2UgdG8gbGF1bmNoIFRlc3Qgb3IgQ3V0b3ZlciBpbnN0YW5jZXMgdXNpbmcgdGhlIE1HTiBjb25zb2xlLCBDTEksIG9yIEFQSS4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25Db252ZXJzaW9uU2VydmVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uTWlncmF0aW9uQ29udmVyc2lvblNlcnZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIEFtYXpvbiBFQzIgb3BlcmF0aW9ucyByZXF1aXJlZCB0byB1c2UgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgKE1HTikgdG8gbGF1bmNoIHRoZSBtaWdyYXRlZCBzZXJ2ZXJzIGFzIEVDMiBpbnN0YW5jZXMuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25FQzJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25FQzJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBwZXJtaXNzaW9ucyB0byBhbGwgcHVibGljIEFQSXMgb2YgQVdTIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChNR04pLCBhcyB3ZWxsIGFzIHBlcm1pc3Npb25zIHRvIHJlYWQgS01TIGtleSBpbmZvcm1hdGlvbi4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIEFXUyBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSAoTUdOKSB0byBzZW5kIG1ldGEtZGF0YSBhYm91dCB0aGUgcHJvZ3Jlc3Mgb2Ygc2VydmVycyBiZWluZyBtaWdyYXRlZCB1c2luZyBNR04gdG8gQVdTIE1pZ3JhdGlvbiBIdWIgKE1HSCkuIE1HTiBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgYW4gSUFNIHJvbGUgd2l0aCB0aGlzIHBvbGljeSBhdHRhY2hlZCwgYW5kIGFzc3VtZXMgdGhpcyByb2xlLiBXZSBkbyBub3QgcmVjb21tZW5kIHRoYXQgeW91IGF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25NR0hBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25NR0hBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBwZXJtaXNzaW9ucyB0byBhbGwgcmVhZC1vbmx5IHB1YmxpYyBBUElzIG9mIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChNR04pLCBhcyB3ZWxsIGFzIHNvbWUgcmVhZC1vbmx5IEFQSXMgb2Ygb3RoZXIgQVdTIHNlcnZpY2VzIHRoYXQgYXJlIHJlcXVpcmVkIGluIG9yZGVyIHRvIG1ha2UgZnVsbCByZWFkLW9ubHkgdXNlIG9mIHRoZSBNR04gY29uc29sZS4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvblJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uTWlncmF0aW9uUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgdGhlIEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIChNR04pIFJlcGxpY2F0aW9uIFNlcnZlcnMsIHdoaWNoIGFyZSBFQzIgaW5zdGFuY2VzIGxhdW5jaGVkIGJ5IEFwcGxpY2F0aW9uIE1pZ3JhdGlvbiBTZXJ2aWNlIC0gdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgTUdOIHNlcnZpY2UsIGFuZCB0byBjcmVhdGUgRUJTIHNuYXBzaG90cyBpbiB5b3VyIEFXUyBhY2NvdW50LiBBbiBJQU0gcm9sZSB3aXRoIHRoaXMgcG9saWN5IGlzIGF0dGFjaGVkIChhcyBhbiBFQzIgSW5zdGFuY2UgUHJvZmlsZSkgYnkgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UgdG8gdGhlIE1HTiBSZXBsaWNhdGlvbiBTZXJ2ZXJzIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IGxhdW5jaGVkIGFuZCB0ZXJtaW5hdGVkIGJ5IE1HTiwgYXMgbmVlZGVkLiBNR04gUmVwbGljYXRpb24gU2VydmVycyBhcmUgdXNlZCB0byBmYWNpbGl0YXRlIGRhdGEgcmVwbGljYXRpb24gZnJvbSB5b3VyIGV4dGVybmFsIHNlcnZlcnMgdG8gQVdTLCBhcyBwYXJ0IG9mIHRoZSBtaWdyYXRpb24gcHJvY2VzcyBtYW5hZ2VkIHVzaW5nIE1HTi4gV2UgZG8gbm90IHJlY29tbWVuZCB0aGF0IHlvdSBhdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uTWlncmF0aW9uUmVwbGljYXRpb25TZXJ2ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25SZXBsaWNhdGlvblNlcnZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBpbnN0YWxsaW5nIGFuZCB1c2luZyB0aGUgQVdTIFJlcGxpY2F0aW9uIEFnZW50LCB3aGljaCBpcyB1c2VkIGJ5IEFXUyBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSAoQVdTIE1HTikgdG8gbWlncmF0ZSBzb3VyY2Ugc2VydmVycyB0aGF0IHJ1biBvbiBFQzIgKGNyb3NzLVJlZ2lvbiBvciBjcm9zcy1BWikuIEFuIElBTSByb2xlIHdpdGggdGhpcyBwb2xpY3kgc2hvdWxkIGJlIGF0dGFjaGVkIChhcyBhbiBFQzIgSW5zdGFuY2UgUHJvZmlsZSkgdG8gdGhlIEVDMiBJbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uTWlncmF0aW9uU2VydmljZUVjMkluc3RhbmNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uTWlncmF0aW9uU2VydmljZUVjMkluc3RhbmNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBhcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSB0byBjcmVhdGUgYW5kIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBsaWNhdGlvbk1pZ3JhdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcGxpY2F0aW9uTWlncmF0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIFNTTSBvcGVyYXRpb25zIHJlcXVpcmVkIHRvIHVzZSBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSAoTUdOKSB0byBleGVjdXRlIGN1c3RvbSBwb3N0IG1pZ3JhdGlvbiBjb21tYW5kIFNTTSBkb2N1bWVudHMuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTQXBwbGljYXRpb25NaWdyYXRpb25TU01BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwbGljYXRpb25NaWdyYXRpb25TU01BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgaW5zdGFsbGluZyBhbmQgdXNpbmcgdGhlIEFXUyBWQ2VudGVyIENsaWVudCwgd2hpY2ggaXMgdXNlZCB3aXRoIEFXUyBBcHBsaWNhdGlvbiBNaWdyYXRpb24gU2VydmljZSAoTUdOKSB0byBtaWdyYXRlIGV4dGVybmFsIHNlcnZlcnMgdG8gQVdTLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMgd2hvc2UgY3JlZGVudGlhbHMgeW91IHByb3ZpZGUgd2hlbiBpbnN0YWxsaW5nIHRoZSBBV1MgVkNlbnRlciBDbGllbnQuICovXG4gICAgcHVibGljIEFXU0FwcGxpY2F0aW9uTWlncmF0aW9uVkNlbnRlckNsaWVudFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBsaWNhdGlvbk1pZ3JhdGlvblZDZW50ZXJDbGllbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBcHAgTWVzaCBFbnZveSBwb2xpY3kgZm9yIGFjY2Vzc2luZyBWaXJ0dWFsIE5vZGUgY29uZmlndXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTQXBwTWVzaEVudm95QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcE1lc2hFbnZveUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBV1MgQXBwIE1lc2ggQVBJcyBhbmQgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBNZXNoRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBNZXNoRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFwcCBNZXNoIFByZXZpZXcgRW52b3kgcG9saWN5IGZvciBhY2Nlc3NpbmcgVmlydHVhbCBOb2RlIGNvbmZpZ3VyYXRpb24uICovXG4gICAgcHVibGljIEFXU0FwcE1lc2hQcmV2aWV3RW52b3lBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwTWVzaFByZXZpZXdFbnZveUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBV1MgQXBwIE1lc2ggKi9cbiAgICBwdWJsaWMgQVdTQXBwTWVzaFByZXZpZXdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBNZXNoUHJldmlld1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgQVdTIEFwcCBNZXNoIEFQSXMgYW5kIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTQXBwTWVzaFJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcE1lc2hSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBV1MgQXBwTWVzaCAqL1xuICAgIHB1YmxpYyBBV1NBcHBNZXNoU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwTWVzaFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIGFsbCBBcHAgUnVubmVyIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU0FwcFJ1bm5lckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwUnVubmVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byBsaXN0IGFuZCB2aWV3IGRldGFpbHMgYWJvdXQgQXBwIFJ1bm5lciByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0FwcFJ1bm5lclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcFJ1bm5lclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQVdTIEFwcCBSdW5uZXIgc2VydmljZSBwb2xpY3kgdGhhdCBncmFudHMgcmVhZCBwZXJtaXNzaW9ucyB0byBBbWF6b24gRUNSIHJlc291cmNlcyBpbiB0aGUgY3VzdG9tZXIncyBhY2NvdW50LiBVc2UgaXQgaW4gYSByb2xlIHRoYXQgaXMgcGFzc2VkIHRvIEFwcCBSdW5uZXIgd2hlbiBjcmVhdGluZyBvciB1cGRhdGluZyBhbiBBcHAgUnVubmVyIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU0FwcFJ1bm5lclNlcnZpY2VQb2xpY3lGb3JFQ1JBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwUnVubmVyU2VydmljZVBvbGljeUZvckVDUkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byB0aGUgQXBwU3luYyBzZXJ2aWNlLCB0aG91Z2ggbm90IGVub3VnaCB0byBhY2Nlc3MgdmlhIHRoZSBjb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NBcHBTeW5jQWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBTeW5jQWRtaW5pc3RyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgaW52b2tpbmcgYWNjZXNzIHRvIHRoZSBBcHBTeW5jIHNlcnZpY2UgLSBib3RoIHRocm91Z2ggdGhlIGNvbnNvbGUgYW5kIGluZGVwZW5kZW50bHkgKi9cbiAgICBwdWJsaWMgQVdTQXBwU3luY0ludm9rZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwU3luY0ludm9rZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQXBwU3luYyB0byBwdXNoIGxvZ3MgdG8gdXNlcidzIENsb3VkV2F0Y2ggYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQVdTQXBwU3luY1B1c2hUb0Nsb3VkV2F0Y2hMb2dzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FwcFN5bmNQdXNoVG9DbG91ZFdhdGNoTG9ncyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBjcmVhdGUsIHVwZGF0ZSwgYW5kIHF1ZXJ5IHRoZSBzY2hlbWEuICovXG4gICAgcHVibGljIEFXU0FwcFN5bmNTY2hlbWFBdXRob3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXBwU3luY1NjaGVtYUF1dGhvcik7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBzZXJ2aWNlcyBhbmQgcmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBcHBTeW5jICovXG4gICAgcHVibGljIEFXU0FwcFN5bmNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcHBTeW5jU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIEFydGlmYWN0IHJlYWQtb25seSBhY2Nlc3MgdG8gb3BlcmF0aW9ucyBpbiBBV1MgT3JnYW5pemF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTQXJ0aWZhY3RBY2NvdW50U3luYygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcnRpZmFjdEFjY291bnRTeW5jKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIGZ1bGwgcGVybWlzc2lvbnMgdG8gbGlzdCwgZG93bmxvYWQsIGFjY2VwdCwgYW5kIHRlcm1pbmF0ZSBBV1MgQXJ0aWZhY3QgYWdyZWVtZW50cy4gSXQgYWxzbyBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byBsaXN0IGFuZCBlbmFibGUgQVdTIHNlcnZpY2UgYWNjZXNzIGluIHRoZSBPcmdhbml6YXRpb24gc2VydmljZSwgYXMgd2VsbCBhcyBkZXNjcmliZSB0aGUgb3JnYW5pemF0aW9uIGRldGFpbHMuIEFkZGl0aW9uYWxseSwgdGhlIHBvbGljeSBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjaGVjayBpZiB0aGUgcmVxdWlyZWQgc2VydmljZS1saW5rZWQgcm9sZSBleGlzdHMgYW5kIGNyZWF0ZXMgb25lIGlmIGl0IGRvZXNuJ3QgKi9cbiAgICBwdWJsaWMgQVdTQXJ0aWZhY3RBZ3JlZW1lbnRzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBcnRpZmFjdEFncmVlbWVudHNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHJlYWQtb25seSBhY2Nlc3MgdG8gbGlzdCB0aGUgQVdTIEFydGlmYWN0IHNlcnZpY2UgYWdyZWVtZW50cyBhbmQgdG8gZG93bmxvYWQgdGhlIGFjY2VwdGVkIGFncmVlbWVudHMuLiBJdCBhbHNvIGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIGxpc3QgYXMgd2VsbCBhcyBkZXNjcmliZSB0aGUgb3JnYW5pemF0aW9uIGRldGFpbHMuIEFkZGl0aW9uYWxseSwgdGhlIHBvbGljeSBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjaGVjayBpZiB0aGUgcmVxdWlyZWQgc2VydmljZS1saW5rZWQgcm9sZSBleGlzdHMuICovXG4gICAgcHVibGljIEFXU0FydGlmYWN0QWdyZWVtZW50c1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0FydGlmYWN0QWdyZWVtZW50c1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgQVdTIEFydGlmYWN0IHNlcnZpY2UgcmVwb3J0cy4gKi9cbiAgICBwdWJsaWMgQVdTQXJ0aWZhY3RSZXBvcnRzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXJ0aWZhY3RSZXBvcnRzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIEFydGlmYWN0IHRvIGdhdGhlciBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24gdmlhIEFXUyBPcmdhbml6YXRpb25zIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU0FydGlmYWN0U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQXJ0aWZhY3RTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBlbmFibGUgb3IgZGlzYWJsZSBBV1MgQXVkaXQgTWFuYWdlciwgdXBkYXRlIHNldHRpbmdzLCBhbmQgbWFuYWdlIGFzc2Vzc21lbnRzLCBjb250cm9scywgYW5kIGZyYW1ld29ya3MgKi9cbiAgICBwdWJsaWMgQVdTQXVkaXRNYW5hZ2VyQWRtaW5pc3RyYXRvckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBdWRpdE1hbmFnZXJBZG1pbmlzdHJhdG9yQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFXUyBBdWRpdCBNYW5hZ2VyICovXG4gICAgcHVibGljIEFXU0F1ZGl0TWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0F1ZGl0TWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFXUyBBdXRvIFNjYWxpbmcgdG8gcGVyaW9kaWNhbGx5IGZvcmVjYXN0IGNhcGFjaXR5IGFuZCBnZW5lcmF0ZSBzY2hlZHVsZWQgc2NhbGluZyBhY3Rpb25zIGZvciBBdXRvIFNjYWxpbmcgZ3JvdXBzIGluIGEgc2NhbGluZyBwbGFuICovXG4gICAgcHVibGljIEFXU0F1dG9TY2FsaW5nUGxhbnNFQzJBdXRvU2NhbGluZ1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NBdXRvU2NhbGluZ1BsYW5zRUMyQXV0b1NjYWxpbmdQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgZm9yIHVzZXJzIHRvIGNyZWF0ZSBjb250cm9scyBhbmQgZnJhbWV3b3JrcyB0aGF0IGRlZmluZSB0aGVpciBleHBlY3RhdGlvbnMgZm9yIEFXUyBCYWNrdXAgcmVzb3VyY2VzIGFuZCBhY3Rpdml0aWVzLCBhbmQgdG8gYXVkaXQgQVdTIEJhY2t1cCByZXNvdXJjZXMgYW5kIGFjdGl2aXRpZXMgYWdhaW5zdCB0aGVpciBkZWZpbmVkIGNvbnRyb2xzIGFuZCBmcmFtZXdvcmtzLiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gQVdTIENvbmZpZyBhbmQgc2ltaWxhciBzZXJ2aWNlcyB0byBkZXNjcmliZSB1c2VyIGV4cGVjdGF0aW9ucyBwZXJmb3JtIHRoZSBhdWRpdHMuIFRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIHBlcm1pc3Npb25zIHRvIGRlbGl2ZXIgYXVkaXQgcmVwb3J0cyB0byBTMyBhbmQgc2ltaWxhciBzZXJ2aWNlcywgYW5kIGVuYWJsZXMgdXNlcnMgdG8gZmluZCBhbmQgb3BlbiB0aGVpciBhdWRpdCByZXBvcnRzLiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBBdWRpdEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBBdWRpdEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyB0aGUgQVdTIEJhY2tpbnQgYWdlbnQgdG8gY29tcGxldGUgYmFja3VwIGRhdGEgdHJhbnNmZXIgd2l0aCBBV1MgQmFja3VwIFN0b3JhZ2UgcGxhbmUuIEF0dGFjaCB0aGlzIHBvbGljeSB0byByb2xlcyBhc3N1bWVkIGJ5IEVDMiBJbnN0YW5jZXMgcnVubmluZyBTQVAgSEFOQSB3aXRoIHRoZSBCYWNraW50IGFnZW50LiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBEYXRhVHJhbnNmZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwRGF0YVRyYW5zZmVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgZm9yIGJhY2t1cCBhZG1pbmlzdHJhdG9ycywgZ3JhbnRpbmcgZnVsbCBhY2Nlc3MgdG8gQVdTIEJhY2t1cCBvcGVyYXRpb25zLCBpbmNsdWRpbmcgY3JlYXRpbmcgb3IgZWRpdGluZyBiYWNrdXAgcGxhbnMsIGFzc2lnbmluZyBBV1MgcmVzb3VyY2VzIHRvIGJhY2t1cCBwbGFucywgZGVsZXRpbmcgYmFja3VwcywgYW5kIHJlc3RvcmluZyBiYWNrdXBzLiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBV1MgQmFja3VwR2F0ZXdheSBwZXJtaXNzaW9uIHRvIHN5bmMgdGhlIG1ldGFkYXRhIG9mIFZpcnR1YWwgTWFjaGluZXMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwR2F0ZXdheVNlcnZpY2VSb2xlUG9saWN5Rm9yVmlydHVhbE1hY2hpbmVNZXRhZGF0YVN5bmMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwR2F0ZXdheVNlcnZpY2VSb2xlUG9saWN5Rm9yVmlydHVhbE1hY2hpbmVNZXRhZGF0YVN5bmMpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgdXNlcnMgcGVybWlzc2lvbnMgdG8gYXNzaWduIEFXUyByZXNvdXJjZXMgdG8gYmFja3VwIHBsYW5zLCBjcmVhdGUgb24tZGVtYW5kIGJhY2t1cHMsIGFuZCByZXN0b3JlIGJhY2t1cHMuIFRoaXMgcG9saWN5IGRvZXMgbm90IGFsbG93IHRoZSB1c2VyIHRvIGNyZWF0ZSBvciBlZGl0IGJhY2t1cCBwbGFucyBvciB0byBkZWxldGUgc2NoZWR1bGVkIGJhY2t1cHMgYWZ0ZXIgdGhleSBhcmUgY3JlYXRlZC4gKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwT3BlcmF0b3JBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwT3BlcmF0b3JBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyBmb3IgYmFja3VwIGFkbWluaXN0YXRvcnMgd2hvIHVzZSBjcm9zcy1hY2NvdW50IGJhY2t1cCBtYW5hZ2VtZW50IHRvIG1hbmFnZSBiYWNrdXBzIGZvciB0aGUgb3JnYW5pemF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBPcmdhbml6YXRpb25BZG1pbkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBPcmdhbml6YXRpb25BZG1pbkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEFXUyBCYWNrdXAgcGVybWlzc2lvbiB0byByZXN0b3JlIGEgYmFja3VwIG9mIFNBUCBIQU5BIG9uIEFtYXpvbiBFQzIgKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwUmVzdG9yZUFjY2Vzc0ZvclNBUEhBTkEoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwUmVzdG9yZUFjY2Vzc0ZvclNBUEhBTkEpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgc2VhcmNoIG9wZXJhdG9yIHJvbGUgaGFzIGFjY2VzcyB0byBjcmVhdGUgYmFja3VwIGluZGV4ZXMsIGNyZWF0ZSBzZWFyY2hlcyBvZiBiYWNrdXAgbWV0YWRhdGEgdGhhdCBoYXMgYmVlbiBpbmRleGVkLiBUaGlzIHBvbGljeSBjb250YWlucyB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIGZvciB0aGVzZSBzZWFyY2ggb3BlcmF0b3IgZnVuY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NCYWNrdXBTZWFyY2hPcGVyYXRvckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBTZWFyY2hPcGVyYXRvckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEFXUyBCYWNrdXAgcGVybWlzc2lvbiB0byBjcmVhdGUgYmFja3VwcyBvbiB5b3VyIGJlaGFsZiBhY3Jvc3MgQVdTIHNlcnZpY2VzICovXG4gICAgcHVibGljIEFXU0JhY2t1cFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5Rm9yQmFja3VwKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5Rm9yQmFja3VwKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIEJhY2t1cCBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBiYWNrdXBzIG9uIHlvdXIgYmVoYWxmIGFjcm9zcyBBV1Mgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwU2VydmljZUxpbmtlZFJvbGVQb2xpY3lGb3JCYWNrdXBUZXN0KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5Rm9yQmFja3VwVGVzdCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIEFXUyBCYWNrdXAgcGVybWlzc2lvbiB0byBjcmVhdGUgYmFja3VwcyBvbiB5b3VyIGJlaGFsZiBhY3Jvc3MgQVdTIHNlcnZpY2VzICovXG4gICAgcHVibGljIEFXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9yQmFja3VwKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9yQmFja3VwKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGNvbnRhaW5pbmcgcGVybWlzc2lvbnMgbmVjZXNzYXJ5IGZvciBBV1MgQmFja3VwIHRvIGluZGV4IHJlY292ZXJ5IHBvaW50cy4gKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JJbmRleGluZygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBTZXJ2aWNlUm9sZVBvbGljeUZvckluZGV4aW5nKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGNvbnRhaW5pbmcgcGVybWlzc2lvbnMgbmVjZXNzYXJ5IGZvciBBV1MgQmFja3VwIHRvIHJlc3RvcmUgaW5kaXZpZHVhbCBpdGVtcyBpbiBhIHJlY292ZXJ5IHBvaW50ICovXG4gICAgcHVibGljIEFXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9ySXRlbVJlc3RvcmVzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9ySXRlbVJlc3RvcmVzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIEJhY2t1cCBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gcmVzdG9yZXMgb24geW91ciBiZWhhbGYgYWNyb3NzIEFXUyBzZXJ2aWNlcy4gVGhpcyBwb2xpY3kgaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gY3JlYXRlIGFuZCBkZWxldGUgQVdTIHJlc291cmNlcywgc3VjaCBhcyBFQlMgdm9sdW1lcywgUkRTIGluc3RhbmNlcywgYW5kIEVGUyBmaWxlIHN5c3RlbXMsIHdoaWNoIGFyZSBwYXJ0IG9mIHRoZSByZXN0b3JlIHByb2Nlc3MuICovXG4gICAgcHVibGljIEFXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9yUmVzdG9yZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JSZXN0b3Jlcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBjb250YWluaW5nIHBlcm1pc3Npb25zIG5lY2Vzc2FyeSBmb3IgQVdTIEJhY2t1cCB0byBiYWNrdXAgZGF0YSBpbiBhbnkgUzMgYnVja2V0LiBUaGlzIGluY2x1ZGVzIHJlYWQgYWNjZXNzIHRvIGFsbCBTMyBvYmplY3RzIGFuZCBhbnkgZGVjcnlwdCBhY2Nlc3MgZm9yIGFsbCBLTVMga2V5cy4gKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JTM0JhY2t1cCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYWNrdXBTZXJ2aWNlUm9sZVBvbGljeUZvclMzQmFja3VwKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGNvbnRhaW5pbmcgcGVybWlzc2lvbnMgbmVjZXNzYXJ5IGZvciBBV1MgQmFja3VwIHRvIHJlc3RvcmUgYSBTMyBiYWNrdXAgdG8gYSBidWNrZXQuIFRoaXMgaW5jbHVkZXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyB0byBhbGwgUzMgYnVja2V0cywgYW5kIHBlcm1pc3Npb25zIHRvIEdlbmVyYXRlRGF0YUtleSBhbmQgRGVzY3JpYmVLZXkgZm9yIGFsbCBLTVMga2V5cy4gKi9cbiAgICBwdWJsaWMgQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JTM1Jlc3RvcmUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmFja3VwU2VydmljZVJvbGVQb2xpY3lGb3JTM1Jlc3RvcmUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyBmb3IgQVdTIEJhdGNoIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTQmF0Y2hGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JhdGNoRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBlbmFibGUgQ2xvdWRXYXRjaCBFdmVudCBUYXJnZXQgZm9yIEFXUyBCYXRjaCBKb2IgU3VibWlzc2lvbiAqL1xuICAgIHB1YmxpYyBBV1NCYXRjaFNlcnZpY2VFdmVudFRhcmdldFJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmF0Y2hTZXJ2aWNlRXZlbnRUYXJnZXRSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBV1MgQmF0Y2ggc2VydmljZSByb2xlIHdoaWNoIGFsbG93cyBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgRUMyLCBBdXRvc2NhbGluZywgRUMyIENvbnRhaW5lciBzZXJ2aWNlIGFuZCBDbG91ZHdhdGNoIExvZ3MuICovXG4gICAgcHVibGljIEFXU0JhdGNoU2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmF0Y2hTZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyBmb3IgQVdTIEJhdGNoIHRvIHF1ZXVlIGFuZCBtYW5hZ2UgQW1hem9uIFNhZ2VNYWtlciB3b3JrbG9hZHMgKi9cbiAgICBwdWJsaWMgQVdTQmF0Y2hTZXJ2aWNlUm9sZVBvbGljeUZvclNhZ2VNYWtlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCYXRjaFNlcnZpY2VSb2xlUG9saWN5Rm9yU2FnZU1ha2VyKTtcbiAgICB9XG5cbiAgICAvKiogQSBzZXJ2aWNlIGxpbmtlZCByb2xlIHRvIHByb3ZpZGUgQmlsbGluZyBhbmQgQ29zdCBNYW5hZ2VtZW50IERhdGEgRXhwb3J0cyBhY2Nlc3MgdG8gQVdTIHNlcnZpY2UgZGF0YSBmb3IgZXhwb3J0aW5nIHRoZSBkYXRhIHRvIGEgdGFyZ2V0IGxvY2F0aW9uLCBzdWNoIGFzIEFtYXpvbiBTMywgb24gYmVoYWxmIG9mIGEgY3VzdG9tZXIuICovXG4gICAgcHVibGljIEFXU0JDTURhdGFFeHBvcnRzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQkNNRGF0YUV4cG9ydHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFVzZSB0aGUgQVdTQmlsbGluZ0NvbmR1Y3RvckZ1bGxBY2Nlc3MgbWFuYWdlZCBwb2xpY3kgdG8gYWxsb3cgY29tcGxldGUgYWNjZXNzIHRvIEFXUyBCaWxsaW5nIENvbmR1Y3RvciAoQUJDKSBjb25zb2xlIGFuZCBBUElzLiBUaGlzIHBvbGljeSBhbGxvd3MgdXNlcnMgdG8gbGlzdCwgY3JlYXRlIGFuZCBkZWxldGUgQUJDIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTQmlsbGluZ0NvbmR1Y3RvckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmlsbGluZ0NvbmR1Y3RvckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBVc2UgdGhlIEFXU0JpbGxpbmdDb25kdWN0b3JSZWFkT25seUFjY2VzcyBtYW5hZ2VkIHBvbGljeSB0byBhbGxvdyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBCaWxsaW5nIENvbmR1Y3RvciAoQUJDKSBjb25zb2xlIGFuZCBBUElzLiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbiB0byB2aWV3IGFuZCBsaXN0IGFsbCBBQkMgcmVzb3VyY2VzLiBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBvciBkZWxldGUgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NCaWxsaW5nQ29uZHVjdG9yUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQmlsbGluZ0NvbmR1Y3RvclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHVzZXJzIHRvIHZpZXcgYmlsbHMgb24gdGhlIEJpbGxpbmcgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTQmlsbGluZ1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JpbGxpbmdSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBiaWxsaW5nIHNlcnZpY2UgdG8gdmFsaWRhdGUgYWNjZXNzIHRvIGJpbGxpbmcgdmlldyBkYXRhIGZvciBkZXJpdmVkIGJpbGxpbmcgdmlld3MgKi9cbiAgICBwdWJsaWMgQVdTQmlsbGluZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0JpbGxpbmdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdpdmVzIHBlcm1pc3Npb25zIHRvIGNvbnRyb2wgQVdTIHJlc291cmNlcy4gRm9yIGV4YW1wbGUsIHRvIHN0YXJ0IGFuZCBzdG9wIEVDMiBvciBSRFMgaW5zdGFuY2VzIGJ5IGV4ZWN1dGluZyBBV1MgU3lzdGVtcyBNYW5hZ2VyIChTU00pIHNjcmlwdHMuICovXG4gICAgcHVibGljIEFXU0J1ZGdldHNBY3Rpb25zUm9sZVBvbGljeUZvclJlc291cmNlQWRtaW5pc3RyYXRpb25XaXRoU1NNKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0J1ZGdldHNBY3Rpb25zUm9sZVBvbGljeUZvclJlc291cmNlQWRtaW5pc3RyYXRpb25XaXRoU1NNKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIEJ1ZGdldHMgQWN0aW9ucyBpbmNsdWRpbmcgdXNpbmcgQnVkZ2V0cyBBY3Rpb25zIHRvIGNvbnRyb2wgc3RhdGVzIG9mIHJ1bm5pbmcgQVdTIHJlc291cmNlcyB2aWEgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBBV1NCdWRnZXRzQWN0aW9uc1dpdGhBV1NSZXNvdXJjZUNvbnRyb2xBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQnVkZ2V0c0FjdGlvbnNXaXRoQVdTUmVzb3VyY2VDb250cm9sQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgQnVkZ2V0cyBDb25zb2xlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTQnVkZ2V0c1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0J1ZGdldHNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgSUFNIHBvbGljeSBncmFudHMgdXNlcnMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFXUyBCdWdCdXN0IGNvbnNvbGUgKi9cbiAgICBwdWJsaWMgQVdTQnVnQnVzdEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQnVnQnVzdEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIElBTSBwb2xpY3kgZ3JhbnRzIHVzZXJzIGFjY2VzcyB0byBwYXJ0aWNpcGF0ZSBpbiBBV1MgQnVnQnVzdCBldmVudHMgKi9cbiAgICBwdWJsaWMgQVdTQnVnQnVzdFBsYXllckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NCdWdCdXN0UGxheWVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIEFXUyBCdWdCdXN0IHRvIGFjY2VzcyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQVdTQnVnQnVzdFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0J1Z0J1c3RTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyIChBQ00pICovXG4gICAgcHVibGljIEFXU0NlcnRpZmljYXRlTWFuYWdlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2VydGlmaWNhdGVNYW5hZ2VyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGF1ZGl0b3IgYWNjZXNzIHRvIEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyIFByaXZhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ICovXG4gICAgcHVibGljIEFXU0NlcnRpZmljYXRlTWFuYWdlclByaXZhdGVDQUF1ZGl0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBQXVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyIFByaXZhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ICovXG4gICAgcHVibGljIEFXU0NlcnRpZmljYXRlTWFuYWdlclByaXZhdGVDQUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHByaXZpbGVnZWQgY2VydGlmaWNhdGUgdXNlciBhY2Nlc3MgdG8gQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBUHJpdmlsZWdlZFVzZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBUHJpdmlsZWdlZFVzZXIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyIFByaXZhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ICovXG4gICAgcHVibGljIEFXU0NlcnRpZmljYXRlTWFuYWdlclByaXZhdGVDQVJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NlcnRpZmljYXRlTWFuYWdlclByaXZhdGVDQVJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgY2VydGlmaWNhdGUgdXNlciBhY2Nlc3MgdG8gQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUHJpdmF0ZUNBVXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDZXJ0aWZpY2F0ZU1hbmFnZXJQcml2YXRlQ0FVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgQ2VydGlmaWNhdGUgTWFuYWdlciAoQUNNKS4gKi9cbiAgICBwdWJsaWMgQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2VydGlmaWNhdGVNYW5hZ2VyUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgU2VydmljZSBMaW5rZWQgUm9sZSB1c2VkIGJ5IEFXUyBDaGF0Ym90LiAqL1xuICAgIHB1YmxpYyBBV1NDaGF0Ym90U2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2hhdGJvdFNlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDbGVhbiBSb29tcyByZXNvdXJjZXMgYW5kIGFjY2VzcyB0byByZWxhdGVkIEFXUyBTZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTQ2xlYW5Sb29tc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xlYW5Sb29tc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgZnVsbCBhY2Nlc3MgdG8gQVdTIENsZWFuIFJvb21zIHJlc291cmNlcyBleGNlcHQgZm9yIHF1ZXJ5aW5nIGluIGEgY29sbGFib3JhdGlvbiBhbmQgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIFNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDbGVhblJvb21zRnVsbEFjY2Vzc05vUXVlcnlpbmcoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xlYW5Sb29tc0Z1bGxBY2Nlc3NOb1F1ZXJ5aW5nKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDbGVhbiBSb29tcyBNTCByZXNvdXJjZXMgYW5kIGFjY2VzcyB0byByZWxhdGVkIEFXUyBTZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTQ2xlYW5Sb29tc01MRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbGVhblJvb21zTUxGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIENsZWFuIFJvb21zIE1MIHJlc291cmNlcyBhbmQgcmVhZC1vbmx5IGFjY2VzcyB0byByZWxhdGVkIEFXUyBDbGVhbiBSb29tcyByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTQ2xlYW5Sb29tc01MUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xlYW5Sb29tc01MUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgQ2xlYW4gUm9vbXMgcmVzb3VyY2VzIGFuZCByZWFkLW9ubHkgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIEdsdWUgYW5kIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDbGVhblJvb21zUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xlYW5Sb29tc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWRtaW5pc3RyYXRvciBhY2Nlc3MgdG8gQVdTIENsb3VkOS4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWQ5QWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZDlBZG1pbmlzdHJhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gYmUgaW52aXRlZCBpbnRvIEFXUyBDbG91ZDkgc2hhcmVkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWQ5RW52aXJvbm1lbnRNZW1iZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWQ5RW52aXJvbm1lbnRNZW1iZXIpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIExpbmtlZCBSb2xlIFBvbGljeSBmb3IgQVdTIENsb3VkOSAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZDlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZDlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHdpbGwgYmUgdXNlZCB0byBhdHRhY2ggYSByb2xlIG9uIGEgSW5zdGFuY2VQcm9maWxlIHdoaWNoIHdpbGwgYWxsb3cgQ2xvdWQ5IHRvIHVzZSB0aGUgU1NNIFNlc3Npb24gTWFuYWdlciB0byBjb25uZWN0IHRvIHRoZSBpbnN0YW5jZSAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZDlTU01JbnN0YW5jZVByb2ZpbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWQ5U1NNSW5zdGFuY2VQcm9maWxlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbiB0byBjcmVhdGUgQVdTIENsb3VkOSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgYW5kIHRvIG1hbmFnZSBvd25lZCBlbnZpcm9ubWVudHMuICovXG4gICAgcHVibGljIEFXU0Nsb3VkOVVzZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWQ5VXNlcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWRGb3JtYXRpb25GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkRm9ybWF0aW9uRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBBV1MgQ2xvdWRGb3JtYXRpb24gdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZEZvcm1hdGlvblJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkRm9ybWF0aW9uUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgQ2xvdWRGcm9udCBMb2dnZXIgd3JpdGUgcGVybWlzc2lvbnMgdG8gQ2xvdWRXYXRjaCBMb2dzLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZEZyb250TG9nZ2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkRnJvbnRMb2dnZXIpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQ2xvdWRGcm9udCB0byBtYW5hZ2UgRUMyIEVsYXN0aWMgTmV0d29yayBJbnRlcmZhY2VzIGFuZCBTZWN1cml0eSBHcm91cHMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0Nsb3VkRnJvbnRWUENPcmlnaW5TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZEZyb250VlBDT3JpZ2luU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgQ2xvdWRIU00gcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZEhTTUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRIU01GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBhbGwgQ2xvdWRIU00gcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZEhTTVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkSFNNUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIEFXUyBDbG91ZEhTTSBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIEFXU0Nsb3VkSFNNUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZEhTTVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIENsb3VkIE1hcCBkaXNjb3ZlcnkgQVBJLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZE1hcERpc2NvdmVySW5zdGFuY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRNYXBEaXNjb3Zlckluc3RhbmNlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIEFXUyBDbG91ZCBNYXAgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWRNYXBGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkTWFwRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gYWxsIEFXUyBDbG91ZCBNYXAgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWRNYXBSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDbG91ZE1hcFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVnaXN0cmFudCBsZXZlbCBhY2Nlc3MgdG8gQVdTIENsb3VkIE1hcCBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZE1hcFJlZ2lzdGVySW5zdGFuY2VBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRNYXBSZWdpc3Rlckluc3RhbmNlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHVzaW5nIEFXUyBDbG91ZFNoZWxsIHdpdGggYWxsIGZlYXR1cmVzICovXG4gICAgcHVibGljIEFXU0Nsb3VkU2hlbGxGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkU2hlbGxGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENsb3VkVHJhaWwuICovXG4gICAgcHVibGljIEFXU0Nsb3VkVHJhaWxGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkVHJhaWxGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgQ2xvdWRUcmFpbC4gKi9cbiAgICBwdWJsaWMgQVdTQ2xvdWRUcmFpbFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nsb3VkVHJhaWxSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIHVzZWQgYnkgdGhlIHNlcnZpY2UtbGlua2VkIHJvbGUgbmFtZWQgQVdTU2VydmljZVJvbGVGb3JDbG91ZFdhdGNoQWxhcm1zX0FjdGlvblNTTUluY2lkZW50cy4gQ2xvdWRXYXRjaCB1c2VzIHRoaXMgc2VydmljZS1saW5rZWQgcm9sZSB0byBwZXJmb3JtIEFXUyBTeXN0ZW0gTWFuYWdlciBJbmNpZGVudCBNYW5hZ2VyIGFjdGlvbnMgd2hlbiBhIENsb3VkV2F0Y2ggYWxhcm0gZ29lcyBpbiB0byBBTEFSTSBzdGF0ZS4gVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb24gdG8gc3RhcnQgaW5jaWRlbnRzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NDbG91ZFdhdGNoQWxhcm1zQWN0aW9uU1NNSW5jaWRlbnRzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ2xvdWRXYXRjaEFsYXJtc0FjdGlvblNTTUluY2lkZW50c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENvZGVBcnRpZmFjdCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0NvZGVBcnRpZmFjdEFkbWluQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVBcnRpZmFjdEFkbWluQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgQ29kZUFydGlmYWN0IHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZUFydGlmYWN0UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZUFydGlmYWN0UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgQ29kZUJ1aWxkIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gQWxzbyBhdHRhY2ggQW1hem9uUzNSZWFkT25seUFjY2VzcyB0byBwcm92aWRlIGFjY2VzcyB0byBkb3dubG9hZCBidWlsZCBhcnRpZmFjdHMsIGFuZCBhdHRhY2ggSUFNRnVsbEFjY2VzcyB0byBjcmVhdGUgYW5kIG1hbmFnZSB0aGUgc2VydmljZSByb2xlIGZvciBDb2RlQnVpbGQuICovXG4gICAgcHVibGljIEFXU0NvZGVCdWlsZEFkbWluQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVCdWlsZEFkbWluQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBDb2RlQnVpbGQgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLCBidXQgZG9lcyBub3QgYWxsb3cgQ29kZUJ1aWxkIHByb2plY3QgYWRtaW5pc3RyYXRpb24uIEFsc28gYXR0YWNoIEFtYXpvblMzUmVhZE9ubHlBY2Nlc3MgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gZG93bmxvYWQgYnVpbGQgYXJ0aWZhY3RzLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlQnVpbGREZXZlbG9wZXJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZUJ1aWxkRGV2ZWxvcGVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgQ29kZUJ1aWxkIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gQWxzbyBhdHRhY2ggQW1hem9uUzNSZWFkT25seUFjY2VzcyB0byBwcm92aWRlIGFjY2VzcyB0byBkb3dubG9hZCBidWlsZCBhcnRpZmFjdHMuICovXG4gICAgcHVibGljIEFXU0NvZGVCdWlsZFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVCdWlsZFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIENvZGVDb21taXQgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlQ29tbWl0RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlQ29tbWl0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDb2RlQ29tbWl0IHJlcG9zaXRvcmllcywgYnV0IGRvZXMgbm90IGFsbG93IHJlcG9zaXRvcnkgZGVsZXRpb24uICovXG4gICAgcHVibGljIEFXU0NvZGVDb21taXRQb3dlclVzZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZUNvbW1pdFBvd2VyVXNlcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIENvZGVDb21taXQgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlQ29tbWl0UmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZUNvbW1pdFJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHJlZ2lzdGVyIGFuZCBkZXBsb3kgYSByZXZpc2lvbi4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZURlcGxveURlcGxveWVyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVEZXBsb3lEZXBsb3llckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIENvZGVEZXBsb3kgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlRGVwbG95RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlRGVwbG95RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQ29kZURlcGxveSByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0NvZGVEZXBsb3lSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlRGVwbG95UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBDb2RlRGVwbG95IHNlcnZpY2UgYWNjZXNzIHRvIGV4cGFuZCB0YWdzIGFuZCBpbnRlcmFjdCB3aXRoIEF1dG8gU2NhbGluZyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZURlcGxveVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZURlcGxveVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBDb2RlRGVwbG95IHNlcnZpY2UgYWNjZXNzIHRvIGludm9rZSBMYW1iZGEgZnVuY3Rpb24gb24geW91ciBiZWhhbGYgdG8gcGVyZm9ybSBibHVlL2dyZWVuIGRlcGxveW1lbnQgdGhyb3VnaCBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZURlcGxveVJvbGVGb3JDbG91ZEZvcm1hdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlRGVwbG95Um9sZUZvckNsb3VkRm9ybWF0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQ29kZURlcGxveSBzZXJ2aWNlIHdpZGUgYWNjZXNzIHRvIHBlcmZvcm0gYW4gRUNTIGJsdWUvZ3JlZW4gZGVwbG95bWVudCBvbiB5b3VyIGJlaGFsZi4gR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIHN1cHBvcnQgc2VydmljZXMsIHN1Y2ggYXMgIGZ1bGwgYWNjZXNzIHRvIHJlYWQgYWxsIFMzIG9iamVjdHMsIGludm9rZSBhbGwgTGFtYmRhIGZ1bmN0aW9ucywgcHVibGlzaCB0byBhbGwgU05TIHRvcGljcyB3aXRoaW4gdGhlIGFjY291bnQgYW5kIHVwZGF0ZSBhbGwgRUNTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlRGVwbG95Um9sZUZvckVDUygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlRGVwbG95Um9sZUZvckVDUyk7XG4gICAgfVxuXG4gICAgLyoqICBQcm92aWRlcyBDb2RlRGVwbG95IHNlcnZpY2UgbGltaXRlZCBhY2Nlc3MgdG8gcGVyZm9ybSBhbiBFQ1MgYmx1ZS9ncmVlbiBkZXBsb3ltZW50IG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlRGVwbG95Um9sZUZvckVDU0xpbWl0ZWQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZURlcGxveVJvbGVGb3JFQ1NMaW1pdGVkKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQ29kZURlcGxveSBzZXJ2aWNlIGFjY2VzcyB0byBwZXJmb3JtIGEgTGFtYmRhIGRlcGxveW1lbnQgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0NvZGVEZXBsb3lSb2xlRm9yTGFtYmRhKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVEZXBsb3lSb2xlRm9yTGFtYmRhKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQ29kZURlcGxveSBzZXJ2aWNlIGxpbWl0ZWQgYWNjZXNzIHRvIHBlcmZvcm0gYSBMYW1iZGEgZGVwbG95bWVudCBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZURlcGxveVJvbGVGb3JMYW1iZGFMaW1pdGVkKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVEZXBsb3lSb2xlRm9yTGFtYmRhTGltaXRlZCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDb2RlUGlwZWxpbmUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlUGlwZWxpbmVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVQaXBlbGluZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBDb2RlUGlwZWxpbmUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlUGlwZWxpbmVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlUGlwZWxpbmVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byB2aWV3IGFuZCBhcHByb3ZlIG1hbnVhbCBjaGFuZ2VzIGZvciBhbGwgcGlwZWxpbmVzICovXG4gICAgcHVibGljIEFXU0NvZGVQaXBlbGluZUFwcHJvdmVyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVQaXBlbGluZUFwcHJvdmVyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIGZvciBjdXN0b20gYWN0aW9ucyB0byBwb2xsIGZvciBqb2JzIGRldGFpbHMgKGluY2x1ZGluZyB0ZW1wb3JhcnkgY3JlZGVudGlhbHMpIGFuZCByZXBvcnQgc3RhdHVzIHVwZGF0ZXMgdG8gQVdTIENvZGVQaXBlbGluZS4gKi9cbiAgICBwdWJsaWMgQVdTQ29kZVBpcGVsaW5lQ3VzdG9tQWN0aW9uQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvZGVQaXBlbGluZUN1c3RvbUFjdGlvbkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBDb2RlU3RhciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0NvZGVTdGFyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlU3RhckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIENvZGVTdGFyIE5vdGlmaWNhdGlvbnMgdG8gYWNjZXNzIEFtYXpvbiBDbG91ZFdhdGNoIEV2ZW50cyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBV1NDb2RlU3Rhck5vdGlmaWNhdGlvbnNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb2RlU3Rhck5vdGlmaWNhdGlvbnNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIERPIE5PVCBVU0UgLSAgQVdTIENvZGVTdGFyIFNlcnZpY2UgUm9sZSBQb2xpY3kgd2hpY2ggZ3JhbnRzIGFkbWluaXN0cmF0aXZlIHByaXZpbGVnZXMgaW4gb3JkZXIgZm9yIENvZGVTdGFyIHRvIG1hbmFnZSBJQU0gYW5kIG90aGVyIHNlcnZpY2UgcmVzb3VyY2VzIG9uIGJlaGFsZiBvZiB0aGUgY3VzdG9tZXIuICovXG4gICAgcHVibGljIEFXU0NvZGVTdGFyU2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29kZVN0YXJTZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIERlbmllcyBhY2Nlc3MgdG8gY2VydGFpbiBhY3Rpb25zLCBhcHBsaWVkIGJ5IHRoZSBBV1MgdGVhbSBpbiB0aGUgZXZlbnQgdGhhdCBhbiBJQU0gdXNlcidzIGNyZWRlbnRpYWxzIGhhdmUgYmVlbiBjb21wcm9taXNlZCBvciBleHBvc2VkIHB1YmxpY2x5LiAgRG8gTk9UIHJlbW92ZSB0aGlzIHBvbGljeS4gIEluc3RlYWQsIHBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIGVtYWlsIHNlbnQgdG8geW91IHJlZ2FyZGluZyB0aGlzIGV2ZW50LiAqL1xuICAgIHB1YmxpYyBBV1NDb21wcm9taXNlZEtleVF1YXJhbnRpbmUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29tcHJvbWlzZWRLZXlRdWFyYW50aW5lKTtcbiAgICB9XG5cbiAgICAvKiogRGVuaWVzIGFjY2VzcyB0byBjZXJ0YWluIGFjdGlvbnMsIGFwcGxpZWQgYnkgdGhlIEFXUyB0ZWFtIGluIHRoZSBldmVudCB0aGF0IGFuIElBTSB1c2VyJ3MgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGNvbXByb21pc2VkIG9yIGV4cG9zZWQgcHVibGljbHkuIERvIE5PVCByZW1vdmUgdGhpcyBwb2xpY3kuIEluc3RlYWQsIHBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIHN1cHBvcnQgY2FzZSBjcmVhdGVkIGZvciB5b3UgcmVnYXJkaW5nIHRoaXMgZXZlbnQuICovXG4gICAgcHVibGljIEFXU0NvbXByb21pc2VkS2V5UXVhcmFudGluZVYyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbXByb21pc2VkS2V5UXVhcmFudGluZVYyKTtcbiAgICB9XG5cbiAgICAvKiogRGVuaWVzIGFjY2VzcyB0byBjZXJ0YWluIGFjdGlvbnMsIGFwcGxpZWQgYnkgQVdTIGluIHRoZSBldmVudCB0aGF0IGFuIElBTSB1c2VyJ3MgY3JlZGVudGlhbHMgaGF2ZSBiZWVuIGNvbXByb21pc2VkIG9yIGV4cG9zZWQgcHVibGljbHkuIFRoZSBwb2xpY3kgYWltcyB0byBsaW1pdCB0aGUgcG90ZW50aWFsIGRhbWFnZSB0aGF0IG1heSBiZSBjYXVzZWQgYnkgZnJhdWQtcmVsYXRlZCBhY3Rpdml0eSBsZWFkaW5nIHRvIHVuYXV0aG9yaXplZCBjaGFyZ2VzLCB3aGlsZSBub3QgaW1wYWN0aW5nIHRoZSBleGlzdGluZyByZXNvdXJjZXMuIERvIE5PVCByZW1vdmUgdGhpcyBwb2xpY3kuIEluc3RlYWQsIHBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIHN1cHBvcnQgY2FzZSBjcmVhdGVkIGZvciB5b3UgcmVnYXJkaW5nIHRoaXMgZXZlbnQuICovXG4gICAgcHVibGljIEFXU0NvbXByb21pc2VkS2V5UXVhcmFudGluZVYzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbXByb21pc2VkS2V5UXVhcmFudGluZVYzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIENvbmZpZyB0byBjYWxsIEFXUyBzZXJ2aWNlcyBhbmQgZGVwbG95IGNvbmZpZyByZXNvdXJjZXMgYWNyb3NzIG9yZ2FuaXphdGlvbiAqL1xuICAgIHB1YmxpYyBBV1NDb25maWdNdWx0aUFjY291bnRTZXR1cFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb25maWdNdWx0aUFjY291bnRTZXR1cFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgQ29uZmlnIHRvIHJlbWVkaWF0ZSBub25jb21wbGlhbnQgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NDb25maWdSZW1lZGlhdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbmZpZ1JlbWVkaWF0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIENvbmZpZyB0byBjYWxsIHJlYWQtb25seSBBV1MgT3JnYW5pemF0aW9ucyBBUElzICovXG4gICAgcHVibGljIEFXU0NvbmZpZ1JvbGVGb3JPcmdhbml6YXRpb25zKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbmZpZ1JvbGVGb3JPcmdhbml6YXRpb25zKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gdG8gYWNjZXNzIHRoZSBBV1MgQ29uZmlnIEFQSSBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc25hcHNob3RzIHRoYXQgQVdTIENvbmZpZyBkZWxpdmVycyBwZXJpb2RpY2FsbHkgdG8gQW1hem9uIFMzLiBUaGlzIGFjY2VzcyBpcyByZXF1aXJlZCBieSBmdW5jdGlvbnMgdGhhdCBldmFsdWF0ZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgZm9yIGN1c3RvbSBDb25maWcgcnVsZXMuICovXG4gICAgcHVibGljIEFXU0NvbmZpZ1J1bGVzRXhlY3V0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb25maWdSdWxlc0V4ZWN1dGlvblJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQ29uZmlnIHRvIGNhbGwgQVdTIHNlcnZpY2VzIGFuZCBjb2xsZWN0IHJlc291cmNlIGNvbmZpZ3VyYXRpb25zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NDb25maWdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb25maWdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byB1c2UgQVdTIENvbmZpZywgaW5jbHVkaW5nIHNlYXJjaGluZyBieSB0YWdzIG9uIHJlc291cmNlcywgYW5kIHJlYWRpbmcgYWxsIHRhZ3MuIFRoaXMgZG9lcyBub3QgcHJvdmlkZSBwZXJtaXNzaW9uIHRvIGNvbmZpZ3VyZSBBV1MgQ29uZmlnLCB3aGljaCByZXF1aXJlcyBhZG1pbmlzdHJhdGl2ZSBwcml2aWxlZ2VzLiAqL1xuICAgIHB1YmxpYyBBV1NDb25maWdVc2VyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbmZpZ1VzZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGJyb2FkIHJlYWQvd3JpdGUgYWNjZXNzIHRvIEFMTCBFQzIgb2JqZWN0cywgcmVhZC93cml0ZSBhY2Nlc3MgdG8gUzMgYnVja2V0cyBzdGFydGluZyB3aXRoICdpbXBvcnQtdG8tZWMyLScsIGFuZCB0aGUgYWJpbGl0eSB0byBsaXN0IGFsbCBTMyBidWNrZXRzLCBmb3IgdGhlIEFXUyBDb25uZWN0b3IgdG8gaW1wb3J0IFZNcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTQ29ubmVjdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0Nvbm5lY3Rvcik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgQ29udHJvbCBUb3dlciB0byBjYWxsIEFXUyBzZXJ2aWNlcyB0aGF0IHByb3ZpZGUgYXV0b21hdGVkIGFjY291bnQgY29uZmlndXJhdGlvbiBhbmQgY2VudHJhbGl6ZWQgZ292ZXJuYW5jZSBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTQ29udHJvbFRvd2VyQWNjb3VudFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbnRyb2xUb3dlckFjY291bnRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIG1hbmFnZSB0aGUgSUFNIElkZW50aXR5IENlbnRlciAoSWRDKSByZXNvdXJjZXMgaW4gdGhlIG1lbWJlciBhY2NvdW50cyBlbnJvbGxlZCB3aXRoIEFXUyBDb250cm9sIFRvd2VyLiBUaGUgcG9saWN5IGlzIGF0dGFjaGVkIHRvIHRoZSBBV1NDb250cm9sVG93ZXJBZG1pbiByb2xlIG9ubHkgaWYgdGhlIGN1c3RvbWVyIGhhcyBvcHRlZC1pbnRvIElBTSBJZEMgaW50ZWdyYXRpb24gaW4gdGhlaXIgQVdTIENvbnRyb2wgVG93ZXIgTGFuZGluZyBab25lLiAqL1xuICAgIHB1YmxpYyBBV1NDb250cm9sVG93ZXJJZGVudGl0eUNlbnRlck1hbmFnZW1lbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTQ29udHJvbFRvd2VySWRlbnRpdHlDZW50ZXJNYW5hZ2VtZW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBSZXNvdXJjZXMgbWFuYWdlZCBvciB1c2VkIGJ5IEFXUyBDb250cm9sIFRvd2VyICovXG4gICAgcHVibGljIEFXU0NvbnRyb2xUb3dlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0NvbnRyb2xUb3dlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIHRvIGRlc2NyaWJlIHRoZSBvcmdhbml6YXRpb24gb2YgdGhlIGFjY291bnQsIGNyZWF0ZSBTMyBidWNrZXRzIGZvciB0aGUgTUFQIHByb2dyYW0gYW5kIGFwcGx5IHRhZ3MgdG8gaXQsIGNyZWF0ZSBhIENvc3QgYW5kIFVzYWdlIFJlcG9ydCwgYW5kIGRlc2NyaWJlIENvc3QgYW5kIFVzYWdlIFJlcG9ydCBkZWZpbml0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTQ29zdEFuZFVzYWdlUmVwb3J0QXV0b21hdGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NDb3N0QW5kVXNhZ2VSZXBvcnRBdXRvbWF0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR2l2ZXMgRGF0YSBHcmFudCBvd25lcnMgYWNjZXNzIHRvIEFXUyBEYXRhIEV4Y2hhbmdlIGFjdGlvbnMgdXNpbmcgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YUV4Y2hhbmdlRGF0YUdyYW50T3duZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFFeGNoYW5nZURhdGFHcmFudE93bmVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdpdmVzIERhdGEgR3JhbnQgcmVjZWl2ZXIgYWNjZXNzIHRvIEFXUyBEYXRhIEV4Y2hhbmdlIGFjdGlvbnMgdXNpbmcgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YUV4Y2hhbmdlRGF0YUdyYW50UmVjZWl2ZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFFeGNoYW5nZURhdGFHcmFudFJlY2VpdmVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyB0byBBV1MgRGF0YSBFeGNoYW5nZSBhbmQgQVdTIE1hcmtldHBsYWNlIGFjdGlvbnMgdXNpbmcgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gSXQgYWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgbmVlZGVkIHRvIHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgQVdTIERhdGEgRXhjaGFuZ2UuICovXG4gICAgcHVibGljIEFXU0RhdGFFeGNoYW5nZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YUV4Y2hhbmdlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBkYXRhIHByb3ZpZGVyIGFjY2VzcyB0byBBV1MgRGF0YSBFeGNoYW5nZSBhbmQgQVdTIE1hcmtldHBsYWNlIGFjdGlvbnMgdXNpbmcgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gSXQgYWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgbmVlZGVkIHRvIHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgQVdTIERhdGEgRXhjaGFuZ2UuICovXG4gICAgcHVibGljIEFXU0RhdGFFeGNoYW5nZVByb3ZpZGVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhRXhjaGFuZ2VQcm92aWRlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgRGF0YSBFeGNoYW5nZSBhbmQgQVdTIE1hcmtldHBsYWNlIGFjdGlvbnMgdXNpbmcgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YUV4Y2hhbmdlUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YUV4Y2hhbmdlUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIERhdGEgRXhjaGFuZ2UgdG8gYWNjZXNzIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBBV1MgRGF0YSBFeGNoYW5nZSBmb3IgbGljZW5zZSBtYW5hZ2VtZW50LiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhRXhjaGFuZ2VTZXJ2aWNlUm9sZVBvbGljeUZvckxpY2Vuc2VNYW5hZ2VtZW50KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFFeGNoYW5nZVNlcnZpY2VSb2xlUG9saWN5Rm9yTGljZW5zZU1hbmFnZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIERhdGEgRXhjaGFuZ2UgdG8gcmVhZCBkYXRhIGFib3V0IHlvdXIgQVdTIE9yZ2FuaXphdGlvbiB0byBkZXRlcm1pbmUgZWxpZ2liaWxpdHkgZm9yIEFXUyBEYXRhIEV4Y2hhbmdlIGRhdGEgZ3JhbnRzIGxpY2Vuc2UgZGlzdHJpYnV0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhRXhjaGFuZ2VTZXJ2aWNlUm9sZVBvbGljeUZvck9yZ2FuaXphdGlvbkRpc2NvdmVyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhRXhjaGFuZ2VTZXJ2aWNlUm9sZVBvbGljeUZvck9yZ2FuaXphdGlvbkRpc2NvdmVyeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBkYXRhIHN1YnNjcmliZXIgYWNjZXNzIHRvIEFXUyBEYXRhIEV4Y2hhbmdlIGFuZCBBV1MgTWFya2V0cGxhY2UgYWN0aW9ucyB1c2luZyB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSBhbmQgU0RLLiBJdCBhbHNvIHByb3ZpZGVzIHNlbGVjdCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyBuZWVkZWQgdG8gdGFrZSBmdWxsIGFkdmFudGFnZSBvZiBBV1MgRGF0YSBFeGNoYW5nZS4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YUV4Y2hhbmdlU3Vic2NyaWJlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YUV4Y2hhbmdlU3Vic2NyaWJlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucyB0byBBV1MgRGF0YSBMaWZlY3ljbGUgTWFuYWdlciB0byB0YWtlIGFjdGlvbnMgb24gQVdTIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NEYXRhTGlmZWN5Y2xlTWFuYWdlclNlcnZpY2VSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFMaWZlY3ljbGVNYW5hZ2VyU2VydmljZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucyB0byBBV1MgRGF0YSBMaWZlY3ljbGUgTWFuYWdlciB0byB0YWtlIGFjdGlvbnMgb24gQVdTIHJlc291cmNlcyBmb3IgQU1JIE1hbmFnZW1lbnQgKi9cbiAgICBwdWJsaWMgQVdTRGF0YUxpZmVjeWNsZU1hbmFnZXJTZXJ2aWNlUm9sZUZvckFNSU1hbmFnZW1lbnQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YUxpZmVjeWNsZU1hbmFnZXJTZXJ2aWNlUm9sZUZvckFNSU1hbmFnZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBbWF6b24gRGF0YSBMaWZlY3ljbGUgTWFuYWdlciBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdGhlIFN5c3RlbXMgTWFuYWdlciBhY3Rpb25zIHJlcXVpcmVkIHRvIHJ1biBwcmUgYW5kIHBvc3Qgc2NyaXB0cyBvbiBhbGwgQW1hem9uIEVDMiBpbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFXU0RhdGFMaWZlY3ljbGVNYW5hZ2VyU1NNRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhTGlmZWN5Y2xlTWFuYWdlclNTTUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBEYXRhIFBpcGVsaW5lLCBsaXN0IGFjY2VzcyBmb3IgUzMsIER5bmFtb0RCLCBSZWRzaGlmdCwgUkRTLCBTTlMsIGFuZCBJQU0gcm9sZXMsIGFuZCBwYXNzUm9sZSBhY2Nlc3MgZm9yIGRlZmF1bHQgUm9sZXMuICovXG4gICAgcHVibGljIEFXU0RhdGFQaXBlbGluZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YVBpcGVsaW5lRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIERhdGEgUGlwZWxpbmUsIGxpc3QgYWNjZXNzIGZvciBTMywgRHluYW1vREIsIFJlZHNoaWZ0LCBSRFMsIFNOUywgYW5kIElBTSByb2xlcywgYW5kIHBhc3NSb2xlIGFjY2VzcyBmb3IgZGVmYXVsdCBSb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTRGF0YVBpcGVsaW5lUG93ZXJVc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFQaXBlbGluZVBvd2VyVXNlcik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBEYXRhU3luYyBEaXNjb3ZlcnkgdG8gaW50ZWdyYXRlIHdpdGggb3RoZXIgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NEYXRhU3luY0Rpc2NvdmVyeVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFTeW5jRGlzY292ZXJ5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRGF0YVN5bmMgYW5kIG1pbmltYWwgYWNjZXNzIHRvIGl0cyBkZXBlbmRlbmNpZXMgKi9cbiAgICBwdWJsaWMgQVdTRGF0YVN5bmNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RhdGFTeW5jRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIERhdGFTeW5jICovXG4gICAgcHVibGljIEFXU0RhdGFTeW5jUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGF0YVN5bmNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBEYXRhU3luYyB0byBpbnRlZ3JhdGUgd2l0aCBvdGhlciBBV1Mgc2VydmljZXMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQVdTRGF0YVN5bmNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEYXRhU3luY1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIERlYWRsaW5lIENsb3VkIHdvcmtlcnMgd2l0aCBhY2Nlc3MgdG8gcnVuIHRhc2tzIG9uIGEgZmFybS4gKi9cbiAgICBwdWJsaWMgQVdTRGVhZGxpbmVDbG91ZEZsZWV0V29ya2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlYWRsaW5lQ2xvdWRGbGVldFdvcmtlcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHVzZXIgd29ya3N0YXRpb24gYWNjZXNzIHRvIEFXUyBEZWFkbGluZSBDbG91ZCBmYXJtcyB3aXRoIGxpbWl0ZWQgUmVhZC1Pbmx5IHBlcm1pc3Npb25zIHRvIGNhbGwgb3RoZXIgbmVjZXNzYXJ5IHNlcnZpY2VzLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8gdGhlIHVzZXIgcm9sZSBhc3NvY2lhdGVkIHdpdGggeW91ciBzdHVkaW8uICovXG4gICAgcHVibGljIEFXU0RlYWRsaW5lQ2xvdWRVc2VyQWNjZXNzRmFybXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVhZGxpbmVDbG91ZFVzZXJBY2Nlc3NGYXJtcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHVzZXIgd29ya3N0YXRpb24gYWNjZXNzIHRvIEFXUyBEZWFkbGluZSBDbG91ZCBmbGVldHMgd2l0aCBsaW1pdGVkIFJlYWQtT25seSBwZXJtaXNzaW9ucyB0byBjYWxsIG90aGVyIG5lY2Vzc2FyeSBzZXJ2aWNlcy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHRoZSB1c2VyIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHlvdXIgc3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBBV1NEZWFkbGluZUNsb3VkVXNlckFjY2Vzc0ZsZWV0cygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWFkbGluZUNsb3VkVXNlckFjY2Vzc0ZsZWV0cyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHVzZXIgd29ya3N0YXRpb24gYWNjZXNzIHRvIEFXUyBEZWFkbGluZSBDbG91ZCBqb2JzIHdpdGggbGltaXRlZCBSZWFkLU9ubHkgcGVybWlzc2lvbnMgdG8gY2FsbCBvdGhlciBuZWNlc3Nhcnkgc2VydmljZXMuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB0aGUgdXNlciByb2xlIGFzc29jaWF0ZWQgd2l0aCB5b3VyIHN0dWRpby4gKi9cbiAgICBwdWJsaWMgQVdTRGVhZGxpbmVDbG91ZFVzZXJBY2Nlc3NKb2JzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlYWRsaW5lQ2xvdWRVc2VyQWNjZXNzSm9icyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHVzZXIgd29ya3N0YXRpb24gYWNjZXNzIHRvIEFXUyBEZWFkbGluZSBDbG91ZCBxdWV1ZXMgd2l0aCBsaW1pdGVkIFJlYWQtT25seSBwZXJtaXNzaW9ucyB0byBjYWxsIG90aGVyIG5lY2Vzc2FyeSBzZXJ2aWNlcy4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHRoZSB1c2VyIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHlvdXIgc3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBBV1NEZWFkbGluZUNsb3VkVXNlckFjY2Vzc1F1ZXVlcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWFkbGluZUNsb3VkVXNlckFjY2Vzc1F1ZXVlcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyBmb3IgQVdTIERlYWRsaW5lIENsb3VkIHdvcmtlciBob3N0cyB0byBqb2luIGEgZmxlZXQgaW4gYSBmYXJtLiAqL1xuICAgIHB1YmxpYyBBV1NEZWFkbGluZUNsb3VkV29ya2VySG9zdCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWFkbGluZUNsb3VkV29ya2VySG9zdCk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHNwZWNpZmllcyBwZXJtaXNzaW9ucyByZXF1aXJlZCBieSBEZWVwTGVucyBBZG1pbmlzdHJhdGl2ZSBsYW1iZGEgZnVuY3Rpb25zIHRoYXQgcnVuIG9uIGEgRGVlcExlbnMgZGV2aWNlICovXG4gICAgcHVibGljIEFXU0RlZXBMZW5zTGFtYmRhRnVuY3Rpb25BY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVlcExlbnNMYW1iZGFGdW5jdGlvbkFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBBV1MgRGVlcExlbnMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcywgcmVzb3VyY2VzIGFuZCByb2xlcyBuZWVkZWQgYnkgRGVlcExlbnMgYW5kIGl0cyBkZXBlbmRlbmNpZXMgaW5jbHVkaW5nIElvVCwgUzMsIEdyZWVuR3Jhc3MgYW5kIEFXUyBMYW1iZGEuICovXG4gICAgcHVibGljIEFXU0RlZXBMZW5zU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVlcExlbnNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIERlZXBSYWNlciBhZG1pbiBhY2Nlc3MgdG8gYWxsIGFjdGlvbnMgaW5jbHVkaW5nIHRvZ2dsaW5nIGJldHdlZW4gbXVsdGl1c2VyIGFuZCBzaW5nbGUgdXNlciBtb2RlLiAqL1xuICAgIHB1YmxpYyBBV1NEZWVwUmFjZXJBY2NvdW50QWRtaW5BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVlcFJhY2VyQWNjb3VudEFkbWluQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIENsb3VkRm9ybWF0aW9uIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIEFXUyBzdGFja3MgYW5kIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRGVlcFJhY2VyQ2xvdWRGb3JtYXRpb25BY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGVlcFJhY2VyQ2xvdWRGb3JtYXRpb25BY2Nlc3NQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBEZWVwUmFjZXIgTXVsdGlVc2VyIERlZmF1bHQgdXNlciBhY2Nlc3MgdG8gdXNlIGRlZXByYWNlciBpbiBtdWx0aS11c2VyIG1vZGUgKi9cbiAgICBwdWJsaWMgQVdTRGVlcFJhY2VyRGVmYXVsdE11bHRpVXNlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWVwUmFjZXJEZWZhdWx0TXVsdGlVc2VyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIERlZXBSYWNlci4gQWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgKGUuZy4sIFMzKS4gKi9cbiAgICBwdWJsaWMgQVdTRGVlcFJhY2VyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZWVwUmFjZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFJvYm9NYWtlciB0byBjcmVhdGUgcmVxdWlyZWQgcmVzb3VyY2VzIGFuZCBjYWxsIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRGVlcFJhY2VyUm9ib01ha2VyQWNjZXNzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlZXBSYWNlclJvYm9NYWtlckFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBEZWVwUmFjZXIgdG8gY3JlYXRlIHJlcXVpcmVkIHJlc291cmNlcyBhbmQgY2FsbCBBV1Mgc2VydmljZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0RlZXBSYWNlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlZXBSYWNlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRGVueSBhbGwgYWNjZXNzLiAqL1xuICAgIHB1YmxpYyBBV1NEZW55QWxsKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RlbnlBbGwpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgQVdTIERldmljZSBGYXJtIG9wZXJhdGlvbnMuICovXG4gICAgcHVibGljIEFXU0RldmljZUZhcm1GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RldmljZUZhcm1GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnQgcGVybWlzc2lvbnMgdG8gQVdTIERldmljZSBGYXJtIHRvIGNhbGwgRUMyIE5ldHdvcmsgQVBJcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRGV2aWNlRmFybVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RldmljZUZhcm1TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50IHBlcm1pc3Npb25zIHRvIEFXUyBEZXZpY2UgRmFybSB0byBjYWxsIEVDMiBBUElzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NEZXZpY2VGYXJtVGVzdEdyaWRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEZXZpY2VGYXJtVGVzdEdyaWRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBEaXJlY3QgQ29ubmVjdCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU0RpcmVjdENvbm5lY3RGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RpcmVjdENvbm5lY3RGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgRGlyZWN0IENvbm5lY3QgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NEaXJlY3RDb25uZWN0UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGlyZWN0Q29ubmVjdFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIERpcmVjdCBDb25uZWN0IHBlcm1pc3Npb24gdG8gY3JlYXRlIGFuZCBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRGlyZWN0Q29ubmVjdFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RpcmVjdENvbm5lY3RTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBEaXJlY3RvcnkgU2VydmljZSBEYXRhLiAqL1xuICAgIHB1YmxpYyBBV1NEaXJlY3RvcnlTZXJ2aWNlRGF0YUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGlyZWN0b3J5U2VydmljZURhdGFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBV1MgRGlyZWN0b3J5IFNlcnZpY2UgRGF0YSAqL1xuICAgIHB1YmxpYyBBV1NEaXJlY3RvcnlTZXJ2aWNlRGF0YVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RpcmVjdG9yeVNlcnZpY2VEYXRhUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRGlyZWN0b3J5IFNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU0RpcmVjdG9yeVNlcnZpY2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RpcmVjdG9yeVNlcnZpY2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgRGlyZWN0b3J5IFNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU0RpcmVjdG9yeVNlcnZpY2VSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEaXJlY3RvcnlTZXJ2aWNlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIHRoZSBEaXJlY3RvcnkgU2VydmljZSBTZXJ2aWNlIExpbmtlZCBSb2xlICovXG4gICAgcHVibGljIEFXU0RpcmVjdG9yeVNlcnZpY2VTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NEaXJlY3RvcnlTZXJ2aWNlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB3cml0ZSBhY2Nlc3MgdG8gQVdTIHJlc291cmNlcyByZXF1aXJlZCBmb3IgQVdTIERpc2NvdmVyeSBDb250aW51b3VzIEV4cG9ydCAqL1xuICAgIHB1YmxpYyBBV1NEaXNjb3ZlcnlDb250aW51b3VzRXhwb3J0RmlyZWhvc2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRGlzY292ZXJ5Q29udGludW91c0V4cG9ydEZpcmVob3NlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIERNUyBGbGVldCBBZHZpc29yIHRvIG1hbmFnZSBDbG91ZFdhdGNoIG1ldHJpY3Mgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0RNU0ZsZWV0QWR2aXNvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0RNU0ZsZWV0QWR2aXNvclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIEFXUyBETVMgU2VydmVybGVzcyBwZXJtaXNzaW9ucyB0byBjcmVhdGUgYW5kIG1hbmFnZSBETVMgcmVzb3VyY2VzIGluIHlvdXIgYWNjb3VudCBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBV1NETVNTZXJ2ZXJsZXNzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRE1TU2VydmVybGVzc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEVDMiBDYXBhY2l0eSBNYW5hZ2VyIHRvIG1hbmFnZSBjYXBhY2l0eSByZXNvdXJjZXMgYW5kIGludGVncmF0ZSB3aXRoIEFXUyBPcmdhbml6YXRpb25zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NFQzJDYXBhY2l0eU1hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFQzJDYXBhY2l0eU1hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBFQzIgQ2FwYWNpdHlSZXNlcnZhdGlvbiBGbGVldCBzZXJ2aWNlIHRvIG1hbmFnZSBDYXBhY2l0eSBSZXNlcnZhdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTRUMyQ2FwYWNpdHlSZXNlcnZhdGlvbkZsZWV0Um9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFQzJDYXBhY2l0eVJlc2VydmF0aW9uRmxlZXRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEVDMiBGbGVldCB0byBsYXVuY2ggYW5kIG1hbmFnZSBpbnN0YW5jZXMuICovXG4gICAgcHVibGljIEFXU0VDMkZsZWV0U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRUMyRmxlZXRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBFQzIgU3BvdCBGbGVldCB0byBsYXVuY2ggYW5kIG1hbmFnZSBzcG90IGZsZWV0IGluc3RhbmNlcyAqL1xuICAgIHB1YmxpYyBBV1NFQzJTcG90RmxlZXRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFQzJTcG90RmxlZXRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBFQzIgU3BvdCB0byBsYXVuY2ggYW5kIG1hbmFnZSBzcG90IGluc3RhbmNlcyAqL1xuICAgIHB1YmxpYyBBV1NFQzJTcG90U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRUMyU3BvdFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgdG8gdGhlIElBTSByb2xlIHRoYXQncyBhdHRhY2hlZCB0byB5b3VyIEFtYXpvbiBFQzIgV2luZG93cyBJbnN0YW5jZXMgdG8gZW5hYmxlIHRoZSBBbWF6b24gRUMyIFZTUyBzb2x1dGlvbiB0byBjcmVhdGUgYW5kIGFkZCB0YWdzIHRvIEFtYXpvbiBNYWNoaW5lIEltYWdlcyAoQU1JKSBhbmQgRUJTIFNuYXBzaG90cy4gKi9cbiAgICBwdWJsaWMgQVdTRUMyVnNzU25hcHNob3RQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRUMyVnNzU25hcHNob3RQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1Mgc2VydmljZXMgYW5kIHJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQVdTIEVDUiBwdWxsIHRocm91Z2ggY2FjaGUgKi9cbiAgICBwdWJsaWMgQVdTRUNSUHVsbFRocm91Z2hDYWNoZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VDUlB1bGxUaHJvdWdoQ2FjaGVTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgdGhlIGluc3RhbmNlIGluIHlvdXIgY3VzdG9tIHBsYXRmb3JtIGJ1aWxkZXIgZW52aXJvbm1lbnQgcGVybWlzc2lvbiB0byBsYXVuY2ggRUMyIGluc3RhbmNlLCBjcmVhdGUgRUJTIHNuYXBzaG90IGFuZCBBTUksIHN0cmVhbSBsb2dzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MsIGFuZCBzdG9yZSBhcnRpZmFjdHMgaW4gQW1hem9uIFMzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrQ3VzdG9tUGxhdGZvcm1mb3JFQzJSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtDdXN0b21QbGF0Zm9ybWZvckVDMlJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgRWxhc3RpYyBCZWFuc3RhbGsgU2VydmljZSBwb2xpY3kgZm9yIEhlYWx0aCBNb25pdG9yaW5nIHN5c3RlbSAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrRW5oYW5jZWRIZWFsdGgoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa0VuaGFuY2VkSGVhbHRoKTtcbiAgICB9XG5cbiAgICAvKiogQVdTIEVsYXN0aWMgQmVhbnN0YWxrIFNlcnZpY2UgUm9sZSBwb2xpY3kgdGhhdCBncmFudHMgbGltaXRlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgeW91ciByZXNvdXJjZXMgb24geW91ciBiZWhhbGYgZm9yIG1haW50ZW5hbmNlIHB1cnBvc2VzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrTWFpbnRlbmFuY2UoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa01haW50ZW5hbmNlKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgZm9yIHRoZSBBV1MgRWxhc3RpYyBCZWFuc3RhbGsgc2VydmljZSByb2xlIHVzZWQgdG8gcGVyZm9ybSBtYW5hZ2VkIHVwZGF0ZXMgb2YgRWxhc3RpYyBCZWFuc3RhbGsgZW52aXJvbm1lbnRzLiBUaGlzIHBvbGljeSBzaG91bGQgbm90IGJlIGF0dGFjaGVkIHRvIG90aGVyIHVzZXJzIG9yIHJvbGVzLiBUaGUgcG9saWN5IGdyYW50cyBicm9hZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgYW5kIG1hbmFnZSByZXNvdXJjZXMgYWNyb3NzIGEgbnVtYmVyIG9mIEFXUyBzZXJ2aWNlcyBpbmNsdWRpbmcgQXV0b1NjYWxpbmcsIEVDMiwgRUNTLCBFbGFzdGljIExvYWQgQmFsYW5jaW5nIGFuZCBDbG91ZEZvcm1hdGlvbi4gIFRoaXMgcG9saWN5IGFsc28gYWxsb3dzIHBhc3Npbmcgb2YgYW55IElBTSByb2xlIHVzYWJsZSB3aXRoIHRob3NlIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrTWFuYWdlZFVwZGF0ZXNDdXN0b21lclJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa01hbmFnZWRVcGRhdGVzQ3VzdG9tZXJSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQVdTIEVsYXN0aWMgQmVhbnN0YWxrIFNlcnZpY2UgUm9sZSBwb2xpY3kgdGhhdCBncmFudHMgbGltaXRlZCBwZXJtaXNzaW9ucyB0byBtYW5hZ2VkIHVwZGF0ZXMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtNYW5hZ2VkVXBkYXRlc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtNYW5hZ2VkVXBkYXRlc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSB0aGUgaW5zdGFuY2VzIGluIHlvdXIgbXVsdGljb250YWluZXIgRG9ja2VyIGVudmlyb25tZW50IGFjY2VzcyB0byB1c2UgdGhlIEFtYXpvbiBFQzIgQ29udGFpbmVyIFNlcnZpY2UgdG8gbWFuYWdlIGNvbnRhaW5lciBkZXBsb3ltZW50IHRhc2tzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrTXVsdGljb250YWluZXJEb2NrZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa011bHRpY29udGFpbmVyRG9ja2VyKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHJlYWQtb25seSBwZXJtaXNzaW9ucy4gRXhwbGljaXRseSBhbGxvd3Mgb3BlcmF0b3JzIHRvIGdhaW4gZGlyZWN0IGFjY2VzcyB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZXMgcmVsYXRlZCB0byBBV1MgRWxhc3RpYyBCZWFuc3RhbGsgYXBwbGljYXRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVDb3JlIChFbGFzdGljIEJlYW5zdGFsayBvcGVyYXRpb25zIHJvbGUpIEFsbG93cyBjb3JlIG9wZXJhdGlvbiBvZiBhIHdlYiBzZXJ2aWNlIGVudmlyb25tZW50LiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrUm9sZUNvcmUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVDb3JlKTtcbiAgICB9XG5cbiAgICAvKiogKEVsYXN0aWMgQmVhbnN0YWxrIG9wZXJhdGlvbnMgcm9sZSkgQWxsb3dzIGFuIGVudmlyb25tZW50IHRvIG1hbmFnZSBBbWF6b24gQ2xvdWRXYXRjaCBMb2dzIGxvZyBncm91cHMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtSb2xlQ1dMKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtSb2xlQ1dMKTtcbiAgICB9XG5cbiAgICAvKiogKEVsYXN0aWMgQmVhbnN0YWxrIG9wZXJhdGlvbnMgcm9sZSkgQWxsb3dzIGEgbXVsdGljb250YWluZXIgRG9ja2VyIGVudmlyb25tZW50IHRvIG1hbmFnZSBBbWF6b24gRUNTIGNsdXN0ZXJzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrUm9sZUVDUygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrUm9sZUVDUyk7XG4gICAgfVxuXG4gICAgLyoqIChFbGFzdGljIEJlYW5zdGFsayBvcGVyYXRpb25zIHJvbGUpIEFsbG93cyBhbiBlbnZpcm9ubWVudCB0byBpbnRlZ3JhdGUgYW4gQW1hem9uIFJEUyBpbnN0YW5jZS4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVSRFMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVSRFMpO1xuICAgIH1cblxuICAgIC8qKiAoRWxhc3RpYyBCZWFuc3RhbGsgb3BlcmF0aW9ucyByb2xlKSBBbGxvd3MgYW4gZW52aXJvbm1lbnQgdG8gZW5hYmxlIEFtYXpvbiBTTlMgdG9waWMgaW50ZWdyYXRpb24uICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtSb2xlU05TKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtSb2xlU05TKTtcbiAgICB9XG5cbiAgICAvKiogKEVsYXN0aWMgQmVhbnN0YWxrIG9wZXJhdGlvbnMgcm9sZSkgQWxsb3dzIGEgd29ya2VyIGVudmlyb25tZW50IHRpZXIgdG8gY3JlYXRlIGFuIEFtYXpvbiBEeW5hbW9EQiB0YWJsZSBhbmQgYW4gQW1hem9uIFNRUyBxdWV1ZS4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0JlYW5zdGFsa1JvbGVXb3JrZXJUaWVyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtSb2xlV29ya2VyVGllcik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIG9uIGEgZGVwcmVjYXRpb24gcGF0aC4gU2VlIGRvY3VtZW50YXRpb24gZm9yIGd1aWRhbmNlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWxhc3RpY2JlYW5zdGFsay9sYXRlc3QvZGcvaWFtLXNlcnZpY2Vyb2xlLmh0bWwuIEFXUyBFbGFzdGljIEJlYW5zdGFsayBTZXJ2aWNlIHJvbGUgcG9saWN5IHdoaWNoIGdyYW50cyBwZXJtaXNzaW9ucyB0byBjcmVhdGUgJiBtYW5hZ2UgcmVzb3VyY2VzIChpLmUuOiBBdXRvU2NhbGluZywgRUMyLCBTMywgQ2xvdWRGb3JtYXRpb24sIEVMQiwgZXRjLikgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtTZXJ2aWNlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNCZWFuc3RhbGtTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKiogQVdTIEVsYXN0aWMgQmVhbnN0YWxrIFNlcnZpY2UgTGlua2VkIFJvbGUgcG9saWN5IHdoaWNoIGdyYW50cyBwZXJtaXNzaW9ucyB0byBjcmVhdGUgJiBtYW5hZ2UgcmVzb3VyY2VzIChpLmUuOiBBdXRvU2NhbGluZywgRUMyLCBTMywgQ2xvdWRGb3JtYXRpb24sIEVMQiwgZXRjLikgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNCZWFuc3RhbGtTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHRoZSBpbnN0YW5jZXMgaW4geW91ciB3ZWIgc2VydmVyIGVudmlyb25tZW50IGFjY2VzcyB0byB1cGxvYWQgbG9nIGZpbGVzIHRvIEFtYXpvbiBTMy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0JlYW5zdGFsa1dlYlRpZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0JlYW5zdGFsa1dlYlRpZXIpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlIHRoZSBpbnN0YW5jZXMgaW4geW91ciB3b3JrZXIgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHVwbG9hZCBsb2cgZmlsZXMgdG8gQW1hem9uIFMzLCB0byB1c2UgQW1hem9uIFNRUyB0byBtb25pdG9yIHlvdXIgYXBwbGljYXRpb24ncyBqb2IgcXVldWUsIHRvIHVzZSBBbWF6b24gRHluYW1vREIgdG8gcGVyZm9ybSBsZWFkZXIgZWxlY3Rpb24sIGFuZCB0byBBbWF6b24gQ2xvdWRXYXRjaCB0byBwdWJsaXNoIG1ldHJpY3MgZm9yIGhlYWx0aCBtb25pdG9yaW5nLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljQmVhbnN0YWxrV29ya2VyVGllcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljQmVhbnN0YWxrV29ya2VyVGllcik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBpbnN0YWxsaW5nIHRoZSBBV1MgUmVwbGljYXRpb24gQWdlbnQsIHdoaWNoIGlzIHVzZWQgd2l0aCBBV1MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSB0byByZWNvdmVyIGV4dGVybmFsIHNlcnZlcnMgdG8gQVdTLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMgd2hvc2UgY3JlZGVudGlhbHMgeW91IHByb3ZpZGUgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gc3RlcCBvZiB0aGUgQVdTIFJlcGxpY2F0aW9uIEFnZW50LiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUFnZW50SW5zdGFsbGF0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5QWdlbnRJbnN0YWxsYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgdXNpbmcgdGhlIEFXUyBSZXBsaWNhdGlvbiBBZ2VudCwgd2hpY2ggaXMgdXNlZCB3aXRoIEFXUyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChEUlMpIHRvIHJlY292ZXIgc291cmNlIHNlcnZlcnMgdG8gQVdTLiBXZSBkbyBub3QgcmVjb21tZW5kIHRoYXQgeW91IGF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlBZ2VudFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUFnZW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIHB1YmxpYyBBUElzIG9mIEFXUyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChEUlMpLCBhcyB3ZWxsIGFzIHBlcm1pc3Npb25zIHRvIHJlYWQgS01TIGtleSwgTGljZW5zZSBNYW5hZ2VyLCBSZXNvdXJjZSBHcm91cHMsIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcsIElBTSwgYW5kIEVDMiBpbmZvcm1hdGlvbi4gQXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5Q29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBwcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgcHVibGljIEFQSXMgb2YgQVdTIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgKEFXUyBEUlMpLCBhcyB3ZWxsIGFzIGFsbCBwdWJsaWMgQVBJcyBpbiBvdGhlciBBV1Mgc2VydmljZXMgdXNlZCBieSBBV1MgRFJTIENvbnNvbGUuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUNvbnNvbGVGdWxsQWNjZXNzVjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlDb25zb2xlRnVsbEFjY2Vzc1YyKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgdG8gdGhlIEFXUyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IENvbnZlcnNpb24gc2VydmVyJ3MgaW5zdGFuY2Ugcm9sZS4gVGhpcyBwb2xpY3kgYWxsb3dzIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgKERSUykgQ29udmVyc2lvbiBTZXJ2ZXJzLCB3aGljaCBhcmUgRUMyIGluc3RhbmNlcyBsYXVuY2hlZCBieSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5LCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBEUlMgc2VydmljZS4gQW4gSUFNIHJvbGUgd2l0aCB0aGlzIHBvbGljeSBpcyBhdHRhY2hlZCAoYXMgYW4gRUMyIEluc3RhbmNlIFByb2ZpbGUpIGJ5IERSUyB0byB0aGUgRFJTIENvbnZlcnNpb24gU2VydmVycywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgbGF1bmNoZWQgYW5kIHRlcm1pbmF0ZWQgYnkgRFJTLCB3aGVuIG5lZWRlZC4gV2UgZG8gbm90IHJlY29tbWVuZCB0aGF0IHlvdSBhdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuIERSUyBDb252ZXJzaW9uIFNlcnZlcnMgYXJlIHVzZWQgYnkgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSB3aGVuIHVzZXJzIGNob29zZSB0byByZWNvdmVyIHNvdXJjZSBzZXJ2ZXJzIHVzaW5nIHRoZSBEUlMgY29uc29sZSwgQ0xJLCBvciBBUEkuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5Q29udmVyc2lvblNlcnZlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUNvbnZlcnNpb25TZXJ2ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgQVdTIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgKERSUykgdG8gc3VwcG9ydCBjcm9zcy1hY2NvdW50IHJlcGxpY2F0aW9uIGFuZCBjcm9zcy1hY2NvdW50IGZhaWxiYWNrLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUNyb3NzQWNjb3VudFJlcGxpY2F0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5Q3Jvc3NBY2NvdW50UmVwbGljYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgaW5zdGFsbGluZyBhbmQgdXNpbmcgdGhlIEFXUyBSZXBsaWNhdGlvbiBBZ2VudCwgd2hpY2ggaXMgdXNlZCBieSBBV1MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSB0byByZWNvdmVyIHNvdXJjZSBzZXJ2ZXJzIHRoYXQgcnVuIG9uIEVDMiAoY3Jvc3MtcmVnaW9uIG9yIGNyb3NzLUFaKS4gQW4gSUFNIHJvbGUgd2l0aCB0aGlzIHBvbGljeSBzaG91bGQgYmUgYXR0YWNoZWQgKGFzIGFuIEVDMiBJbnN0YW5jZSBQcm9maWxlKSB0byB0aGUgRUMyIEluc3RhbmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlFYzJJbnN0YW5jZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUVjMkluc3RhbmNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogWW91IGNhbiBhdHRhY2ggdGhlIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5RmFpbGJhY2tJbnN0YWxsYXRpb25Qb2xpY3kgcG9saWN5IHRvIHlvdXIgSUFNIGlkZW50aXRpZXMuICBUaGlzIHBvbGljeSBhbGxvd3MgaW5zdGFsbGluZyB0aGUgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSBGYWlsYmFjayBDbGllbnQsIHdoaWNoIGlzIHVzZWQgdG8gZmFpbGJhY2sgUmVjb3ZlcnkgSW5zdGFuY2VzIGJhY2sgdG8geW91ciBvcmlnaW5hbCBzb3VyY2UgaW5mcmFzdHJ1Y3R1cmUuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcyB3aG9zZSBjcmVkZW50aWFscyB5b3UgcHJvdmlkZSB3aGVuIHJ1bm5pbmcgdGhlIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgRmFpbGJhY2sgQ2xpZW50LiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUZhaWxiYWNrSW5zdGFsbGF0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5RmFpbGJhY2tJbnN0YWxsYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgdXNpbmcgdGhlIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgRmFpbGJhY2sgQ2xpZW50LCB3aGljaCBpcyB1c2VkIHRvIGZhaWxiYWNrIFJlY292ZXJ5IEluc3RhbmNlcyBiYWNrIHRvIHlvdXIgb3JpZ2luYWwgc291cmNlIGluZnJhc3RydWN0dXJlLiBXZSBkbyBub3QgcmVjb21tZW5kIHRoYXQgeW91IGF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlGYWlsYmFja1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeUZhaWxiYWNrUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIHlvdSB0byB1c2UgQW1hem9uIFNTTSBhbmQgYWRkaXRpb25hbCBzZXJ2aWNlcyByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBydW4gcG9zdC1sYXVuY2ggYWN0aW9ucyBpbiBBV1MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoQVdTIERSUykuIEF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSByb2xlcyBvciB1c2Vycy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlMYXVuY2hBY3Rpb25zUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5TGF1bmNoQWN0aW9uc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBBV1MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSB0byBzdXBwb3J0IG5ldHdvcmsgcmVwbGljYXRpb24uICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5TmV0d29ya1JlcGxpY2F0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5TmV0d29ya1JlcGxpY2F0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogWW91IGNhbiBhdHRhY2ggdGhlIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5UmVhZE9ubHlBY2Nlc3MgcG9saWN5IHRvIHlvdXIgSUFNIGlkZW50aXRpZXMuICBUaGlzIHBvbGljeSBwcm92aWRlcyBwZXJtaXNzaW9ucyB0byBhbGwgcmVhZC1vbmx5IHB1YmxpYyBBUElzIG9mIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgKERSUyksIGFzIHdlbGwgYXMgc29tZSByZWFkLW9ubHkgQVBJcyBvZiBvdGhlciBBV1Mgc2VydmljZXMgdGhhdCBhcmUgcmVxdWlyZWQgaW4gb3JkZXIgdG8gbWFrZSBmdWxsIHJlYWQtb25seSB1c2Ugb2YgdGhlIERSUyBjb25zb2xlLiBBdHRhY2ggdGhpcyBwb2xpY3kgdG8geW91ciBJQU0gdXNlcnMgb3Igcm9sZXMuICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIGF0dGFjaGVkIHRvIHRoZSBpbnN0YW5jZSByb2xlIG9mIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkncyBSZWNvdmVyeSBJbnN0YW5jZS4gIFRoaXMgcG9saWN5IGFsbG93cyB0aGUgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSBSZWNvdmVyeSBJbnN0YW5jZSwgd2hpY2ggYXJlIEVDMiBpbnN0YW5jZXMgbGF1bmNoZWQgYnkgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAtIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIERSUyBzZXJ2aWNlLCBhbmQgdG8gYmUgYWJsZSB0byBmYWlsYmFjayB0byB0aGVpciBvcmlnaW5hbCBzb3VyY2UgaW5mcmFzdHJ1Y3R1cmUuIEFuIElBTSByb2xlIHdpdGggdGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgKGFzIGFuIEVDMiBJbnN0YW5jZSBQcm9maWxlKSBieSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IHRvIHRoZSBEUlMgUmVjb3ZlcnkgSW5zdGFuY2VzLiBXZSBkbyBub3QgcmVjb21tZW5kIHRoYXQgeW91IGF0dGFjaCB0aGlzIHBvbGljeSB0byB5b3VyIElBTSB1c2VycyBvciByb2xlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlSZWNvdmVyeUluc3RhbmNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5UmVjb3ZlcnlJbnN0YW5jZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGlzIGF0dGFjaGVkIHRvIHRoZSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IFJlcGxpY2F0aW9uIHNlcnZlcidzIGluc3RhbmNlIHJvbGUuIFRoaXMgcG9saWN5IGFsbG93cyB0aGUgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSAoRFJTKSBSZXBsaWNhdGlvbiBTZXJ2ZXJzLCB3aGljaCBhcmUgRUMyIGluc3RhbmNlcyBsYXVuY2hlZCBieSBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IC0gdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgRFJTIHNlcnZpY2UsIGFuZCB0byBjcmVhdGUgRUJTIHNuYXBzaG90cyBpbiB5b3VyIEFXUyBhY2NvdW50LiBBbiBJQU0gcm9sZSB3aXRoIHRoaXMgcG9saWN5IGlzIGF0dGFjaGVkIChhcyBhbiBFQzIgSW5zdGFuY2UgUHJvZmlsZSkgYnkgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSB0byB0aGUgRFJTIFJlcGxpY2F0aW9uIFNlcnZlcnMgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgbGF1bmNoZWQgYW5kIHRlcm1pbmF0ZWQgYnkgRFJTLCBhcyBuZWVkZWQuIERSUyBSZXBsaWNhdGlvbiBTZXJ2ZXJzIGFyZSB1c2VkIHRvIGZhY2lsaXRhdGUgZGF0YSByZXBsaWNhdGlvbiBmcm9tIHlvdXIgZXh0ZXJuYWwgc2VydmVycyB0byBBV1MsIGFzIHBhcnQgb2YgdGhlIHJlY292ZXJ5IHByb2Nlc3MgbWFuYWdlZCBieSBEUlMuIFdlIGRvIG5vdCByZWNvbW1lbmQgdGhhdCB5b3UgYXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeVJlcGxpY2F0aW9uU2VydmVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5UmVwbGljYXRpb25TZXJ2ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgRWxhc3RpYyBEaXNhc3RlciBSZWNvdmVyeSB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIEVsYXN0aWMgRGlzYXN0ZXIgUmVjb3ZlcnkgKERSUykgcmVzb3VyY2VzIHN1Y2ggYXMgc291cmNlIHNlcnZlcnMgYW5kIGpvYnMuIEl0IGFsc28gYWxsb3dzIGNyZWF0aW5nIGEgY29udmVydGVkIHNuYXBzaG90IGFuZCBzaGFyaW5nIHRoYXQgRUJTIHNuYXBzaG90IHdpdGggYSBzcGVjaWZpYyBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeVN0YWdpbmdBY2NvdW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNEaXNhc3RlclJlY292ZXJ5U3RhZ2luZ0FjY291bnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyB1c2VkIGJ5IEFXUyBFbGFzdGljIERpc2FzdGVyIFJlY292ZXJ5IChEUlMpIHRvIHJlY292ZXIgc291cmNlIHNlcnZlcnMgaW50byBhIHNlcGFyYXRlIHRhcmdldCBhY2NvdW50IGFuZCB0byBhbGxvdyBmYWlsaW5nIGJhY2suIFdlIGRvIG5vdCByZWNvbW1lbmQgdGhhdCB5b3UgYXR0YWNoIHRoaXMgcG9saWN5IHRvIHlvdXIgSUFNIHVzZXJzIG9yIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGFzdGljRGlzYXN0ZXJSZWNvdmVyeVN0YWdpbmdBY2NvdW50UG9saWN5VjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxhc3RpY0Rpc2FzdGVyUmVjb3ZlcnlTdGFnaW5nQWNjb3VudFBvbGljeVYyKTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSBMaW5rZWQgUm9sZSBQb2xpY3kgZm9yIEFXUyBFbGFzdGljIExvYWQgQmFsYW5jaW5nIENvbnRyb2wgUGxhbmUgLSBDbGFzc2ljICovXG4gICAgcHVibGljIEFXU0VsYXN0aWNMb2FkQmFsYW5jaW5nQ2xhc3NpY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsYXN0aWNMb2FkQmFsYW5jaW5nQ2xhc3NpY1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSBMaW5rZWQgUm9sZSBQb2xpY3kgZm9yIEFXUyBFbGFzdGljIExvYWQgQmFsYW5jaW5nIENvbnRyb2wgUGxhbmUgKi9cbiAgICBwdWJsaWMgQVdTRWxhc3RpY0xvYWRCYWxhbmNpbmdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGFzdGljTG9hZEJhbGFuY2luZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIEVsZW1lbnRhbCBNZWRpYUNvbm5lY3QgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYUNvbm5lY3RGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsZW1lbnRhbE1lZGlhQ29ubmVjdEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFXUyBFbGVtZW50YWwgTWVkaWFDb25uZWN0IHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFDb25uZWN0UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFDb25uZWN0UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhQ29udmVydCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFDb252ZXJ0RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYUNvbnZlcnRGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhQ29udmVydCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFDb252ZXJ0UmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFDb252ZXJ0UmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhTGl2ZSByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFMaXZlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYUxpdmVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhTGl2ZSByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFMaXZlUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFMaXZlUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhUGFja2FnZSByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFQYWNrYWdlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYVBhY2thZ2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhUGFja2FnZSByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFQYWNrYWdlUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFQYWNrYWdlUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgRWxlbWVudGFsIE1lZGlhUGFja2FnZVYyIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFQYWNrYWdlVjJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsZW1lbnRhbE1lZGlhUGFja2FnZVYyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIEVsZW1lbnRhbCBNZWRpYVBhY2thZ2VWMiByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU0VsZW1lbnRhbE1lZGlhUGFja2FnZVYyUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFQYWNrYWdlVjJSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIGFsbCBNZWRpYVN0b3JlIEFQSXMgKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFTdG9yZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFTdG9yZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgcGVybWlzc2lvbnMgZm9yIE1lZGlhU3RvcmUgQVBJcyAqL1xuICAgIHB1YmxpYyBBV1NFbGVtZW50YWxNZWRpYVN0b3JlUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRWxlbWVudGFsTWVkaWFTdG9yZVJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIEVsZW1lbnRhbCBNZWRpYVRhaWxvciByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFUYWlsb3JGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VsZW1lbnRhbE1lZGlhVGFpbG9yRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIEVsZW1lbnRhbCBNZWRpYVRhaWxvciByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTRWxlbWVudGFsTWVkaWFUYWlsb3JSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbGVtZW50YWxNZWRpYVRhaWxvclJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGVuYWJsZSBlbmhhbmNlZCBjbGFzc2ljIG5ldHdvcmtpbmcgbWFuYWdlbWVudCBmZWF0dXJlLiAqL1xuICAgIHB1YmxpYyBBV1NFbmhhbmNlZENsYXNzaWNOZXR3b3JraW5nTWFuZ2VtZW50UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VuaGFuY2VkQ2xhc3NpY05ldHdvcmtpbmdNYW5nZW1lbnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBjb25zb2xlIGZ1bGwgYWNjZXNzIHRvIEFXUyBFbnRpdHkgUmVzb2x1dGlvbiBhbmQgcmVsYXRlZCBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTRW50aXR5UmVzb2x1dGlvbkNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0VudGl0eVJlc29sdXRpb25Db25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIEVudGl0eSBSZXNvbHV0aW9uIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTRW50aXR5UmVzb2x1dGlvbkNvbnNvbGVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NFbnRpdHlSZXNvbHV0aW9uQ29uc29sZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHRoZSBGYXVsdCBJbmplY3Rpb24gU2ltdWxhdG9yIFNlcnZpY2UgcGVybWlzc2lvbiBpbiBFQzIgYW5kIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzIHRvIHBlcmZvcm0gRklTIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yRUMyQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yRUMyQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHRoZSBGYXVsdCBJbmplY3Rpb24gU2ltdWxhdG9yIFNlcnZpY2UgcGVybWlzc2lvbiBpbiBFQ1MgYW5kIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzIHRvIHBlcmZvcm0gRklTIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yRUNTQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yRUNTQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHRoZSBGYXVsdCBJbmplY3Rpb24gU2ltdWxhdG9yIFNlcnZpY2UgcGVybWlzc2lvbiBpbiBFS1MgYW5kIG90aGVyIHJlcXVpcmVkIHNlcnZpY2VzIHRvIHBlcmZvcm0gRklTIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yRUtTQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yRUtTQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHRoZSBGYXVsdCBJbmplY3Rpb24gU2ltdWxhdG9yIFNlcnZpY2UgcGVybWlzc2lvbiBpbiBFQzIgbmV0d29ya2luZyBhbmQgb3RoZXIgcmVxdWlyZWQgc2VydmljZXMgdG8gcGVyZm9ybSBGSVMgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTRmF1bHRJbmplY3Rpb25TaW11bGF0b3JOZXR3b3JrQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZhdWx0SW5qZWN0aW9uU2ltdWxhdG9yTmV0d29ya0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyB0aGUgRmF1bHQgSW5qZWN0aW9uIFNpbXVsYXRvciBTZXJ2aWNlIHBlcm1pc3Npb24gaW4gUkRTIGFuZCBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcyB0byBwZXJmb3JtIEZJUyBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NGYXVsdEluamVjdGlvblNpbXVsYXRvclJEU0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NGYXVsdEluamVjdGlvblNpbXVsYXRvclJEU0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyB0aGUgRmF1bHQgSW5qZWN0aW9uIFNpbXVsYXRvciBTZXJ2aWNlIHBlcm1pc3Npb24gaW4gU1NNIGFuZCBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcyB0byBwZXJmb3JtIEZJUyBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NGYXVsdEluamVjdGlvblNpbXVsYXRvclNTTUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NGYXVsdEluamVjdGlvblNpbXVsYXRvclNTTUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB0byBlbmFibGUgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFtYXpvbiBGaW5TcGFjZSAqL1xuICAgIHB1YmxpYyBBV1NGaW5TcGFjZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZpblNwYWNlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBGdWxsIGFjY2VzcyBmb3IgQVdTIEZNIEFkbWluaXN0cmF0b3IgKi9cbiAgICBwdWJsaWMgQVdTRk1BZG1pbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRk1BZG1pbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBSZWFkIG9ubHkgYWNjZXNzIGZvciBBV1MgRk0gQWRtaW5pc3RyYXRvciB0aGF0IGFsbG93cyBtb25pdG9yaW5nIEFXUyBGTSBvcGVyYXRpb25zICovXG4gICAgcHVibGljIEFXU0ZNQWRtaW5SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NGTUFkbWluUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBXQUYgYWN0aW9ucyBmb3IgQVdTIEZpcmV3YWxsIE1hbmFnZXIgbWVtYmVyIGFjY291bnRzICovXG4gICAgcHVibGljIEFXU0ZNTWVtYmVyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTRk1NZW1iZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIE1hbmFnZWQgcG9saWN5IGZvciBBV1MgRm9yIFdvcmRwcmVzcyBQbHVnaW4gKi9cbiAgICBwdWJsaWMgQVdTRm9yV29yZFByZXNzUGx1Z2luUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ZvcldvcmRQcmVzc1BsdWdpblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSB3aGljaCBhbGxvd3MgQVdTIENvZGUgQ29ubmVjdGlvbnMgdG8gc3luYyBjb250ZW50IGZyb20geW91ciBnaXQgcmVwb3NpdG9yeSAqL1xuICAgIHB1YmxpYyBBV1NHaXRTeW5jU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR2l0U3luY1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEFXUyBHbG9iYWwgQWNjZWxlcmF0b3IgdG8gbWFuYWdlIEVDMiBFbGFzdGljIE5ldHdvcmsgSW50ZXJmYWNlcyBhbmQgU2VjdXJpdHkgR3JvdXBzLiAqL1xuICAgIHB1YmxpYyBBV1NHbG9iYWxBY2NlbGVyYXRvclNMUlBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHbG9iYWxBY2NlbGVyYXRvclNMUlBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBHbHVlIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSAqL1xuICAgIHB1YmxpYyBBV1NHbHVlQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR2x1ZUNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIEdsdWUgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCBhY2Nlc3MgdG8gc2FnZW1ha2VyIG5vdGVib29rIGluc3RhbmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTR2x1ZUNvbnNvbGVTYWdlTWFrZXJOb3RlYm9va0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR2x1ZUNvbnNvbGVTYWdlTWFrZXJOb3RlYm9va0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgR2x1ZSBEYXRhQnJldyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuIEFsc28gcHJvdmlkZXMgc2VsZWN0IGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIChlLmcuLCBTMywgS01TLCBHbHVlKS4gKi9cbiAgICBwdWJsaWMgQXdzR2x1ZURhdGFCcmV3RnVsbEFjY2Vzc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Bd3NHbHVlRGF0YUJyZXdGdWxsQWNjZXNzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb24gdG8gZ2x1ZSB0byBwZXJmb3JtIGFjdGlvbiBvbiB1c2VyJ3MgZ2x1ZSBkYXRhIGNhdGFsb2csIHRoaXMgcG9saWN5IGFsc28gcHJvdmlkZXMgcGVybWlzc2lvbiB0byBlYzIgYWN0aW9ucyB0byBhbGxvdyBnbHVlIHRvIGNyZWF0ZSBFTkkgdG8gY29ubmVjdCB0byByZXNvdXJjZXMgaW4gdGhlIFZQQywgYWxzbyBhbGxvdyBnbHVlIHRvIGFjY2VzcyByZWdpc3RlcmVkIGRhdGEgaW4gbGFrZWZvcm1hdGlvbiBhbmQgcGVybWlzc2lvbiB0byBhY2Nlc3MgdXNlcidzIGNsb3Vkd2F0Y2ggKi9cbiAgICBwdWJsaWMgQVdTR2x1ZURhdGFCcmV3U2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR2x1ZURhdGFCcmV3U2VydmljZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIEdsdWUgU2NoZW1hIFJlZ2lzdHJ5IFNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQVdTR2x1ZVNjaGVtYVJlZ2lzdHJ5RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHbHVlU2NoZW1hUmVnaXN0cnlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRvIHRoZSBBV1MgR2x1ZSBTY2hlbWEgUmVnaXN0cnkgU2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NHbHVlU2NoZW1hUmVnaXN0cnlSZWFkb25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHbHVlU2NoZW1hUmVnaXN0cnlSZWFkb25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgQVdTIEdsdWUgc2VydmljZSByb2xlIHdoaWNoIGFsbG93cyBjdXN0b21lciB0byBtYW5hZ2Ugbm90ZWJvb2sgc2VydmVyICovXG4gICAgcHVibGljIEFXU0dsdWVTZXJ2aWNlTm90ZWJvb2tSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dsdWVTZXJ2aWNlTm90ZWJvb2tSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBV1MgR2x1ZSBzZXJ2aWNlIHJvbGUgd2hpY2ggYWxsb3dzIGFjY2VzcyB0byByZWxhdGVkIHNlcnZpY2VzIGluY2x1ZGluZyBFQzIsIFMzLCBhbmQgQ2xvdWR3YXRjaCBMb2dzICovXG4gICAgcHVibGljIEFXU0dsdWVTZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHbHVlU2VydmljZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0aGF0IGFsbG93cyB1c2VycyB0byBjcmVhdGUgYW5kIHVzZSBvbmx5IHRoZSBub3RlYm9vayBzZXNzaW9ucyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIuIFRoaXMgcG9saWN5IGFsc28gaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gZXhwbGljaXRseSBhbGxvdyB1c2VycyB0byBwYXNzIGEgcmVzdHJpY3RlZCBHbHVlIHNlc3Npb24gcm9sZS4gKi9cbiAgICBwdWJsaWMgQXdzR2x1ZVNlc3Npb25Vc2VyUmVzdHJpY3RlZE5vdGVib29rUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkF3c0dsdWVTZXNzaW9uVXNlclJlc3RyaWN0ZWROb3RlYm9va1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFsbCBBV1MgR2x1ZSByZXNvdXJjZXMgZXhjZXB0IGZvciBzZXNzaW9ucy4gQWxsb3dzIHVzZXJzIHRvIGNyZWF0ZSBhbmQgdXNlIG9ubHkgdGhlIG5vdGVib29rIHNlc3Npb25zIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlci4gVGhpcyBwb2xpY3kgYWxzbyBpbmNsdWRlcyBvdGhlciBwZXJtaXNzaW9ucyBuZWVkZWQgYnkgQVdTIEdsdWUgdG8gbWFuYWdlIEdsdWUgcmVzb3VyY2VzIGluIG90aGVyIEFXUyBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQXdzR2x1ZVNlc3Npb25Vc2VyUmVzdHJpY3RlZE5vdGVib29rU2VydmljZVJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQXdzR2x1ZVNlc3Npb25Vc2VyUmVzdHJpY3RlZE5vdGVib29rU2VydmljZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0aGF0IGFsbG93cyB1c2VycyB0byBjcmVhdGUgYW5kIHVzZSBvbmx5IHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9ucyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIuIFRoaXMgcG9saWN5IGFsc28gaW5jbHVkZXMgcGVybWlzc2lvbnMgdG8gZXhwbGljaXRseSBhbGxvdyB1c2VycyB0byBwYXNzIGEgcmVzdHJpY3RlZCBHbHVlIHNlc3Npb24gcm9sZS4gKi9cbiAgICBwdWJsaWMgQXdzR2x1ZVNlc3Npb25Vc2VyUmVzdHJpY3RlZFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Bd3NHbHVlU2Vzc2lvblVzZXJSZXN0cmljdGVkUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIEFXUyBHbHVlIHJlc291cmNlcyBleGNlcHQgZm9yIHNlc3Npb25zLiBBbGxvd3MgdXNlcnMgdG8gY3JlYXRlIGFuZCB1c2Ugb25seSB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyLiBUaGlzIHBvbGljeSBhbHNvIGluY2x1ZGVzIG90aGVyIHBlcm1pc3Npb25zIG5lZWRlZCBieSBBV1MgR2x1ZSB0byBtYW5hZ2UgR2x1ZSByZXNvdXJjZXMgaW4gb3RoZXIgQVdTIHNlcnZpY2VzICovXG4gICAgcHVibGljIEF3c0dsdWVTZXNzaW9uVXNlclJlc3RyaWN0ZWRTZXJ2aWNlUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Bd3NHbHVlU2Vzc2lvblVzZXJSZXN0cmljdGVkU2VydmljZVJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3Mgd2l0aGluIEFtYXpvbiBHcmFmYW5hIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHdvcmtzcGFjZXMgZm9yIHRoZSBlbnRpcmUgb3JnYW5pemF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NHcmFmYW5hQWNjb3VudEFkbWluaXN0cmF0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR3JhZmFuYUFjY291bnRBZG1pbmlzdHJhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogQWNjZXNzIHRvIHJlYWQgb25seSBvcGVyYXRpb25zIGluIEFtYXpvbiBHcmFmYW5hLiAqL1xuICAgIHB1YmxpYyBBV1NHcmFmYW5hQ29uc29sZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dyYWZhbmFDb25zb2xlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBvbmx5IHRoZSBhYmlsaXR5IHRvIHVwZGF0ZSB1c2VyIGFuZCBncm91cCBwZXJtaXNzaW9ucyBmb3IgQVdTIEdyYWZhbmEgd29ya3NwYWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTR3JhZmFuYVdvcmtzcGFjZVBlcm1pc3Npb25NYW5hZ2VtZW50KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dyYWZhbmFXb3Jrc3BhY2VQZXJtaXNzaW9uTWFuYWdlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFiaWxpdHkgdG8gdXBkYXRlIElBTSBJZGVudGl0eSBDZW50ZXIgKElkQykgdXNlciBhbmQgZ3JvdXAgcGVybWlzc2lvbnMgZm9yIEFtYXpvbiBNYW5hZ2VkIEdyYWZhbmEgd29ya3NwYWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTR3JhZmFuYVdvcmtzcGFjZVBlcm1pc3Npb25NYW5hZ2VtZW50VjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTR3JhZmFuYVdvcmtzcGFjZVBlcm1pc3Npb25NYW5hZ2VtZW50VjIpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBnaXZlcyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIEdyZWVuZ3Jhc3MgY29uZmlndXJhdGlvbiwgbWFuYWdlbWVudCBhbmQgZGVwbG95bWVudCBhY3Rpb25zICovXG4gICAgcHVibGljIEFXU0dyZWVuZ3Jhc3NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dyZWVuZ3Jhc3NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ2l2ZXMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgQVdTIEdyZWVuZ3Jhc3MgY29uZmlndXJhdGlvbiwgbWFuYWdlbWVudCBhbmQgZGVwbG95bWVudCBhY3Rpb25zICovXG4gICAgcHVibGljIEFXU0dyZWVuZ3Jhc3NSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHcmVlbmdyYXNzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIEFXUyBHcmVlbmdyYXNzIHNlcnZpY2Ugcm9sZSB3aGljaCBhbGxvd3MgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgaW5jbHVkaW5nIEFXUyBMYW1iZGEgYW5kIEFXUyBJb1QgdGhpbmcgc2hhZG93cy4gKi9cbiAgICBwdWJsaWMgQVdTR3JlZW5ncmFzc1Jlc291cmNlQWNjZXNzUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NHcmVlbmdyYXNzUmVzb3VyY2VBY2Nlc3NSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdGhlIERhdGFmbG93IEVuZHBvaW50IEluc3RhbmNlIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgQVdTIEdyb3VuZCBTdGF0aW9uIEFnZW50ICovXG4gICAgcHVibGljIEFXU0dyb3VuZFN0YXRpb25BZ2VudEluc3RhbmNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0dyb3VuZFN0YXRpb25BZ2VudEluc3RhbmNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBIZWFsdGggdG8gZW5hYmxlIHRoZSBIZWFsdGggZXZlbnQgcHJvY2Vzc29yIGZlYXR1cmUuICovXG4gICAgcHVibGljIEFXU0hlYWx0aEV2ZW50UHJvY2Vzc29yU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSGVhbHRoRXZlbnRQcm9jZXNzb3JTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIEhlYWx0aCBBcGlzIGFuZCBOb3RpZmljYXRpb25zIGFuZCB0aGUgUGVyc29uYWwgSGVhbHRoIERhc2hib2FyZCAqL1xuICAgIHB1YmxpYyBBV1NIZWFsdGhGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0hlYWx0aEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgSGVhbHRoIEltYWdpbmcgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTSGVhbHRoSW1hZ2luZ0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSGVhbHRoSW1hZ2luZ0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBIZWFsdGggSW1hZ2luZyBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NIZWFsdGhJbWFnaW5nUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSGVhbHRoSW1hZ2luZ1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdGhlIGxpc3Qgb2YgYWN0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIGZvciByb2xlcyBhc3N1bWVkIHdpdGggdGhlIElBTSBJZGVudGl0eSBDZW50ZXIgaWRlbnRpdHkgY29udGV4dC4gQVdTIFNlY3VyaXR5IFRva2VuIFNlcnZpY2UgKEFXUyBTVFMpIGF1dG9tYXRpY2FsbHkgYXR0YWNoZXMgdGhpcyBwb2xpY3kgdG8gYXNzdW1lZCByb2xlcy4gVGhlIGlkZW50aXR5IGNvbnRleHQgaXMgcGFzc2VkIGFzIFByb3ZpZGVkQ29udGV4dC4gKi9cbiAgICBwdWJsaWMgQVdTSUFNSWRlbnRpdHlDZW50ZXJBbGxvd0xpc3RGb3JJZGVudGl0eUNvbnRleHQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSUFNSWRlbnRpdHlDZW50ZXJBbGxvd0xpc3RGb3JJZGVudGl0eUNvbnRleHQpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gdGhlIElkZW50aXR5IFN5bmMgc2VydmljZSAqL1xuICAgIHB1YmxpYyBBV1NJZGVudGl0eVN5bmNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lkZW50aXR5U3luY0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBSZWFkIG9ubHkgYWNjZXNzIHRvIHRoZSBJZGVudGl0eSBTeW5jIHNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQVdTSWRlbnRpdHlTeW5jUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSWRlbnRpdHlTeW5jUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgQVdTIEltYWdlIEJ1aWxkZXIgYWN0aW9ucyBhbmQgcmVzb3VyY2Ugc2NvcGVkIGFjY2VzcyB0byByZWxhdGVkIEFXUyBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTSW1hZ2VCdWlsZGVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJbWFnZUJ1aWxkZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBhbGwgQVdTIEltYWdlIEJ1aWxkZXIgYWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTSW1hZ2VCdWlsZGVyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW1hZ2VCdWlsZGVyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gdGhlIGpvYnMgY3JlYXRlZCB1bmRlciB0aGUgQVdTIGFjY291bnQuICovXG4gICAgcHVibGljIEFXU0ltcG9ydEV4cG9ydEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW1wb3J0RXhwb3J0RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gdGhlIGpvYnMgY3JlYXRlZCB1bmRlciB0aGUgQVdTIGFjY291bnQuICovXG4gICAgcHVibGljIEFXU0ltcG9ydEV4cG9ydFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0ltcG9ydEV4cG9ydFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIEluY2lkZW50IE1hbmFnZXIgcGVybWlzc2lvbnMgdG8gY2FsbCBvdGhlciBBV1Mgc2VydmljZXMgYXMgYSBwYXJ0IG9mIG1hbmFnaW5nIGFuIGluY2lkZW50LiAqL1xuICAgIHB1YmxpYyBBV1NJbmNpZGVudE1hbmFnZXJJbmNpZGVudEFjY2Vzc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0luY2lkZW50TWFuYWdlckluY2lkZW50QWNjZXNzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gc3RhcnQsIHZpZXcsIGFuZCB1cGRhdGUgaW5jaWRlbnRzIHdpdGggZnVsbCBhY2Nlc3MgdG8gY3VzdG9tIHRpbWVsaW5lIGV2ZW50cyAmIHJlbGF0ZWQgaXRlbXMuIEFzc2lnbiB0aGlzIHBvbGljeSB0byB1c2VycyB3aG8gd2lsbCBjcmVhdGUgYW5kIHJlc29sdmUgaW5jaWRlbnRzLiAqL1xuICAgIHB1YmxpYyBBV1NJbmNpZGVudE1hbmFnZXJSZXNvbHZlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJbmNpZGVudE1hbmFnZXJSZXNvbHZlckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBJbmNpZGVudCBNYW5hZ2VyIHBlcm1pc3Npb24gdG8gbWFuYWdlIGluY2lkZW50IHJlY29yZHMgYW5kIHJlbGF0ZWQgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NJbmNpZGVudE1hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJbmNpZGVudE1hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIElvVCBBbmFseXRpY3MuICovXG4gICAgcHVibGljIEFXU0lvVEFuYWx5dGljc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UQW5hbHl0aWNzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gSW9UIEFuYWx5dGljcy4gKi9cbiAgICBwdWJsaWMgQVdTSW9UQW5hbHl0aWNzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UQW5hbHl0aWNzUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBnaXZlcyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIElvVCBjb25maWd1cmF0aW9uIGFjdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTSW9UQ29uZmlnQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVENvbmZpZ0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdpdmVzIHJlYWQgb25seSBhY2Nlc3MgdG8gdGhlIEFXUyBJb1QgY29uZmlndXJhdGlvbiBhY3Rpb25zICovXG4gICAgcHVibGljIEFXU0lvVENvbmZpZ1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVENvbmZpZ1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ2l2ZXMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFXUyBJb1QgbWVzc2FnaW5nIGFjdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTSW9URGF0YUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1REYXRhQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgd3JpdGUgYWNjZXNzIHRvIElvVCB0aGluZyBncm91cHMgYW5kIHJlYWQgYWNjZXNzIHRvIElvVCBDZXJ0aWZpY2F0ZXMgZm9yIGV4ZWN1dGlvbiBvZiBBRERfVEhJTkdTX1RPX1RISU5HX0dST1VQIG1pdGlnYXRpb24gYWN0aW9uICovXG4gICAgcHVibGljIEFXU0lvVERldmljZURlZmVuZGVyQWRkVGhpbmdzVG9UaGluZ0dyb3VwTWl0aWdhdGlvbkFjdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1REZXZpY2VEZWZlbmRlckFkZFRoaW5nc1RvVGhpbmdHcm91cE1pdGlnYXRpb25BY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIGFjY2VzcyBmb3IgSW9UIGFuZCByZWxhdGVkIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NJb1REZXZpY2VEZWZlbmRlckF1ZGl0KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVERldmljZURlZmVuZGVyQXVkaXQpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgZm9yIGVuYWJsaW5nIElvVCBsb2dnaW5nIGZvciBleGVjdXRpb24gb2YgRU5BQkxFX0lPVF9MT0dHSU5HIG1pdGlnYXRpb24gYWN0aW9uICovXG4gICAgcHVibGljIEFXU0lvVERldmljZURlZmVuZGVyRW5hYmxlSW9UTG9nZ2luZ01pdGlnYXRpb25BY3Rpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9URGV2aWNlRGVmZW5kZXJFbmFibGVJb1RMb2dnaW5nTWl0aWdhdGlvbkFjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIG1lc3NhZ2VzIHB1Ymxpc2ggYWNjZXNzIHRvIFNOUyB0b3BpYyBmb3IgZXhlY3V0aW9uIG9mIFBVQkxJU0hfRklORElOR19UT19TTlMgbWl0aWdhdGlvbiBhY3Rpb24gKi9cbiAgICBwdWJsaWMgQVdTSW9URGV2aWNlRGVmZW5kZXJQdWJsaXNoRmluZGluZ3NUb1NOU01pdGlnYXRpb25BY3Rpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9URGV2aWNlRGVmZW5kZXJQdWJsaXNoRmluZGluZ3NUb1NOU01pdGlnYXRpb25BY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB3cml0ZSBhY2Nlc3MgdG8gSW9UIHBvbGljaWVzIGZvciBleGVjdXRpb24gb2YgUkVQTEFDRV9ERUZBVUxUX1BPTElDWV9WRVJTSU9OIG1pdGlnYXRpb24gYWN0aW9uICovXG4gICAgcHVibGljIEFXU0lvVERldmljZURlZmVuZGVyUmVwbGFjZURlZmF1bHRQb2xpY3lNaXRpZ2F0aW9uQWN0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVERldmljZURlZmVuZGVyUmVwbGFjZURlZmF1bHRQb2xpY3lNaXRpZ2F0aW9uQWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgd3JpdGUgYWNjZXNzIHRvIElvVCBDQSBjZXJ0aWZpY2F0ZXMgZm9yIGV4ZWN1dGlvbiBvZiAgVVBEQVRFX0NBX0NFUlRJRklDQVRFIG1pdGlnYXRpb24gYWN0aW9uICovXG4gICAgcHVibGljIEFXU0lvVERldmljZURlZmVuZGVyVXBkYXRlQ0FDZXJ0TWl0aWdhdGlvbkFjdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1REZXZpY2VEZWZlbmRlclVwZGF0ZUNBQ2VydE1pdGlnYXRpb25BY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB3cml0ZSBhY2Nlc3MgdG8gSW9UIGNlcnRpZmljYXRlcyBmb3IgZXhlY3V0aW9uIG9mIFVQREFURV9ERVZJQ0VfQ0VSVElGSUNBVEUgbWl0aWdhdGlvbiBhY3Rpb24gKi9cbiAgICBwdWJsaWMgQVdTSW9URGV2aWNlRGVmZW5kZXJVcGRhdGVEZXZpY2VDZXJ0TWl0aWdhdGlvbkFjdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1REZXZpY2VEZWZlbmRlclVwZGF0ZURldmljZUNlcnRNaXRpZ2F0aW9uQWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBJb1QgRGV2aWNlIFRlc3RlciB0byBydW4gdGhlIEZyZWVSVE9TIHF1YWxpZmljYXRpb24gc3VpdGUgYnkgYWxsb3dpbmcgYWNjZXNzIHRvIHNlcnZpY2VzIGluY2x1ZGluZyBJb1QsIFMzLCBhbmQgSUFNICovXG4gICAgcHVibGljIEFXU0lvVERldmljZVRlc3RlckZvckZyZWVSVE9TRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1REZXZpY2VUZXN0ZXJGb3JGcmVlUlRPU0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIElvVCBEZXZpY2UgVGVzdGVyIHRvIHJ1biB0aGUgQVdTIEdyZWVuZ3Jhc3MgcXVhbGlmaWNhdGlvbiBzdWl0ZSBieSBhbGxvd2luZyBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyBpbmNsdWRpbmcgTGFtYmRhLCBJb1QsIEFQSSBHYXRld2F5LCBJQU0gKi9cbiAgICBwdWJsaWMgQVdTSW9URGV2aWNlVGVzdGVyRm9yR3JlZW5ncmFzc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9URGV2aWNlVGVzdGVyRm9yR3JlZW5ncmFzc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBJb1QgRXZlbnRzLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RFdmVudHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVEV2ZW50c0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIElvVCBFdmVudHMuICovXG4gICAgcHVibGljIEFXU0lvVEV2ZW50c1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVEV2ZW50c1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRmVkZXJhdGlvbiBhY2Nlc3MgZm9yIElvVCBGbGVldCBIdWIgYXBwbGljYXRpb25zICovXG4gICAgcHVibGljIEFXU0lvVEZsZWV0SHViRmVkZXJhdGlvbkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RGbGVldEh1YkZlZGVyYXRpb25BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gQVdTIFJlc291cmNlcyBhbmQgbWV0YURhdGEgdXNlZCBvciBtYW5hZ2VkIGJ5IEFXU0lvVEZsZWV0d2lzZSBmb3IgYXV4aWxpYXJ5IGZlYXR1cmVzICovXG4gICAgcHVibGljIEFXU0lvVEZsZWV0d2lzZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVEZsZWV0d2lzZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ2l2ZXMgZnVsbCBhY2Nlc3MgdG8gdGhlIEFXUyBJb1QgY29uZmlndXJhdGlvbiBhbmQgbWVzc2FnaW5nIGFjdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTSW9URnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGNyZWF0aW9uIG9mIEFtYXpvbiBDbG91ZFdhdGNoIExvZyBncm91cHMgYW5kIHN0cmVhbWluZyBsb2dzIHRvIHRoZSBncm91cHMgKi9cbiAgICBwdWJsaWMgQVdTSW9UTG9nZ2luZygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RMb2dnaW5nKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gbWFuYWdlZCBpbnRlZ3JhdGlvbnMgZm9yIEFXUyBJb1QgRGV2aWNlIE1hbmFnZW1lbnQgYW5kIHJlbGF0ZWQgc2VydmljZXMuICovXG4gICAgcHVibGljIEFXU0lvVE1hbmFnZWRJbnRlZ3JhdGlvbnNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVE1hbmFnZWRJbnRlZ3JhdGlvbnNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbWFuYWdlZCBpbnRlZ3JhdGlvbnMgZm9yIEFXUyBJb1QgRGV2aWNlIE1hbmFnZW1lbnQgcGVybWlzc2lvbiB0byBwdWJsaXNoIGxvZ3MgYW5kIG1ldHJpY3Mgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0lvVE1hbmFnZWRJbnRlZ3JhdGlvbnNSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVE1hbmFnZWRJbnRlZ3JhdGlvbnNSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFjY2VzcyB0byBjcmVhdGUgQVdTIElvVCBKb2IgYW5kIGRlc2NyaWJlIHRoZSBBV1MgY29kZSBzaWduZXIgam9iICovXG4gICAgcHVibGljIEFXU0lvVE9UQVVwZGF0ZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RPVEFVcGRhdGUpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBBV1Mgc2VydmljZXMgc3VwcG9ydGVkIGluIEFXUyBJb1QgUnVsZSBBY3Rpb25zICovXG4gICAgcHVibGljIEFXU0lvVFJ1bGVBY3Rpb25zKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFJ1bGVBY3Rpb25zKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gbWFuYWdlIEFXUyBJb1QgU2l0ZVdpc2UgdXNpbmcgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuIE5vdGUgdGhpcyBwb2xpY3kgYWxzbyBncmFudHMgYWNjZXNzIHRvIGNyZWF0ZSBhbmQgbGlzdCBkYXRhIHN0b3JlcyB1c2VkIHdpdGggQVdTIElvVCBTaXRlV2lzZSAoZS5nLiBBV1MgSW9UIEFuYWx5dGljcyksIGFjY2VzcyB0byBsaXN0IGFuZCB2aWV3IEFXUyBJb1QgR3JlZW5ncmFzcyByZXNvdXJjZXMsIGxpc3QgYW5kIG1vZGlmeSBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldHMsIHJldHJpZXZlIEFXUyBJb1QgdGhpbmcgc2hhZG93cywgbGlzdCByZXNvdXJjZXMgd2l0aCBzcGVjaWZpYyB0YWdzLCBhbmQgY3JlYXRlIGFuZCB1c2UgYSBzZXJ2aWNlLWxpbmtlZCByb2xlIGZvciBBV1MgSW9UIFNpdGVXaXNlLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RTaXRlV2lzZUNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFNpdGVXaXNlQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBJb1QgU2l0ZVdpc2UuICovXG4gICAgcHVibGljIEFXU0lvVFNpdGVXaXNlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RTaXRlV2lzZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgdG8gYWNjZXNzIEFXUyBJb1QgU2l0ZVdpc2UgYXNzZXRzIGFuZCBhc3NldCBkYXRhLCBjcmVhdGUgQVdTIElvVCBTaXRlV2lzZSBNb25pdG9yIHJlc291cmNlcywgYW5kIGxpc3QgQVdTIFNTTyB1c2Vycy4gKi9cbiAgICBwdWJsaWMgQVdTSW9UU2l0ZVdpc2VNb25pdG9yUG9ydGFsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFNpdGVXaXNlTW9uaXRvclBvcnRhbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcm9sZSBncmFudHMgQVdTIElvVCBTaXRlV2lzZSBtb25pdG9yIHBlcm1pc3Npb25zIHRvIGFjY2VzcyB5b3VyIEFXUyBJb1QgU2l0ZVdpc2UgYXNzZXRzICYgYXNzZXQgcHJvcGVydGllcywgYW5kIGNyZWF0ZSBBV1MgSW9UIFNpdGV3aXNlIHByb2plY3RzLCBkYXNoYm9hcmRzICYgYWNjZXNzIHBvbGljaWVzIHRocm91Z2ggQVdTIElvVCBTaXRlV2lzZSBwb3J0YWxzLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RTaXRlV2lzZU1vbml0b3JTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RTaXRlV2lzZU1vbml0b3JTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gSW9UIFNpdGVXaXNlLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RTaXRlV2lzZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFNpdGVXaXNlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgdXNlcnMgdG8gcmVnaXN0ZXIgdGhpbmdzIGF0IGJ1bGsgdXNpbmcgQVdTIElvVCBTdGFydFRoaW5nUmVnaXN0cmF0aW9uVGFzayBBUEkgKi9cbiAgICBwdWJsaWMgQVdTSW9UVGhpbmdzUmVnaXN0cmF0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFRoaW5nc1JlZ2lzdHJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgSW9UIFR3aW5NYWtlciB0byBjYWxsIG90aGVyIEFXUyBzZXJ2aWNlcyBhbmQgdG8gc3luYyB0aGVpciByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU0lvVFR3aW5NYWtlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFR3aW5NYWtlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBhc3NvY2lhdGVkIGlkZW50aXR5IGRhdGEgYWNjZXNzIHRvIEFXUyBJb1QgV2lyZWxlc3MgZGV2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTSW9UV2lyZWxlc3NEYXRhQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lvVFdpcmVsZXNzRGF0YUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB0aGUgYXNzb2NpYXRlZCBpZGVudGl0eSBmdWxsIGFjY2VzcyB0byBhbGwgQVdTIElvVCBXaXJlbGVzcyBvcGVyYXRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RXaXJlbGVzc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UV2lyZWxlc3NGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgSW9UIFdpcmVsZXNzIGZ1bGwgYWNjZXNzIHRvIHB1Ymxpc2ggdG8gSW9UIFJ1bGVzIEVuZ2luZSBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTSW9UV2lyZWxlc3NGdWxsUHVibGlzaEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RXaXJlbGVzc0Z1bGxQdWJsaXNoQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBhc3NvY2lhdGVkIGlkZW50aXR5IGFjY2VzcyB0byBjcmVhdGUsIGxpc3QgYW5kIGRlc2NyaWJlIElvVCBDZXJ0aWZpY2F0ZXMgKi9cbiAgICBwdWJsaWMgQVdTSW9UV2lyZWxlc3NHYXRld2F5Q2VydE1hbmFnZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UV2lyZWxlc3NHYXRld2F5Q2VydE1hbmFnZXIpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIGFzc29jaWF0ZWQgaWRlbnRpdHkgdG8gY3JlYXRlIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MgZ3JvdXBzIGFuZCBzdHJlYW0gbG9ncyB0byB0aGUgZ3JvdXBzLiAqL1xuICAgIHB1YmxpYyBBV1NJb1RXaXJlbGVzc0xvZ2dpbmcoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSW9UV2lyZWxlc3NMb2dnaW5nKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBhc3NvY2lhdGVkIGlkZW50aXR5IHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIElvVCB3aXJlbGVzcy4gKi9cbiAgICBwdWJsaWMgQVdTSW9UV2lyZWxlc3NSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJb1RXaXJlbGVzc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFZQQyBJUCBBZGRyZXNzIE1hbmFnZXIgdG8gYWNjZXNzIFZQQyByZXNvdXJjZXMgYW5kIGludGVncmF0ZSB3aXRoIEFXUyBPcmdhbml6YXRpb25zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NJUEFNU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTSVBBTVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVXNlZCBieSBBV1MgSVEgdG8gZXhlY3V0ZSBwYXltZW50IHJlcXVlc3RzIG9uIGJlaGFsZiBvZiBhIGN1c3RvbWVyICovXG4gICAgcHVibGljIEFXU0lRQ29udHJhY3RTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NJUUNvbnRyYWN0U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgSVEgKi9cbiAgICBwdWJsaWMgQVdTSVFGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lRRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgSVEgdG8gbWFuYWdlIHRoZSByb2xlIGFzc3VtZWQgYnkgQVdTIElRIGV4cGVydHMuICovXG4gICAgcHVibGljIEFXU0lRUGVybWlzc2lvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0lRUGVybWlzc2lvblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIHNlcnZpY2VzIGFuZCByZXNvdXJjZXMgcmVxdWlyZWQgZm9yIEFXUyBLTVMgY3VzdG9tIGtleSBzdG9yZXMgKi9cbiAgICBwdWJsaWMgQVdTS2V5TWFuYWdlbWVudFNlcnZpY2VDdXN0b21LZXlTdG9yZXNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NLZXlNYW5hZ2VtZW50U2VydmljZUN1c3RvbUtleVN0b3Jlc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBBV1MgS01TIHRvIHN5bmNocm9uaXplIHRoZSBzaGFyZWQgcHJvcGVydGllcyBvZiBtdWx0aS1SZWdpb24ga2V5cy4gKi9cbiAgICBwdWJsaWMgQVdTS2V5TWFuYWdlbWVudFNlcnZpY2VNdWx0aVJlZ2lvbktleXNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NLZXlNYW5hZ2VtZW50U2VydmljZU11bHRpUmVnaW9uS2V5c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpLiAqL1xuICAgIHB1YmxpYyBBV1NLZXlNYW5hZ2VtZW50U2VydmljZVBvd2VyVXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NLZXlNYW5hZ2VtZW50U2VydmljZVBvd2VyVXNlcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGNyb3NzIGFjY291bnQgYWNjZXNzIHRvIEdsdWUgcmVzb3VyY2VzIHZpYSBMYWtlIEZvcm1hdGlvbi4gQWxzbyBncmFudHMgcmVhZCBhY2Nlc3MgdG8gb3RoZXIgcmVxdWlyZWQgc2VydmljZXMgc3VjaCBhcyBvcmdhbml6YXRpb25zIGFuZCByZXNvdXJjZSBhY2Nlc3MgbWFuYWdlciAqL1xuICAgIHB1YmxpYyBBV1NMYWtlRm9ybWF0aW9uQ3Jvc3NBY2NvdW50TWFuYWdlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYWtlRm9ybWF0aW9uQ3Jvc3NBY2NvdW50TWFuYWdlcik7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gQVdTIExha2UgRm9ybWF0aW9uIGFuZCByZWxhdGVkIHNlcnZpY2VzLCBzdWNoIGFzIEFXUyBHbHVlLCB0byBtYW5hZ2UgZGF0YSBsYWtlcyAqL1xuICAgIHB1YmxpYyBBV1NMYWtlRm9ybWF0aW9uRGF0YUFkbWluKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xha2VGb3JtYXRpb25EYXRhQWRtaW4pO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgdG8gQVdTIExhbWJkYSBzZXJ2aWNlLCBBV1MgTGFtYmRhIGNvbnNvbGUgZmVhdHVyZXMsIGFuZCBvdGhlciByZWxhdGVkIEFXUyBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIExhbWJkYSBzZXJ2aWNlLCBBV1MgTGFtYmRhIGNvbnNvbGUgZmVhdHVyZXMsIGFuZCBvdGhlciByZWxhdGVkIEFXUyBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGFtYmRhUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB3cml0ZSBwZXJtaXNzaW9ucyB0byBDbG91ZFdhdGNoIExvZ3MuICovXG4gICAgcHVibGljIEFXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBsaXN0IGFuZCByZWFkIGFjY2VzcyB0byBEeW5hbW9EQiBzdHJlYW1zIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0byBDbG91ZFdhdGNoIGxvZ3MuICovXG4gICAgcHVibGljIEFXU0xhbWJkYUR5bmFtb0RCRXhlY3V0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFEeW5hbW9EQkV4ZWN1dGlvblJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBtaW5pbXVtIHBlcm1pc3Npb25zIGZvciBhIExhbWJkYSBmdW5jdGlvbiB0byBtYW5hZ2UgRU5JcyAoY3JlYXRlLCBkZXNjcmliZSwgZGVsZXRlKSB1c2VkIGJ5IGEgVlBDLWVuYWJsZWQgTGFtYmRhIEZ1bmN0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFFTklNYW5hZ2VtZW50QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYUVOSU1hbmFnZW1lbnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBQdXQsIEdldCBhY2Nlc3MgdG8gUzMgYW5kIGZ1bGwgYWNjZXNzIHRvIENsb3VkV2F0Y2ggTG9ncy4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhRXhlY3V0ZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFFeGVjdXRlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBhY2Nlc3MgdG8gRHluYW1vREIgU3RyZWFtcy4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhSW52b2NhdGlvbkR5bmFtb0RCKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xhbWJkYUludm9jYXRpb25EeW5hbW9EQik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGxpc3QgYW5kIHJlYWQgYWNjZXNzIHRvIEtpbmVzaXMgc3RyZWFtcyBhbmQgd3JpdGUgcGVybWlzc2lvbnMgdG8gQ2xvdWRXYXRjaCBsb2dzLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFLaW5lc2lzRXhlY3V0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFLaW5lc2lzRXhlY3V0aW9uUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIGFjY2VzcyBNU0sgQ2x1c3RlciB3aXRoaW4gYSBWUEMsIG1hbmFnZSBFTklzIChjcmVhdGUsIGRlc2NyaWJlLCBkZWxldGUpIGluIHRoZSBWUEMgYW5kIHdyaXRlIHBlcm1pc3Npb25zIHRvIENsb3VkV2F0Y2ggTG9ncy4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhTVNLRXhlY3V0aW9uUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFNU0tFeGVjdXRpb25Sb2xlKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIExhbWJkYSBSZXBsaWNhdG9yIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyB0byByZXBsaWNhdGUgZnVuY3Rpb25zIGFjcm9zcyByZWdpb25zICovXG4gICAgcHVibGljIEFXU0xhbWJkYVJlcGxpY2F0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGFtYmRhUmVwbGljYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciBBV1MgTGFtYmRhIHNlcnZpY2Ugcm9sZS4gKi9cbiAgICBwdWJsaWMgQVdTTGFtYmRhUm9sZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMYW1iZGFSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVjZWl2ZSBtZXNzYWdlLCBkZWxldGUgbWVzc2FnZSwgYW5kIHJlYWQgYXR0cmlidXRlIGFjY2VzcyB0byBTUVMgcXVldWVzLCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgdG8gQ2xvdWRXYXRjaCBsb2dzLiAqL1xuICAgIHB1YmxpYyBBV1NMYW1iZGFTUVNRdWV1ZUV4ZWN1dGlvblJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGFtYmRhU1FTUXVldWVFeGVjdXRpb25Sb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbWluaW11bSBwZXJtaXNzaW9ucyBmb3IgYSBMYW1iZGEgZnVuY3Rpb24gdG8gZXhlY3V0ZSB3aGlsZSBhY2Nlc3NpbmcgYSByZXNvdXJjZSB3aXRoaW4gYSBWUEMgLSBjcmVhdGUsIGRlc2NyaWJlLCBkZWxldGUgbmV0d29yayBpbnRlcmZhY2VzIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0byBDbG91ZFdhdGNoIExvZ3MuICovXG4gICAgcHVibGljIEFXU0xhbWJkYVZQQ0FjY2Vzc0V4ZWN1dGlvblJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGFtYmRhVlBDQWNjZXNzRXhlY3V0aW9uUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGFsbG93IGFjY2VzcyB0byB0aGUgQVdTIExpY2Vuc2UgTWFuYWdlciBBUEkgYWN0aW9ucyByZXF1aXJlZCB0byBjb25zdW1lIHVwb24gbGljZW5zZXMgdGhhdCB0aGUgdXNlciBoYXMgZW50aXRsZW1lbnRzLiAqL1xuICAgIHB1YmxpYyBBV1NMaWNlbnNlTWFuYWdlckNvbnN1bXB0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xpY2Vuc2VNYW5hZ2VyQ29uc3VtcHRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIExpY2Vuc2UgTWFuYWdlciBMaW51eCBTdWJzY3JpcHRpb25zIFNlcnZpY2UgdG8gbWFuYWdlIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTTGljZW5zZU1hbmFnZXJMaW51eFN1YnNjcmlwdGlvbnNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NMaWNlbnNlTWFuYWdlckxpbnV4U3Vic2NyaXB0aW9uc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQVdTIExpY2Vuc2UgTWFuYWdlciBzZXJ2aWNlIG1hc3RlciBhY2NvdW50IHJvbGUgcG9saWN5ICovXG4gICAgcHVibGljIEFXU0xpY2Vuc2VNYW5hZ2VyTWFzdGVyQWNjb3VudFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGljZW5zZU1hbmFnZXJNYXN0ZXJBY2NvdW50Um9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBMaWNlbnNlIE1hbmFnZXIgc2VydmljZSBtZW1iZXIgYWNjb3VudCByb2xlIHBvbGljeSAqL1xuICAgIHB1YmxpYyBBV1NMaWNlbnNlTWFuYWdlck1lbWJlckFjY291bnRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xpY2Vuc2VNYW5hZ2VyTWVtYmVyQWNjb3VudFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgTGljZW5zZSBNYW5hZ2VyIHNlcnZpY2UgZGVmYXVsdCByb2xlIHBvbGljeSAqL1xuICAgIHB1YmxpYyBBV1NMaWNlbnNlTWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU0xpY2Vuc2VNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIExpY2Vuc2UgTWFuYWdlciBVc2VyIFN1YnNjcmlwdGlvbnMgU2VydmljZSB0byBtYW5hZ2UgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NMaWNlbnNlTWFuYWdlclVzZXJTdWJzY3JpcHRpb25zU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTGljZW5zZU1hbmFnZXJVc2VyU3Vic2NyaXB0aW9uc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBNMiB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTTTJTZXJ2aWNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU00yU2VydmljZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgTWFuYWdlZCBTZXJ2aWNlcyB0byByZWFkIHRoZSB2YWx1ZXMgb2YgdGhlIHRhZ3Mgb24gQVdTIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NNYW5hZ2VkU2VydmljZXNDb250YWN0c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hbmFnZWRTZXJ2aWNlc0NvbnRhY3RzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgTWFuYWdlZCBTZXJ2aWNlcyAtIHBvbGljeSB0byBtYW5hZ2UgZGV0ZWN0aXZlIGNvbnRyb2xzIGluZnJhc3RydWN0dXJlICovXG4gICAgcHVibGljIEFXU01hbmFnZWRTZXJ2aWNlc0RldGVjdGl2ZUNvbnRyb2xzQ29uZmlnU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFuYWdlZFNlcnZpY2VzRGV0ZWN0aXZlQ29udHJvbHNDb25maWdTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBNYW5hZ2VkIFNlcnZpY2VzIHBvbGljeSB0byBlbmFibGUgQU1TIGV2ZW50IHByb2Nlc3NvciBmZWF0dXJlLiAqL1xuICAgIHB1YmxpYyBBV1NNYW5hZ2VkU2VydmljZXNFdmVudHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYW5hZ2VkU2VydmljZXNFdmVudHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24ncyBBV1MgTWFuYWdlZCBTZXJ2aWNlJ3MgU2VsZiBTZXJ2aWNlIFJlcG9ydGluZyBmZWF0dXJlIHRvIHJlYWQgQVdTIE9yZ2FuaXphdGlvbiBkYXRhIG9uIHlvdXIgYmVoYWxmIHRvIGVuYWJsZSBvcmdhbml6YXRpb24gbGV2ZWwgYWdncmVnYXRlZCByZXBvcnRpbmcgKi9cbiAgICBwdWJsaWMgQVdTTWFuYWdlZFNlcnZpY2VzU2VsZlNlcnZpY2VSZXBvcnRpbmdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYW5hZ2VkU2VydmljZXNTZWxmU2VydmljZVJlcG9ydGluZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBNYW5hZ2VkIFNlcnZpY2VzIHRvIG1hbmFnZSBkZXBsb3ltZW50IHRvb2xraXQgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU01hbmFnZWRTZXJ2aWNlc0RlcGxveW1lbnRUb29sa2l0UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hbmFnZWRTZXJ2aWNlc0RlcGxveW1lbnRUb29sa2l0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gY29uZmlndXJlIGFuZCBjdXN0b21pemUgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgKi9cbiAgICBwdWJsaWMgQVdTTWFuYWdlbWVudENvbnNvbGVBZG1pbmlzdHJhdG9yQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hbmFnZW1lbnRDb25zb2xlQWRtaW5pc3RyYXRvckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBhY2Nlc3MgdG8gZXNzZW50aWFsIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgZmVhdHVyZXMgYW5kIHVzZXIgZXhwZXJpZW5jZSAoVVgpIGNhcGFiaWxpdGllcyBmb3Igbm9uLWFkbWluaXN0cmF0aXZlIHVzZXJzLiAqL1xuICAgIHB1YmxpYyBBV1NNYW5hZ2VtZW50Q29uc29sZUJhc2ljVXNlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYW5hZ2VtZW50Q29uc29sZUJhc2ljVXNlckFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgTWFya2V0cGxhY2UgdG8gY29weSB5b3VyIEFtYXpvbiBNYWNoaW5lIEltYWdlcyAoQU1JcykgaW4gb3JkZXIgdG8gbGlzdCB0aGVtIG9uIEFXUyBNYXJrZXRwbGFjZSAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZUFtaUluZ2VzdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZUFtaUluZ2VzdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgTWFya2V0cGxhY2UgdG8gY3JlYXRlIGFuZCBtYW5hZ2Ugc2VsbGVyIGRlcGxveW1lbnQgcGFyYW1ldGVycyBmb3IgdGhlIHByb2R1Y3RzIHRoYXQgeW91IHN1YnNjcmliZSB0byBvbiBBV1MgTWFya2V0cGxhY2UuICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlRGVwbG95bWVudFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlRGVwbG95bWVudFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gc3Vic2NyaWJlIGFuZCB1bnN1YnNjcmliZSB0byBBV1MgTWFya2V0cGxhY2Ugc29mdHdhcmUsIGFsbG93cyB1c2VycyB0byBtYW5hZ2UgTWFya2V0cGxhY2Ugc29mdHdhcmUgaW5zdGFuY2VzIGZyb20gdGhlIE1hcmtldHBsYWNlICdZb3VyIFNvZnR3YXJlJyBwYWdlLCBhbmQgcHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgYWNjZXNzIHRvIEVDMi4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgYWNjZXNzIHRvIEFXUyBNYXJrZXRwbGFjZSBFbnRpdGxlbWVudHMgKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VHZXRFbnRpdGxlbWVudHMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VHZXRFbnRpdGxlbWVudHMpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQVdTIE1hcmtldHBsYWNlIGZvciBsaWNlbnNlIG1hbmFnZW1lbnQuICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlTGljZW5zZU1hbmFnZW1lbnRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZUxpY2Vuc2VNYW5hZ2VtZW50U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byBzdWJzY3JpYmUgYW5kIHVuc3Vic2NyaWJlIHRvIEFXUyBNYXJrZXRwbGFjZSBzb2Z0d2FyZSAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZU1hbmFnZVN1YnNjcmlwdGlvbnMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VNYW5hZ2VTdWJzY3JpcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIE1hcmtldHBsYWNlIE1ldGVyaW5nLiAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZU1ldGVyaW5nRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZU1ldGVyaW5nRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIHJlZ2lzdGVyIGEgcmVzb3VyY2UgYW5kIHRyYWNrIHVzYWdlIHRocm91Z2ggQVdTIE1hcmtldHBsYWNlIE1ldGVyaW5nIFNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlTWV0ZXJpbmdSZWdpc3RlclVzYWdlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlTWV0ZXJpbmdSZWdpc3RlclVzYWdlKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIGFkbWluaXN0cmF0aXZlIGFjdGlvbnMgZm9yIGFuIEFXUyBNYXJrZXRwbGFjZSBlUHJvY3VyZW1lbnQgaW50ZWdyYXRpb24uICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlUHJvY3VyZW1lbnRTeXN0ZW1BZG1pbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VQcm9jdXJlbWVudFN5c3RlbUFkbWluRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIGZvciBBV1MgTWFya2V0cGxhY2Ugc2VydmljZXMgdG8gcHVyY2hhc2Ugb3JkZXIgbWFuYWdlbWVudC4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VQdXJjaGFzZU9yZGVyc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlUHVyY2hhc2VPcmRlcnNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHJldmlldyBBV1MgTWFya2V0cGxhY2Ugc3Vic2NyaXB0aW9ucyAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZVJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQVdTIE1hcmtldHBsYWNlIGZvciBSZXNhbGUgQXV0aG9yaXphdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VSZXNhbGVBdXRob3JpemF0aW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWFya2V0cGxhY2VSZXNhbGVBdXRob3JpemF0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBhbGwgc2VsbGVyIG9wZXJhdGlvbnMgb24gdGhlIEFXUyBNYXJrZXRwbGFjZSBhbmQgb3RoZXIgQVdTIHNlcnZpY2VzIHN1Y2ggYXMgQU1JIG1hbmFnZW1lbnQuICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlU2VsbGVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZVNlbGxlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBzZWxsZXJzIGFjY2VzcyB0byBPZmZlcnMgYW5kIEFncmVlbWVudHMgbWFuYWdlbWVudCBhY3Rpdml0aWVzLiAqL1xuICAgIHB1YmxpYyBBV1NNYXJrZXRwbGFjZVNlbGxlck9mZmVyTWFuYWdlbWVudCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNYXJrZXRwbGFjZVNlbGxlck9mZmVyTWFuYWdlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHNlbGxlcnMgZnVsbCBhY2Nlc3MgdG8gQVdTIE1hcmtldHBsYWNlIE1hbmFnZW1lbnQgUHJvZHVjdHMgcGFnZSBhbmQgb3RoZXIgQVdTIHNlcnZpY2VzIHN1Y2ggYXMgQU1JIG1hbmFnZW1lbnQuICovXG4gICAgcHVibGljIEFXU01hcmtldHBsYWNlU2VsbGVyUHJvZHVjdHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlU2VsbGVyUHJvZHVjdHNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBzZWxsZXJzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIE1hcmtldHBsYWNlIE1hbmFnZW1lbnQgUHJvZHVjdHMgcGFnZS4gKi9cbiAgICBwdWJsaWMgQVdTTWFya2V0cGxhY2VTZWxsZXJQcm9kdWN0c1JlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01hcmtldHBsYWNlU2VsbGVyUHJvZHVjdHNSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBkZWZhdWx0IHBvbGljeSB0aGF0IGVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBNZWRpYUNvbm5lY3QuICovXG4gICAgcHVibGljIEFXU01lZGlhQ29ubmVjdFNlcnZpY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWVkaWFDb25uZWN0U2VydmljZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBNZWRpYUxpdmUgQW55d2hlcmUgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTTWVkaWFMaXZlQW55d2hlcmVTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNZWRpYUxpdmVBbnl3aGVyZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlIGFjY2VzcyB0byBBV1MgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBNZWRpYVRhaWxvciAqL1xuICAgIHB1YmxpYyBBV1NNZWRpYVRhaWxvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01lZGlhVGFpbG9yU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgYWxsb3dzIEFXU01pZ3JhdGlvbkh1YlNlcnZpY2UgdG8gY2FsbCBBV1NBcHBsaWNhdGlvbkRpc2NvdmVyeVNlcnZpY2Ugb24gYmVoYWxmIG9mIHRoZSBjdXN0b21lci4gKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViRGlzY292ZXJ5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01pZ3JhdGlvbkh1YkRpc2NvdmVyeUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgdG8gYXNzdW1lIHJvbGUgaW4gY3VzdG9tZXIncyBhY2NvdW50IHRvIGNhbGwgTWlncmF0aW9uIEh1YiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJETVNBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViRE1TQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogTWFuYWdlZCBwb2xpY3kgdG8gcHJvdmlkZSB0aGUgY3VzdG9tZXIgYWNjZXNzIHRvIHRoZSBNaWdyYXRpb24gSHViIFNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbGltaXRlZCBhY2Nlc3MgdG8gQVdTIE1pZ3JhdGlvbiBIdWIsIEFXUyBBcHBsaWNhdGlvbiBEaXNjb3ZlcnkgU2VydmljZSwgQW1hem9uIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgYW5kIEFXUyBTZWNyZXRzIE1hbmFnZXIuIFRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFXUyBNaWdyYXRpb24gSHViIE9yY2hlc3RyYXRvciBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJPcmNoZXN0cmF0b3JDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJPcmNoZXN0cmF0b3JDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IG5lZWRzIHRvIGJlIGF0dGFjaGVkIGZvciBTQVAgYW5kIE1HTiBtaWdyYXRlZCBpbnN0YW5jZSBmb3Igb3VyIHNlcnZpY2UgdG8gb3JjaGVzdHJhdGUgaW5zdGFuY2VzIGJ5IGRvd25sb2FkaW5nIHNjcmlwdHMgZnJvbSBTMyBhbmQgdG8gZmV0Y2ggc2VjcmV0IHZhbHVlcyBpbnNpZGUgRUMyIGluc3RhbmNlLiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJPcmNoZXN0cmF0b3JJbnN0YW5jZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViT3JjaGVzdHJhdG9ySW5zdGFuY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbGltaXRlZCBhY2Nlc3MgdG8gQW1hem9uIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UsIEFXUyBTZWNyZXRzIE1hbmFnZXIgYW5kIFBsdWdpbiByZWxhdGVkIGFjdGlvbnMgZm9yIEFXUyBNaWdyYXRpb24gSHViIE9yY2hlc3RyYXRvci4gKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViT3JjaGVzdHJhdG9yUGx1Z2luKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01pZ3JhdGlvbkh1Yk9yY2hlc3RyYXRvclBsdWdpbik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIG5lY2Vzc2FyeSBmb3IgTWlncmF0aW9uIEh1YiBPcmNoZXN0cmF0b3IgdG8gbWlncmF0ZSBhbmQgbW9kZXJuaXplIHlvdXIgb24tcHJlbWlzZXMgd29ya2xvYWRzICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1Yk9yY2hlc3RyYXRvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01pZ3JhdGlvbkh1Yk9yY2hlc3RyYXRvclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFXUyBNaWdyYXRpb24gSHViIFJlZmFjdG9yIFNwYWNlcyBhbmQgb3RoZXIgQVdTIHJlbGF0ZWQgc2VydmljZXMgZXhjZXB0IEFXUyBUcmFuc2l0IEdhdGV3YXkgYW5kIEVDMiBzZWN1cml0eSBncm91cHMgbm90IHJlcXVpcmVkIHdoZW4gdXNpbmcgZW52aXJvbm1lbnRzIHdpdGhvdXQgYSBuZXR3b3JrIGJyaWRnZS4gVGhpcyBwb2xpY3kgYWxzbyBleGNsdWRlcyBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3IgQVdTIExhbWJkYSBhbmQgQVdTIFJlc291cmNlIEFjY2VzcyBNYW5hZ2VyIGFzIHRoZXkgY2FuIGJlIHNjb3BlZCBkb3duIGJhc2VkIG9uIHRhZ3MuICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1YlJlZmFjdG9yU3BhY2VzRW52aXJvbm1lbnRzV2l0aG91dEJyaWRnZXNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01pZ3JhdGlvbkh1YlJlZmFjdG9yU3BhY2VzRW52aXJvbm1lbnRzV2l0aG91dEJyaWRnZXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVXNlIGluIHRoZSBJQU0gc2VydmljZSByb2xlIHBhc3NlZCB0byB0aGUgU1NNIEF1dG9tYXRpb24gZG9jdW1lbnQgQVdTUmVmYWN0b3JTcGFjZXMtQ3JlYXRlUmVzb3VyY2VzIHRvIGdyYW50IHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIHJ1biB0aGUgYXV0b21hdGlvbi4gVGhlIHBvbGljeSBncmFudHMgcmVhZC93cml0ZSBhY2Nlc3MgdG8gRUMyIHRhZ3MgaW4gb3JkZXIgdG8gdHJhY2sgYXV0b21hdGlvbiBwcm9ncmVzcy4gV2hlbiB0aGUgUmVmYWN0b3IgU3BhY2VzIGVudmlyb25tZW50J3MgbmV0d29yayBicmlkZ2UgaXMgZW5hYmxlZCwgdGhlIGF1dG9tYXRpb24gYWxzbyBhZGRzIHRoZSBlbnZpcm9ubWVudCdzIHNlY3VyaXR5IGdyb3VwIHRvIHRoZSBFQzIgaW5zdGFuY2UgdG8gcGVybWl0IHRyYWZmaWMgZnJvbSBvdGhlciBSZWZhY3RvciBTcGFjZXMgc2VydmljZXMgaW4gdGhlIGVudmlyb25tZW50LiBUaGUgcG9saWN5IGFsc28gZ3JhbnRzIGFjY2VzcyB0byB0aGUgQXBwbGljYXRpb24gTWlncmF0aW9uIFNlcnZpY2UncyBwb3N0IGxhdW5jaCBhY3Rpb25zIFNTTSBwYXJhbWV0ZXJzLiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJSZWZhY3RvclNwYWNlc1NTTUF1dG9tYXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViUmVmYWN0b3JTcGFjZXNTU01BdXRvbWF0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFXUyBNaWdyYXRpb25IdWIgUmVmYWN0b3IgU3BhY2VzLCBBV1MgTWlncmF0aW9uSHViIFJlZmFjdG9yIFNwYWNlcyBjb25zb2xlIGZlYXR1cmVzIGFuZCBvdGhlciByZWxhdGVkIEFXUyBzZXJ2aWNlcyBleGNlcHQgcGVybWlzc2lvbnMgcmVxdWlyZWQgZm9yIEFXUyBMYW1iZGEgYW5kIEFXUyBSZXNvdXJjZSBBY2Nlc3MgTWFuYWdlciBhcyB0aGV5IGNhbiBiZSBzY29wZWQgZG93biBiYXNlZCBvbiB0YWdzLiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJSZWZhY3RvclNwYWNlc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViUmVmYWN0b3JTcGFjZXNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBSZXNvdXJjZXMgbWFuYWdlZCBvciB1c2VkIGJ5IEFXUyBNaWdyYXRpb24gSHViIFJlZmFjdG9yIFNwYWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTTWlncmF0aW9uSHViUmVmYWN0b3JTcGFjZXNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NNaWdyYXRpb25IdWJSZWZhY3RvclNwYWNlc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBTZXJ2ZXIgTWlncmF0aW9uIFNlcnZpY2UgdG8gYXNzdW1lIHJvbGUgaW4gY3VzdG9tZXIncyBhY2NvdW50IHRvIGNhbGwgTWlncmF0aW9uIEh1YiAqL1xuICAgIHB1YmxpYyBBV1NNaWdyYXRpb25IdWJTTVNBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViU01TQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIGFsbG93IGNvbW11bmljYXRpb24gd2l0aCB0aGUgQVdTIE1pZ3JhdGlvbiBIdWIgU3RyYXRlZ3kgUmVjb21tZW5kYXRpb25zIHNlcnZpY2UsIHJlYWQvd3JpdGUgYWNjZXNzIHRvIFMzIGJ1Y2tldHMgcmVsYXRlZCB0byB0aGUgc2VydmljZSwgQW1hem9uIEFQSSBHYXRld2F5IGFjY2VzcyB0byB1cGxvYWQgbG9ncyBhbmQgbWV0cmljcyB0byBBV1MsIEFXUyBTZWNyZXRzIE1hbmFnZXIgYWNjZXNzIHRvIGZldGNoIGNyZWRlbnRpYWxzLCBhbmQgYW55IHJlbGF0ZWQgc2VydmljZXMuICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1YlN0cmF0ZWd5Q29sbGVjdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01pZ3JhdGlvbkh1YlN0cmF0ZWd5Q29sbGVjdG9yKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIHRoZSBBV1MgTWlncmF0aW9uIEh1YiBTdHJhdGVneSBSZWNvbW1lbmRhdGlvbnMgc2VydmljZSBhbmQgYWNjZXNzIHRvIHJlbGF0ZWQgQVdTIHNlcnZpY2VzIHRocm91Z2ggdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1YlN0cmF0ZWd5Q29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViU3RyYXRlZ3lDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZSBhY2Nlc3MgdG8gQVdTIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQVdTIE1pZ3JhdGlvbiBIdWIgU3RyYXRlZ3kgUmVjb21tZW5kYXRpb25zIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU01pZ3JhdGlvbkh1YlN0cmF0ZWd5U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTWlncmF0aW9uSHViU3RyYXRlZ3lTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byBBbWF6b24gTVNLIFJlcGxpY2F0b3IgdG8gcmVwbGljYXRlIGRhdGEgYmV0d2VlbiBNU0sgQ2x1c3RlcnMuICovXG4gICAgcHVibGljIEFXU01TS1JlcGxpY2F0b3JFeGVjdXRpb25Sb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU01TS1JlcGxpY2F0b3JFeGVjdXRpb25Sb2xlKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGZ1bGwgYWNjZXNzIHRvIEFXUyBOZXR3b3JrIEZpcmV3YWxsIHNlcnZpY2UsIGluY2x1ZGluZyBwZXJtaXNzaW9ucyB0byBjcmVhdGUsIGNvbmZpZ3VyZSwgbWFuYWdlLCBhbmQgZGVsZXRlIGZpcmV3YWxsIHJlc291cmNlcywgcG9saWNpZXMsIGFuZCBydWxlIGdyb3Vwcy4gQWRkaXRpb25hbGx5IGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIG1vZGlmeSBWUEMgZW5kcG9pbnRzLCBTMyBidWNrZXQgcG9saWNpZXMsIENsb3VkV2F0Y2ggTG9ncyBjb25maWd1cmF0aW9ucywgYW5kIGNyZWF0ZSBzZXJ2aWNlLWxpbmtlZCByb2xlcyBmb3IgTmV0d29yayBGaXJld2FsbCBhbmQgbG9nIGRlbGl2ZXJ5IHNlcnZpY2VzICovXG4gICAgcHVibGljIEFXU05ldHdvcmtGaXJld2FsbEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTmV0d29ya0ZpcmV3YWxsRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIE5ldHdvcmsgRmlyZXdhbGwgcmVzb3VyY2VzIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZSwgQ0xJLCBhbmQgU0RLcy4gVGhpcyBwb2xpY3kgYWxsb3dzIHVzZXJzIHRvIHZpZXcgYW5kIG1vbml0b3IgZmlyZXdhbGwgY29uZmlndXJhdGlvbnMsIHBvbGljaWVzLCBydWxlIGdyb3VwcywgYW5kIGFzc29jaWF0ZWQgcmVzb3VyY2VzLCB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIG1ha2UgY2hhbmdlcy4gKi9cbiAgICBwdWJsaWMgQVdTTmV0d29ya0ZpcmV3YWxsUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTmV0d29ya0ZpcmV3YWxsUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBBV1NOZXR3b3JrRmlyZXdhbGwgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgbmVjZXNzYXJ5IHJlc291cmNlcyBmb3IgeW91ciBGaXJld2FsbHMuICovXG4gICAgcHVibGljIEFXU05ldHdvcmtGaXJld2FsbFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU05ldHdvcmtGaXJld2FsbFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgTmV0d29ya01hbmFnZXIgdG8gYWNjZXNzIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggeW91ciBDb3JlIE5ldHdvcmsgKi9cbiAgICBwdWJsaWMgQVdTTmV0d29ya01hbmFnZXJDbG91ZFdBTlNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU05ldHdvcmtNYW5hZ2VyQ2xvdWRXQU5TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBOZXR3b3JrTWFuYWdlciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU05ldHdvcmtNYW5hZ2VyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NOZXR3b3JrTWFuYWdlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBOZXR3b3JrTWFuYWdlciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU05ldHdvcmtNYW5hZ2VyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTmV0d29ya01hbmFnZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IE5ldHdvcmtNYW5hZ2VyIHRvIGFjY2VzcyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHlvdXIgR2xvYmFsIE5ldHdvcmtzICovXG4gICAgcHVibGljIEFXU05ldHdvcmtNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTTmV0d29ya01hbmFnZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UtbGlua2VkIHJvbGUgcGVybWlzc2lvbnMgZm9yIENsb3VkV2F0Y2ggTG9ncyBjZW50cmFsaXphdGlvbiAqL1xuICAgIHB1YmxpYyBBV1NPYnNlcnZhYmlsaXR5QWRtaW5Mb2dzQ2VudHJhbGl6YXRpb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NPYnNlcnZhYmlsaXR5QWRtaW5Mb2dzQ2VudHJhbGl6YXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBtYW5hZ2UgQVdTIENvbmZpZyBDb25maWd1cmF0aW9uIFJlY29yZGVyLCBtYW5hZ2UgQVdTIENvbmZpZyBDb25maWd1cmF0aW9uIEFnZ3JlZ2F0b3IsIGNyZWF0ZSBBV1MgQ29uZmlnIFNlcnZpY2UgTGlua2VkIFJvbGUgZm9yIENvbmZpZ3VyYXRpb24gUmVjb3JkZXIgZnVuY3Rpb25hbGl0eSwgY29uc3VtZSByZWNvcmRlciBjb25maWd1cmF0aW9uIGRhdGEsIGFuZCByZWFkIEFXUyBPcmdhbml6YXRpb25zIGRhdGEgZm9yIG9yZ2FuaXphdGlvbmFsIGZlYXR1cmVzLiAqL1xuICAgIHB1YmxpYyBBV1NPYnNlcnZhYmlsaXR5QWRtaW5TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NPYnNlcnZhYmlsaXR5QWRtaW5TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBtYW5hZ2UgQVdTIENvbmZpZyByZWNvcmRlciByZXNvdXJjZSBhbmQgdGVsZW1ldHJ5IHNldHRpbmdzIG9uIEFXUyByZXNvdXJjZXMgaW5jbHVkaW5nIGxvZ3MsIG1ldHJpY3MuICovXG4gICAgcHVibGljIEFXU09ic2VydmFiaWxpdHlBZG1pblRlbGVtZXRyeUVuYWJsZW1lbnRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NPYnNlcnZhYmlsaXR5QWRtaW5UZWxlbWV0cnlFbmFibGVtZW50U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgT3JnYW5pemF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTT3JnYW5pemF0aW9uc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTT3JnYW5pemF0aW9uc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFXUyBPcmdhbml6YXRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NPcmdhbml6YXRpb25zUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTT3JnYW5pemF0aW9uc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQSBwb2xpY3kgdG8gYWxsb3cgQVdTIE9yZ2FuaXphdGlvbnMgdG8gc2hhcmUgdHJ1c3Qgd2l0aCBvdGhlciBhcHByb3ZlZCBBV1MgU2VydmljZXMgZm9yIHRoZSBwdXJwb3NlIG9mIHNpbXBsaWZ5aW5nIGN1c3RvbWVyIGNvbmZpZ3VyYXRpb24uICovXG4gICAgcHVibGljIEFXU09yZ2FuaXphdGlvbnNTZXJ2aWNlVHJ1c3RQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTT3JnYW5pemF0aW9uc1NlcnZpY2VUcnVzdFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0aGF0IGFsbG93IHlvdSB0byBpbnN0YWxsIGFuIE91dHBvc3Qgc2VydmVyIG9uIHlvdXIgb24tcHJlbWlzZXMgbmV0d29yay4gKi9cbiAgICBwdWJsaWMgQVdTT3V0cG9zdHNBdXRob3JpemVTZXJ2ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTT3V0cG9zdHNBdXRob3JpemVTZXJ2ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIExpbmtlZCBSb2xlIHBvbGljeSB0byBlbmFibGUgYWNjZXNzIHRvIEFXUyByZXNvdXJjZXMgbWFuYWdlZCBieSBBV1MgT3V0cG9zdHMgKi9cbiAgICBwdWJsaWMgQVdTT3V0cG9zdHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NPdXRwb3N0c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBJb1Qgc29mdHdhcmUgb24gYW4gQVdTIFBhbm9yYW1hIEFwcGxpYW5jZSB0byB1cGxvYWQgbG9ncyB0byBBbWF6b24gQ2xvdWRXYXRjaC4gKi9cbiAgICBwdWJsaWMgQVdTUGFub3JhbWFBcHBsaWFuY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Bhbm9yYW1hQXBwbGlhbmNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBhbiBBV1MgUGFub3JhbWEgQXBwbGlhbmNlIHRvIHVwbG9hZCBsb2dzIHRvIEFtYXpvbiBDbG91ZFdhdGNoLCBhbmQgdG8gZ2V0IG9iamVjdHMgZnJvbSBBbWF6b24gUzMgYWNjZXNzIHBvaW50cyBjcmVhdGVkIGZvciB1c2Ugd2l0aCBBV1MgUGFub3JhbWEuICovXG4gICAgcHVibGljIEFXU1Bhbm9yYW1hQXBwbGlhbmNlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUGFub3JhbWFBcHBsaWFuY2VTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBQYW5vcmFtYSAqL1xuICAgIHB1YmxpYyBBV1NQYW5vcmFtYUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUGFub3JhbWFGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gb24gYW4gQVdTIFBhbm9yYW1hIEFwcGxpYW5jZSB0byBtYW5hZ2UgcmVzb3VyY2VzIGluIFBhbm9yYW1hLCB1cGxvYWQgbG9ncyBhbmQgbWV0cmljcyB0byBBbWF6b24gQ2xvdWRXYXRjaCwgYW5kIHRvIG1hbmFnZSBvYmplY3RzIGluIGJ1Y2tldHMgY3JlYXRlZCBmb3IgdXNlIHdpdGggUGFub3JhbWEuICovXG4gICAgcHVibGljIEFXU1Bhbm9yYW1hR3JlZW5ncmFzc0dyb3VwUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYW5vcmFtYUdyZWVuZ3Jhc3NHcm91cFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIFNhZ2VNYWtlciB0byBtYW5hZ2Ugb2JqZWN0cyBpbiBidWNrZXRzIGNyZWF0ZWQgZm9yIHVzZSB3aXRoIEFXUyBQYW5vcmFtYS4gKi9cbiAgICBwdWJsaWMgQVdTUGFub3JhbWFTYWdlTWFrZXJSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Bhbm9yYW1hU2FnZU1ha2VyUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgUGFub3JhbWEgdG8gbWFuYWdlIHJlc291cmNlcyBpbiBBV1MgSW9ULCBBV1MgU2VjcmV0cyBNYW5hZ2VyIGFuZCBBV1MgUGFub3JhbWEuICovXG4gICAgcHVibGljIEFXU1Bhbm9yYW1hU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUGFub3JhbWFTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgUGFub3JhbWEgdG8gbWFuYWdlIHJlc291cmNlcyBpbiBBbWF6b24gUzMsIEFXUyBJb1QsIEFXUyBJb1QgR3JlZW5HcmFzcywgQVdTIExhbWJkYSwgQW1hem9uIFNhZ2VNYWtlciwgYW5kIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MsIGFuZCB0byBwYXNzIHNlcnZpY2Ugcm9sZXMgdG8gQVdTIElvVCwgQVdTIElvVCBHcmVlbkdyYXNzLCBhbmQgQW1hem9uIFNhZ2VNYWtlci4gKi9cbiAgICBwdWJsaWMgQVdTUGFub3JhbWFTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYW5vcmFtYVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFBhcnRuZXIgQ2VudHJhbCBhbmQgcmVsYXRlZCBBV1MgU2VydmljZXMuICovXG4gICAgcHVibGljIEFXU1BhcnRuZXJDZW50cmFsRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYXJ0bmVyQ2VudHJhbEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBuZWNlc3NhcnkgYWNjZXNzIGZvciBvcHBvcnR1bml0eSBtYW5hZ2VtZW50IGFjdGl2aXRpZXMuICovXG4gICAgcHVibGljIEFXU1BhcnRuZXJDZW50cmFsT3Bwb3J0dW5pdHlNYW5hZ2VtZW50KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1BhcnRuZXJDZW50cmFsT3Bwb3J0dW5pdHlNYW5hZ2VtZW50KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgbmVjZXNzYXJ5IGFjY2VzcyBmb3IgZGV2ZWxvcGVyIHRlc3RpbmcgaW4gdGhlIFNhbmRib3ggY2F0YWxvZy4gKi9cbiAgICBwdWJsaWMgQVdTUGFydG5lckNlbnRyYWxTYW5kYm94RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYXJ0bmVyQ2VudHJhbFNhbmRib3hGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBSZXNvdXJjZVNuYXBzaG90Sm9iIHRvIHJlYWQgYSByZXNvdXJjZSBhbmQgc25hcHNob3QgaXQgaW4gdGhlIHRhcmdldCBlbmdhZ2VtZW50LiAqL1xuICAgIHB1YmxpYyBBV1NQYXJ0bmVyQ2VudHJhbFNlbGxpbmdSZXNvdXJjZVNuYXBzaG90Sm9iRXhlY3V0aW9uUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYXJ0bmVyQ2VudHJhbFNlbGxpbmdSZXNvdXJjZVNuYXBzaG90Sm9iRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGNhbiBiZSB1c2VkIHRvIGdyYW50IHJlYWQtb25seSBhY2Nlc3MgdG8gQVBJcyB0aGF0IGNhbiByZWFkIHNlcnZpY2UgbWV0YWRhdGEgZm9yIHNlcnZpY2VzIGluIHlvdXIgQVdTIGFjY291bnQuIFlvdSBjYW4gdXNlIHRoaXMgcG9saWN5IHRvIHByb3ZpZGUgeW91ciBwYXJ0bmVycyBpbiB0aGUgUGFydG5lci1MZWQgU3VwcG9ydCBQcm9ncmFtIHdpdGggYWNjZXNzIHRvIHRoZSBzZXJ2aWNlcyBzcGVjaWZpZWQgaW4gdGhlIHBlcm1pc3Npb25zIGRldGFpbHMgc2VjdGlvbiBiZWxvdy4gKi9cbiAgICBwdWJsaWMgQVdTUGFydG5lckxlZFN1cHBvcnRSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQYXJ0bmVyTGVkU3VwcG9ydFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb24gdG8gQVdTIFBDUyBjb21wdXRlIG5vZGVzIHRvIGNvbm5lY3QgdG8gQVdTIFBDUyBjbHVzdGVycy4gKi9cbiAgICBwdWJsaWMgQVdTUENTQ29tcHV0ZU5vZGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUENTQ29tcHV0ZU5vZGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gUENTIHRvIG1hbmFnZSByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU1BDU1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1BDU1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFByaWNlIExpc3QgU2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTUHJpY2VMaXN0U2VydmljZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJpY2VMaXN0U2VydmljZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhdWRpdG9yIGFjY2VzcyB0byBBV1MgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTUHJpdmF0ZUNBQXVkaXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcml2YXRlQ0FBdWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIGVzc2VudGlhbCBwZXJtaXNzaW9ucyBmb3IgdGhlIEFXUyBQcml2YXRlIENBIENvbm5lY3RvciBmb3IgS3ViZXJuZXRlcy4gKi9cbiAgICBwdWJsaWMgQVdTUHJpdmF0ZUNBQ29ubmVjdG9yRm9yS3ViZXJuZXRlc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcml2YXRlQ0FDb25uZWN0b3JGb3JLdWJlcm5ldGVzUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFByaXZhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ICovXG4gICAgcHVibGljIEFXU1ByaXZhdGVDQUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJpdmF0ZUNBRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHByaXZpbGVnZWQgY2VydGlmaWNhdGUgdXNlciBhY2Nlc3MgdG8gQVdTIFByaXZhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ICovXG4gICAgcHVibGljIEFXU1ByaXZhdGVDQVByaXZpbGVnZWRVc2VyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ByaXZhdGVDQVByaXZpbGVnZWRVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBBV1MgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTUHJpdmF0ZUNBUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJpdmF0ZUNBUmVhZE9ubHkpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBjZXJ0aWZpY2F0ZSB1c2VyIGFjY2VzcyB0byBBV1MgUHJpdmF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKi9cbiAgICBwdWJsaWMgQVdTUHJpdmF0ZUNBVXNlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcml2YXRlQ0FVc2VyKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gYWxsIGFkbWluaXN0cmF0aXZlIGFjdGlvbnMgZm9yIGFuIEFXUyBQcml2YXRlIE1hcmtldHBsYWNlLiAqL1xuICAgIHB1YmxpYyBBV1NQcml2YXRlTWFya2V0cGxhY2VBZG1pbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJpdmF0ZU1hcmtldHBsYWNlQWRtaW5GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIGNyZWF0aW5nIHJlcXVlc3RzIGluIGFuIEFXUyBQcml2YXRlIE1hcmtldHBsYWNlLiAqL1xuICAgIHB1YmxpYyBBV1NQcml2YXRlTWFya2V0cGxhY2VSZXF1ZXN0cygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcml2YXRlTWFya2V0cGxhY2VSZXF1ZXN0cyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgUHJpdmF0ZSBOZXR3b3JrcyBTZXJ2aWNlIHRvIG1hbmFnZSByZXNvdXJjZXMgb24gYmVoYWxmIG9mIHRoZSBjdXN0b21lci4gKi9cbiAgICBwdWJsaWMgQVdTUHJpdmF0ZU5ldHdvcmtzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJpdmF0ZU5ldHdvcmtzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9ucyBDb2RlQnVpbGQgbmVlZHMgdG8gcnVuIGEgYnVpbGQgZm9yIEFXUyBQcm90b24gQ29kZUJ1aWxkIFByb3Zpc2lvbmluZy4gKi9cbiAgICBwdWJsaWMgQVdTUHJvdG9uQ29kZUJ1aWxkUHJvdmlzaW9uaW5nQmFzaWNBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJvdG9uQ29kZUJ1aWxkUHJvdmlzaW9uaW5nQmFzaWNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIFByb3RvbiB0byBtYW5hZ2UgUHJvdG9uIHJlc291cmNlIHByb3Zpc2lvbmluZyB1c2luZyBDb2RlQnVpbGQgYW5kIG90aGVyIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTUHJvdG9uQ29kZUJ1aWxkUHJvdmlzaW9uaW5nU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUHJvdG9uQ29kZUJ1aWxkUHJvdmlzaW9uaW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIEFXUyBQcm90b24gQVBJcyBhbmQgTWFuYWdlbWVudCBDb25zb2xlLCBidXQgZG9lcyBub3QgYWxsb3cgYWRtaW5pc3RyYXRpb24gb2YgUHJvdG9uIHRlbXBsYXRlcyBvciBlbnZpcm9ubWVudHMuICovXG4gICAgcHVibGljIEFXU1Byb3RvbkRldmVsb3BlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcm90b25EZXZlbG9wZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIFByb3RvbiBBUElzIGFuZCBNYW5hZ2VtZW50IENvbnNvbGUuIEluIGFkZGl0aW9uIHRvIHRoZXNlIHBlcm1pc3Npb25zLCBhY2Nlc3MgdG8gQW1hem9uIFMzIGlzIGFsc28gbmVlZGVkIHRvIHJlZ2lzdGVyIHRlbXBsYXRlIGJ1bmRsZXMgZnJvbSB5b3VyIFMzIGJ1Y2tldHMsIGFzIHdlbGwgYXMgYWNjZXNzIHRvIEFtYXpvbiBJQU0gdG8gY3JlYXRlIGFuZCBtYW5hZ2UgdGhlIHNlcnZpY2Ugcm9sZXMgZm9yIFByb3Rvbi4gKi9cbiAgICBwdWJsaWMgQVdTUHJvdG9uRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcm90b25GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgQVdTIFByb3RvbiBBUElzIGFuZCBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIEFXU1Byb3RvblJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Byb3RvblJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHdoaWNoIGFsbG93cyBBV1MgUHJvdG9uIHRvIHN5bmMgeW91ciBzZXJ2aWNlLCBlbnZpcm9ubWVudCBhbmQgY29tcG9uZW50IGRlZmluaXRpb25zIGZyb20geW91ciBnaXQgcmVwb3NpdG9yeSB0byBBV1MgUHJvdG9uLiAqL1xuICAgIHB1YmxpYyBBV1NQcm90b25TZXJ2aWNlR2l0U3luY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Byb3RvblNlcnZpY2VHaXRTeW5jU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgd2hpY2ggYWxsb3dzIEFXUyBQcm90b24gdG8gc3luYyB5b3VyIGdpdCByZXBvc2l0b3J5IGNvbnRlbnRzIHRvIFByb3RvbiBvciBzeW5jIFByb3RvbiBjb250ZW50cyB0byB5b3VyIGdpdCByZXBvc2l0b3JpZXMuICovXG4gICAgcHVibGljIEFXU1Byb3RvblN5bmNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQcm90b25TeW5jU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gdmlldyBhbmQgbW9kaWZ5IHB1cmNoYXNlIG9yZGVycyBvbiBiaWxsaW5nIGNvbnNvbGUgKi9cbiAgICBwdWJsaWMgQVdTUHVyY2hhc2VPcmRlcnNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NQdXJjaGFzZU9yZGVyc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIEFXU1F1aWNrU2V0dXBDRkdDUGFja3NQZXJtaXNzaW9uc0JvdW5kYXJ5IHBvbGljeSBkZWZpbmVzIHRoZSBsaXN0IG9mIHBlcm1pc3Npb25zIHRoYXQgYXJlIHBlcm1pdHRlZCBpbiBhbiBJQU0gcm9sZSBjcmVhdGVkIGJ5IFF1aWNrIFNldHVwLiBRdWljayBTZXR1cCB1c2VzIGEgcm9sZSBjcmVhdGVkIHdpdGggdGhpcyBwb2xpY3kgdG8gZGVwbG95IEFXUyBDb25maWcgY29uZm9ybWFuY2UgcGFja3MuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBDRkdDUGFja3NQZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBDRkdDUGFja3NQZXJtaXNzaW9uc0JvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIEFXUyBTeXN0ZW1zIE1hbmFnZXIgUXVpY2sgU2V0dXAgdG8gZGVwbG95IG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gdHlwZXMuIFRoZXNlIGNvbmZpZ3VyYXRpb24gdHlwZXMgY3JlYXRlIElBTSByb2xlcyBhbmQgYXV0b21hdGlvbnMgdGhhdCBjb25maWd1cmUgZnJlcXVlbnRseSB1c2VkIEFtYXpvbiBXZWIgU2VydmljZXMgc2VydmljZXMgYW5kIGZlYXR1cmVzIHdpdGggcmVjb21tZW5kZWQgYmVzdCBwcmFjdGljZXMuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBEZXBsb3ltZW50Um9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwRGVwbG95bWVudFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgQVdTUXVpY2tTZXR1cERldk9wc0d1cnVQZXJtaXNzaW9uc0JvdW5kYXJ5IHBvbGljeSBkZWZpbmVzIHRoZSBsaXN0IG9mIHBlcm1pc3Npb25zIHRoYXQgYXJlIHBlcm1pdHRlZCBpbiBhbiBJQU0gcm9sZSBjcmVhdGVkIGJ5IFF1aWNrIFNldHVwLiBRdWljayBTZXR1cCB1c2VzIGEgcm9sZSBjcmVhdGVkIHdpdGggdGhpcyBwb2xpY3kgdG8gZW5hYmxlIGFuZCBjb25maWd1cmUgQW1hem9uIERldk9wcyBHdXJ1LiBUaGlzIHBvbGljeSBhbHNvIHByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGVuYWJsZSBTeXN0ZW1zIE1hbmFnZXIgRXhwbG9yZXIuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBEZXZPcHNHdXJ1UGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwRGV2T3BzR3VydVBlcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBRdWlja1NldHVwIGNyZWF0ZXMgSUFNIHJvbGVzIHdoaWNoIGVuYWJsZSBpdCB0byBjb25maWd1cmUgdGhlIFN5c3RlbXMgTWFuYWdlciBEaXN0cmlidXRvciBmZWF0dXJlIG9uIHlvdXIgYmVoYWxmLCBhbmQgdXNlcyB0aGlzIHBvbGljeSB3aGVuIGNyZWF0aW5nIHN1Y2ggcm9sZXMgdG8gZGVmaW5lIHRoZSBib3VuZGFyeSBvZiB0aGVpciBwZXJtaXNzaW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cERpc3RyaWJ1dG9yUGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwRGlzdHJpYnV0b3JQZXJtaXNzaW9uc0JvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgU3lzdGVtcyBNYW5hZ2VyIHRvIHJ1biB0aGUgQVdTUXVpY2tTZXR1cFR5cGUtRW5hYmxlQVJFWCBBdXRvbWF0aW9uIHJ1bmJvb2ssIHdoaWNoIGVuYWJsZXMgQVdTIFJlc291cmNlIEV4cGxvcmVyIGZvciB1c2Ugd2l0aCBTeXN0ZW1zIE1hbmFnZXIuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBFbmFibGVBUkVYRXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBFbmFibGVBUkVYRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgcHJpbmNpcGFscyB0byBydW4gdGhlIEFXU1F1aWNrU2V0dXBUeXBlLUVuYWJsZURITUMgQXV0b21hdGlvbiBydW5ib29rLCB3aGljaCBlbmFibGVzIERlZmF1bHQgSG9zdCBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24uICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBFbmFibGVESE1DRXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBFbmFibGVESE1DRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIFF1aWNrIFNldHVwIHRvIGRlcGxveSB0aGUgY29uZmlndXJhdGlvbiB0eXBlIHJlcXVpcmVkIHRvIHNldCB1cCBqdXN0LWluLXRpbWUgbm9kZSBhY2Nlc3MuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBKSVROQURlcGxveW1lbnRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBKSVROQURlcGxveW1lbnRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgU3lzdGVtcyBNYW5hZ2VyIHRvIGNyZWF0ZSBhIGRlZmF1bHQgSUFNIGluc3RhbmNlIHByb2ZpbGUgZm9yIHRoZSBRdWljayBTZXR1cCBjYXBhYmlsaXR5IGFuZCBhdHRhY2ggaXQgdG8gQW1hem9uIEVDMiBpbnN0YW5jZXMgdGhhdCBkb24ndCBhbHJlYWR5IGhhdmUgYW4gaW5zdGFuY2UuIHByb2ZpbGUgYXR0YWNoZWQuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBNYW5hZ2VkSW5zdGFuY2VQcm9maWxlRXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBNYW5hZ2VkSW5zdGFuY2VQcm9maWxlRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gZW5hYmxlIGp1c3QtaW4tdGltZSBub2RlIGFjY2VzcyBmb3IgU3lzdGVtcyBNYW5hZ2VyLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwTWFuYWdlSklUTkFSZXNvdXJjZXNFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cE1hbmFnZUpJVE5BUmVzb3VyY2VzRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IHBlcm1pc3Npb25zIHRvIGFjY2VzcyBwYXRjaCBiYXNlbGluZXMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBieSBhbiBhZG1pbmlzdHJhdG9yIGluIHRoZSBjdXJyZW50IEFXUyBhY2NvdW50IG9yIG9yZ2FuaXphdGlvbiB1c2luZyBRdWljayBTZXR1cC4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFBhdGNoUG9saWN5QmFzZWxpbmVBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cFBhdGNoUG9saWN5QmFzZWxpbmVBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0aGF0IGFsbG93IFF1aWNrIFNldHVwIHRvIGNyZWF0ZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgcGF0Y2ggcG9saWN5IGNvbmZpZ3VyYXRpb24uICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBQYXRjaFBvbGljeURlcGxveW1lbnRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBQYXRjaFBvbGljeURlcGxveW1lbnRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUXVpY2tTZXR1cCBjcmVhdGVzIElBTSByb2xlcyB3aGljaCBlbmFibGUgaXQgdG8gY29uZmlndXJlIHRoZSBTeXN0ZW1zIE1hbmFnZXIgUGF0Y2ggTWFuYWdlciBmZWF0dXJlIG9uIHlvdXIgYmVoYWxmLCBhbmQgdXNlcyB0aGlzIHBvbGljeSB3aGVuIGNyZWF0aW5nIHN1Y2ggcm9sZXMgdG8gZGVmaW5lIHRoZSBib3VuZGFyeSBvZiB0aGVpciBwZXJtaXNzaW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFBhdGNoUG9saWN5UGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwUGF0Y2hQb2xpY3lQZXJtaXNzaW9uc0JvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIEFXU1F1aWNrU2V0dXBTY2hlZHVsZXJQZXJtaXNzaW9uc0JvdW5kYXJ5IHBvbGljeSBkZWZpbmVzIHRoZSBsaXN0IG9mIHBlcm1pc3Npb25zIHRoYXQgYXJlIHBlcm1pdHRlZCBpbiBhbiBJQU0gcm9sZSBjcmVhdGVkIGJ5IFF1aWNrIFNldHVwLiBRdWljayBTZXR1cCB1c2VzIGEgcm9sZSBjcmVhdGVkIHdpdGggdGhpcyBwb2xpY3kgdG8gZW5hYmxlIGFuZCBjb25maWd1cmUgc2NoZWR1bGVkIG9wZXJhdGlvbnMgb24gQW1hem9uIEVDMiBpbnN0YW5jZXMgYW5kIG90aGVyIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFNjaGVkdWxlclBlcm1pc3Npb25zQm91bmRhcnkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cFNjaGVkdWxlclBlcm1pc3Npb25zQm91bmRhcnkpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWRtaW5pc3RyYXRpdmUgcGVybXNzaW9ucyB0aGF0IGFsbG93IFF1aWNrIFNldHVwIHRvIGNyZWF0ZSByZXNvdXJjZXMgdGhhdCBhcmUgdXNlZCBkdXJpbmcgdGhlIFN5c3RlbXMgTWFuYWdlciBvbmJvYXJkaW5nIHByb2Nlc3MuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBTU01EZXBsb3ltZW50Um9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwU1NNRGVwbG95bWVudFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgZm9yIGxpc3RpbmcgYWxsIFMzIGJ1Y2tldHMgaW4gYW4gYWNjb3VudDsgYW5kIGZvciBtYW5hZ2luZyBhbmQgcmV0cmlldmluZyBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWZpYyBidWNrZXRzIGluIHRoZSBwcmluY2lwYWwgYWNjb3VudCB0aGF0IGFyZSBtYW5hZ2VkIHRocm91Z2ggQVdTIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFNTTURlcGxveW1lbnRTM0J1Y2tldFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cFNTTURlcGxveW1lbnRTM0J1Y2tldFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBRdWljayBTZXR1cCBjcmVhdGVzIElBTSByb2xlcyB3aGljaCBlbmFibGUgaXQgdG8gY29uZmlndXJlIHRoZSBIb3N0IE1hbmFnZXIgUXVpY2sgU2V0dXAgdHlwZSBvbiB5b3VyIGJlaGFsZiwgYW5kIHVzZXMgdGhpcyBwb2xpY3kgd2hlbiBjcmVhdGluZyBzdWNoIHJvbGVzIHRvIGRlZmluZSB0aGUgYm91bmRhcnkgb2YgdGhlaXIgcGVybWlzc2lvbnMuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBTU01Ib3N0TWdtdFBlcm1pc3Npb25zQm91bmRhcnkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cFNTTUhvc3RNZ210UGVybWlzc2lvbnNCb3VuZGFyeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBwb2xpY3kgZ3JhbnRzIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgUXVpY2sgU2V0dXAgdG8gcnVuIHRoZSBhIEFXUyBDbG91ZEZvcm1hdGlvbiBjdXN0b20gcmVzb3VyY2Ugb24gbGlmZWN5Y2xlIGV2ZW50cyBkdXJpbmcgUXVpY2sgU2V0dXAgZGVwbG95bWVudCBpbiBTeXN0ZW1zIE1hbmFnZXIuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2V0dXBTU01MaWZlY3ljbGVNYW5hZ2VtZW50RXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2V0dXBTU01MaWZlY3ljbGVNYW5hZ2VtZW50RXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgU3lzdGVtcyBNYW5hZ2VyIHRvIGNyZWF0ZSBwcmVyZXF1aXNpdGVzIHN1Y2ggYXMgSUFNIHJvbGVzIHJlcXVpcmVkIGZvciBTeXN0ZW1zIE1hbmFnZXIgb25ib2FyZGluZy4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFNTTU1hbmFnZVJlc291cmNlc0V4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwU1NNTWFuYWdlUmVzb3VyY2VzRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRoYXQgYWxsb3cgcHJpbmNpcGFscyB0byBydW4gdGhlIEFXU1F1aWNrU2V0dXBUeXBlLVN0YXJ0U1NNQXNzb2NpYXRpb25zIEF1dG9tYXRpb24gcnVuYm9vaywgd2hpY2ggc3RhcnRzIFN0YXRlIE1hbmFnZXIgQXNzb2NpYXRpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NldHVwU3RhcnRTU01Bc3NvY2lhdGlvbnNFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTZXR1cFN0YXJ0U1NNQXNzb2NpYXRpb25zRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIG1hbmFnZWQgcG9saWN5IEFXU1F1aWNrU2V0dXBTdGFydFN0b3BJbnN0YW5jZXNFeGVjdXRpb25Qb2xpY3kgcHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIFF1aWNrIFNldHVwIHRvIHN0YXJ0IGFuZCBzdG9wIEFtYXpvbiBFQzIgaW5zdGFuY2VzIG9uIGEgc2NoZWR1bGUuIFRoaXMgcG9saWN5IGlzIHVzZWQgd2l0aCB0aGUgUXVpY2sgU2V0dXAgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24gdHlwZS4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTZXR1cFN0YXJ0U3RvcEluc3RhbmNlc0V4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NldHVwU3RhcnRTdG9wSW5zdGFuY2VzRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdGhlIHNldCBvZiBwZXJtaXNzaW9ucyByZXF1aXJlZCB0byBwZXJmb3JtIFF1aWNrU2lnaHQgQXNzZXQgQnVuZGxlIEV4cG9ydCBPcGVyYXRpb25zICovXG4gICAgcHVibGljIEFXU1F1aWNrU2lnaHRBc3NldEJ1bmRsZUV4cG9ydFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NpZ2h0QXNzZXRCdW5kbGVFeHBvcnRQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgc2V0IG9mIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIHBlcmZvcm0gUXVpY2tTaWdodCBBc3NldCBCdW5kbGUgSW1wb3J0IE9wZXJhdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTaWdodEFzc2V0QnVuZGxlSW1wb3J0UG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2lnaHRBc3NldEJ1bmRsZUltcG9ydFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFF1aWNrc2lnaHQgYWNjZXNzIHRvIEF0aGVuYSBBUEkgYW5kIFMzIGJ1Y2tldHMgdXNlZCBmb3IgQXRoZW5hIHF1ZXJ5IHJlc3VsdHMgKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tzaWdodEF0aGVuYUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja3NpZ2h0QXRoZW5hQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgUXVpY2tTaWdodCB0byBkZXNjcmliZSB0aGUgUkRTIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NpZ2h0RGVzY3JpYmVSRFMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodERlc2NyaWJlUkRTKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgUXVpY2tTaWdodCB0byBkZXNjcmliZSBSZWRzaGlmdCByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTaWdodERlc2NyaWJlUmVkc2hpZnQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodERlc2NyaWJlUmVkc2hpZnQpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIEVsYXN0aWNzZWFyY2ggcmVzb3VyY2VzIGZyb20gQW1hem9uIFF1aWNrU2lnaHQgKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTaWdodEVsYXN0aWNzZWFyY2hQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodEVsYXN0aWNzZWFyY2hQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHaXZlIFF1aWNrU2lnaHQgcmVhZC1vbmx5IGFjY2VzcyB0byBJb1QgQW5hbHl0aWNzIGRhdGFzZXRzICovXG4gICAgcHVibGljIEFXU1F1aWNrU2lnaHRJb1RBbmFseXRpY3NBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodElvVEFuYWx5dGljc0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IFF1aWNrU2lnaHQgdG8gbGlzdCBJQU0gZW50aXRpZXMgKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTaWdodExpc3RJQU0oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodExpc3RJQU0pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIE9wZW5TZWFyY2ggcmVzb3VyY2VzIGZyb20gQW1hem9uIFF1aWNrU2lnaHQgKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tzaWdodE9wZW5TZWFyY2hQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tzaWdodE9wZW5TZWFyY2hQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQW1hem9uIFNhZ2VNYWtlciByZXNvdXJjZXMgZnJvbSBBbWF6b24gUXVpY2tTaWdodCAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NpZ2h0U2FnZU1ha2VyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2lnaHRTYWdlTWFrZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdXNlZCBieSBRdWlja1NpZ2h0IHRvIGNyZWF0ZSBzZWNyZXRzIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgYW5kIHRvIGF0dGFjaCByZXNvdXJjZSBwb2xpY2llcyBvbiBleGlzdGluZyBRdWlja1NpZ2h0IHNlY3JldHMuICovXG4gICAgcHVibGljIEFXU1F1aWNrU2lnaHRTZWNyZXRzTWFuYWdlcldyaXRlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1F1aWNrU2lnaHRTZWNyZXRzTWFuYWdlcldyaXRlQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHVzZWQgYnkgUXVpY2tTaWdodCB0byBjcmVhdGUgc2VjcmV0cyBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGFuZCB0byBhdHRhY2ggcmVzb3VyY2UgcG9saWNpZXMgb24gZXhpc3RpbmcgUXVpY2tTaWdodCBzZWNyZXRzLiAqL1xuICAgIHB1YmxpYyBBV1NRdWlja1NpZ2h0U2VjcmV0c01hbmFnZXJXcml0ZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NRdWlja1NpZ2h0U2VjcmV0c01hbmFnZXJXcml0ZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBRdWlja1NpZ2h0IGFjY2VzcyB0byBBV1MgVGltZXN0cmVhbSBBUElzLiBDdXN0b21lcnMgY2FuIGF0dGFjaCB0aGlzIHBvbGljeSB0byBBV1MgUXVpY2tTaWdodCByb2xlIHRvIGFsbG93IHJldHJpZXZhbCBvZiBkYXRhIGFuZCBtZXRhZGF0YS4gKi9cbiAgICBwdWJsaWMgQVdTUXVpY2tTaWdodFRpbWVzdHJlYW1Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUXVpY2tTaWdodFRpbWVzdHJlYW1Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgVlBDIFJlYWNoYWJpbGl0eSBBbmFseXplciB0byBhY2Nlc3MgQVdTIHJlc291cmNlcyBhbmQgaW50ZWdyYXRlIHdpdGggQVdTIE9yZ2FuaXphdGlvbnMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU1JlYWNoYWJpbGl0eUFuYWx5emVyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVhY2hhYmlsaXR5QW5hbHl6ZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9uIHRvIHVzZSBBV1Mgc2VydmljZXMgd2l0aCB0aGUgQVdTIFRvb2xraXQgZm9yIC5ORVQgUmVmYWN0b3JpbmcgZXh0ZW5zaW9uIGZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpby4gSXQgaXMgaW50ZW5kZWQgdG8gYmUgYXR0YWNoZWQgdG8gYSBsb2NhbCBBV1MgcHJvZmlsZS4gVGhlIHBvbGljeSBhbGxvd3MgdXBsb2FkaW5nIGFwcGxpY2F0aW9uIGFydGlmYWN0cyBhbmQgZG93bmxvYWRpbmcgdGhlIHJlc3VsdGluZyBhcnRpZmFjdHMgZnJvbSBBbWF6b24gUzMuIEl0IGFsbG93cyBidWlsZGluZyBhcHBsaWNhdGlvbnMgaW50byBhIGNvbnRhaW5lciBpbWFnZSB1c2luZyBBV1MgQ29kZUJ1aWxkIGFuZCBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHRoZSBpbWFnZXMgZnJvbSBBbWF6b24gRWxhc3RpYyBDb250YWluZXIgUmVnaXN0cnkgKEFtYXpvbiBFQ1IpLiBBbmQgaXQgYWxsb3dzIGRlcGxveW1lbnQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGNvbnRhaW5lciBzZXJ2aWNlcyBvbiBBV1Mgc3VjaCBhcyBBbWF6b24gRWxhc3RpYyBDb250YWluZXIgU2VydmljZSAoQW1hem9uIEVDUyksIG9wdGlvbmFsIGNyZWF0aW9uIG9mIFZQQyByZXNvdXJjZXMsIG9wdGlvbmFsIGNvbm5lY3Rpb24gdG8gZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgc3VjaCBhcyBBV1MgRGlyZWN0b3J5IFNlcnZpY2UsIGFuZCBvdGhlciByZWxhdGVkIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NSZWZhY3RvcmluZ1Rvb2xraXRGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1JlZmFjdG9yaW5nVG9vbGtpdEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IEFtYXpvbiBFQ1MgVGFza3MgY3JlYXRlZCBmb3IgdGVzdGluZyBhcHBsaWNhdGlvbnMgaW4gQVdTIHVzaW5nIHRoZSBBV1MgVG9vbGtpdCBmb3IgLk5FVCBSZWZhY3RvcmluZyBleHRlbnNpb24gZm9yIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvLiBUaGUgcG9saWN5IGdyYW50cyBhY2Nlc3MgdG8gZG93bmxvYWQgYXBwbGljYXRpb24gYXJ0aWZhY3RzIGZyb20gQW1hem9uIFMzLCBjb21tdW5pY2F0ZSB0aGUgc3RhdHVzIG9mIHRoZSBUYXNrIHVzaW5nIEFXUyBTeXN0ZW1zIE1hbmFnZXIsIGFuZCBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTUmVmYWN0b3JpbmdUb29sa2l0U2lkZWNhclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSZWZhY3RvcmluZ1Rvb2xraXRTaWRlY2FyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmU6UG9zdCBQcml2YXRlIGFjY2VzcyB0byBwdWJsaXNoIENsb3VkV2F0Y2ggbWV0cmljcyBkYXRhICovXG4gICAgcHVibGljIEFXU3JlUG9zdFByaXZhdGVDbG91ZFdhdGNoQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU3JlUG9zdFByaXZhdGVDbG91ZFdhdGNoQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIHRoZSByZTpQb3N0IFNwYWNlIHNlcnZpY2UgdG8gY3JlYXRlLCBtYW5hZ2UsIGFuZCByZXNvbHZlIFN1cHBvcnQgY2FzZXMgdGhhdCBhcmUgY3JlYXRlZCB0aHJvdWdoIHRoZSBTcGFjZSBhcHBsaWNhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTUmVwb3N0U3BhY2VTdXBwb3J0T3BlcmF0aW9uc1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSZXBvc3RTcGFjZVN1cHBvcnRPcGVyYXRpb25zUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBV1MgUmVzaWxpZW5jZSBIdWIgc2VydmljZSByb2xlIHdoaWNoIGFsbG93cyBhY2Nlc3MgdG8gb3RoZXIgQVdTIHNlcnZpY2VzIGluIG9yZGVyIHRvIGV4ZWN1dGUgYXNzZXNzbWVudC4gKi9cbiAgICBwdWJsaWMgQVdTUmVzaWxpZW5jZUh1YkFzc3Nlc3NtZW50RXhlY3V0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Jlc2lsaWVuY2VIdWJBc3NzZXNzbWVudEV4ZWN1dGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBSZXNvdXJjZSBBY2Nlc3MgTWFuYWdlciAqL1xuICAgIHB1YmxpYyBBV1NSZXNvdXJjZUFjY2Vzc01hbmFnZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Jlc291cmNlQWNjZXNzTWFuYWdlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBSZXNvdXJjZSBBY2Nlc3MgTWFuYWdlci4gKi9cbiAgICBwdWJsaWMgQVdTUmVzb3VyY2VBY2Nlc3NNYW5hZ2VyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVzb3VyY2VBY2Nlc3NNYW5hZ2VyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIFJlc291cmNlIEFjY2VzcyBNYW5hZ2VyIEFQSXMgbmVlZGVkIGJ5IGEgcmVzb3VyY2Ugc2hhcmUgcGFydGljaXBhbnQuICovXG4gICAgcHVibGljIEFXU1Jlc291cmNlQWNjZXNzTWFuYWdlclJlc291cmNlU2hhcmVQYXJ0aWNpcGFudEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSZXNvdXJjZUFjY2Vzc01hbmFnZXJSZXNvdXJjZVNoYXJlUGFydGljaXBhbnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgY29udGFpbmluZyBSZWFkLW9ubHkgQVdTIFJlc291cmNlIEFjY2VzcyBNYW5hZ2VyIGFjY2VzcyB0byBjdXN0b21lcnMnIE9yZ2FuaXphdGlvbnMgc3RydWN0dXJlLiBJdCBhbHNvIGNvbnRhaW5zIElBTSBwZXJtaXNzaW9ucyB0byBzZWxmLWRlbGV0ZSB0aGUgcm9sZS4gKi9cbiAgICBwdWJsaWMgQVdTUmVzb3VyY2VBY2Nlc3NNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVzb3VyY2VBY2Nlc3NNYW5hZ2VyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgdG8gYWNjZXNzIFJlc291cmNlIEV4cGxvcmVyIHJlc291cmNlcyBhbmQgZ3JhbnRzIHJlYWQtb25seSBwZXJtaXNzaW9ucyB0byBvdGhlciBBV1Mgc2VydmljZXMgdG8gc3VwcG9ydCB0aGlzIGFjY2Vzcy4gKi9cbiAgICBwdWJsaWMgQVdTUmVzb3VyY2VFeHBsb3JlckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUmVzb3VyY2VFeHBsb3JlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgdG8gUmVzb3VyY2UgRXhwbG9yZXIgYW5kIGdyYW50cyByZWFkLW9ubHkgcGVybWlzc2lvbnMgdG8gb3RoZXIgQVdTIHNlcnZpY2VzIHRvIHN1cHBvcnQgdGhpcyBhY2Nlc3MuIFRoZSBBV1MgT3JnYW5pemF0aW9ucyBhZG1pbmlzdHJhdG9yIG5lZWRzIHRoZXNlIHBlcm1pc3Npb25zIHRvIHNldHVwIGFuZCBtYW5hZ2UgbXVsdGktYWNjb3VudCBzZWFyY2ggaW4gdGhlIGNvbnNvbGUuICovXG4gICAgcHVibGljIEFXU1Jlc291cmNlRXhwbG9yZXJPcmdhbml6YXRpb25zQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Jlc291cmNlRXhwbG9yZXJPcmdhbml6YXRpb25zQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHJlYWQtb25seSBwZXJtaXNzaW9ucyB0byBzZWFyY2ggZm9yIGFuZCB2aWV3IFJlc291cmNlIEV4cGxvcmVyIHJlc291cmNlcyBhbmQgZ3JhbnRzIHJlYWQtb25seSBwZXJtaXNzaW9ucyB0byBvdGhlciBBV1Mgc2VydmljZXMgdG8gc3VwcG9ydCB0aGlzIGFjY2Vzcy4gKi9cbiAgICBwdWJsaWMgQVdTUmVzb3VyY2VFeHBsb3JlclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Jlc291cmNlRXhwbG9yZXJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBSZXNvdXJjZSBFeHBsb3JlciB0byB2aWV3IHJlc291cmNlcyBhbmQgQ2xvdWRUcmFpbCBldmVudHMgb24geW91ciBiZWhhbGYgdG8gaW5kZXggeW91ciByZXNvdXJjZXMgZm9yIHNlYXJjaC4gKi9cbiAgICBwdWJsaWMgQVdTUmVzb3VyY2VFeHBsb3JlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1Jlc291cmNlRXhwbG9yZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgaXMgdGhlIHJlYWQgb25seSBwb2xpY3kgZm9yIEFXUyBSZXNvdXJjZSBHcm91cHMgKi9cbiAgICBwdWJsaWMgQVdTUmVzb3VyY2VHcm91cHNSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSZXNvdXJjZUdyb3Vwc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFJvYm9NYWtlciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gQWxzbyBwcm92aWRlcyBzZWxlY3QgYWNjZXNzIHRvIHJlbGF0ZWQgc2VydmljZXMgKGUuZy4sIFMzLCBJQU0pLiAqL1xuICAgIHB1YmxpYyBBV1NSb2JvTWFrZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1JvYm9NYWtlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBSb2JvTWFrZXIgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlIGFuZCBTREsgKi9cbiAgICBwdWJsaWMgQVdTUm9ib01ha2VyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUm9ib01ha2VyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBSb2JvTWFrZXIgc2VydmljZSBwb2xpY3kgKi9cbiAgICBwdWJsaWMgQVdTUm9ib01ha2VyU2VydmljZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSb2JvTWFrZXJTZXJ2aWNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUm9ib01ha2VyIHNlcnZpY2UgcG9saWN5ICovXG4gICAgcHVibGljIEFXU1JvYm9NYWtlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1JvYm9NYWtlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWxsIHBlcm1pc3Npb25zIHRvIElBTSBSb2xlcyBBbnl3aGVyZSByZXNvdXJjZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG86IENyZWF0ZVByb2ZpbGUsIERlbGV0ZVRydXN0QW5jaG9yLCBEaXNhYmxlQ1JMLCBSZXNldE5vdGlmaWNhdGlvblNldHRpbmdzLiAqL1xuICAgIHB1YmxpYyBBV1NSb2xlc0FueXdoZXJlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NSb2xlc0FueXdoZXJlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBwZXJtaXNzaW9ucyB0byBJQU0gUm9sZXMgQW55d2hlcmUgcmVzb3VyY2VzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvOiBHZXRUcnVzdEFuY2hvciwgTGlzdFByb2ZpbGVzLCBHZXRDUkwuIFRoZXJlIHdpbGwgYmUgbm8gb3RoZXIgcGVybWlzc2lvbnMgZm9yIG90aGVyIHNlcnZpY2VzIGluY2x1ZGVkIGluIHRoaXMgcG9saWN5LiAqL1xuICAgIHB1YmxpYyBBV1NSb2xlc0FueXdoZXJlUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUm9sZXNBbnl3aGVyZVJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIElBTSBSb2xlcyBBbnl3aGVyZSB0byBwdWJsaXNoIHNlcnZpY2UvdXNhZ2UgbWV0cmljcyB0byBDbG91ZFdhdGNoIGFuZCBjaGVjayB0aGUgc3RhdHVzIG9mIFByaXZhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU1JvbGVzQW55d2hlcmVTZXJ2aWNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1JvbGVzQW55d2hlcmVTZXJ2aWNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgQW1hem9uIFMzIG9uIE91dHBvc3RzIHNlcnZpY2UgdG8gbWFuYWdlIEVDMiBuZXR3b3JrIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTUzNPbk91dHBvc3RzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTUzNPbk91dHBvc3RzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBTYXZpbmdzIFBsYW5zIHNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQVdTU2F2aW5nc1BsYW5zRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTYXZpbmdzUGxhbnNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBTYXZpbmdzIFBsYW5zIHNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQVdTU2F2aW5nc1BsYW5zUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2F2aW5nc1BsYW5zUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB1c2UgQVdTIFNlY3VyaXR5IEh1Yi4gKi9cbiAgICBwdWJsaWMgQVdTU2VjdXJpdHlIdWJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlY3VyaXR5SHViRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGVuYWJsZSBhbmQgbWFuYWdlIEFXUyBTZWN1cml0eSBIdWIgd2l0aGluIGFuIG9yZ2FuaXphdGlvbi4gSW5jbHVkZXMgZW5hYmxpbmcgdGhlIHNlcnZpY2UgYWNyb3NzIHRoZSBvcmdhbml6YXRpb24sIGFuZCBkZXRlcm1pbmluZyB0aGUgZGVsZWdhdGVkIGFkbWluaXN0cmF0b3IgYWNjb3VudCBmb3IgdGhlIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU1NlY3VyaXR5SHViT3JnYW5pemF0aW9uc0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZWN1cml0eUh1Yk9yZ2FuaXphdGlvbnNBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBTZWN1cml0eSBIdWIgcmVzb3VyY2VzICovXG4gICAgcHVibGljIEFXU1NlY3VyaXR5SHViUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VjdXJpdHlIdWJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEEgc2VydmljZS1saW5rZWQgcm9sZSByZXF1aXJlZCBmb3IgQVdTIFNlY3VyaXR5IEh1YiB0byBhY2Nlc3MgeW91ciByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEFXU1NlY3VyaXR5SHViU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VjdXJpdHlIdWJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBTZWN1cml0eSBIdWIgdG8gbWFuYWdlIEFXUyBDb25maWcgcnVsZXMgYW5kIFNlY3VyaXR5IEh1YiByZXNvdXJjZXMgaW4geW91ciBvcmdhbml6YXRpb24gYW5kIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NTZWN1cml0eUh1YlYyU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VjdXJpdHlIdWJWMlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHByb3ZpZGVzIGN1c3RvbWVycyB3aXRoIFJlYWQgYW5kIFdyaXRlIHBlcm1pc3Npb25zIHRvIGNhc2UgcmVzb3VyY2VzIHRoYXQgYXJlIGNyZWF0ZWQgdGhyb3VnaCB0aGUgU2VjdXJpdHkgSW5jaWRlbnQgUmVzcG9uc2Ugc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTU2VjdXJpdHlJbmNpZGVudFJlc3BvbnNlQ2FzZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VjdXJpdHlJbmNpZGVudFJlc3BvbnNlQ2FzZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgcHJvdmlkZXMgY3VzdG9tZXJzIHdpdGggUmVhZCBhbmQgV3JpdGUgcGVybWlzc2lvbnMgdG8gYWxsIHJlc291cmNlcyBhc3NvY2lhdGVkIHRvIHRoZSBTZWN1cml0eSBJbmNpZGVudCBSZXNwb25zZSBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NTZWN1cml0eUluY2lkZW50UmVzcG9uc2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlY3VyaXR5SW5jaWRlbnRSZXNwb25zZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgcHJvdmlkZXMgY3VzdG9tZXJzIHdpdGggUmVhZC1vbmx5IHBlcm1pc3Npb25zIHRvIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB0byB0aGUgU2VjdXJpdHkgSW5jaWRlbnQgUmVzcG9uc2Ugc2VydmljZS4gUGVybWlzc2lvbiBpbmNsdWRlcyBhY2Nlc3MgdG8gR2V0Q2FzZUF0dGFjaG1lbnREb3dubG9hZFVybCBhcyB3ZWxsIGZvciB0aGUgYWJpbGl0eSB0byBnZXQgY2FzZSBhdHRhY2htZW50IGRvd25sb2FkIFVSTHMuICovXG4gICAgcHVibGljIEFXU1NlY3VyaXR5SW5jaWRlbnRSZXNwb25zZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlY3VyaXR5SW5jaWRlbnRSZXNwb25zZVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBSZXNvdXJjZXMgbWFuYWdlZCBvciB1c2VkIGJ5IFNlY3VyaXR5IEluY2lkZW50IFJlc3BvbnNlICovXG4gICAgcHVibGljIEFXU1NlY3VyaXR5SW5jaWRlbnRSZXNwb25zZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlY3VyaXR5SW5jaWRlbnRSZXNwb25zZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBTZWN1cml0eSBJbmNpZGVudCBSZXNwb25zZSB0byBjb250aW51b3VzbHkgbW9uaXRvciB5b3VyIGVudmlyb25tZW50IGZvciBzZWN1cml0eSB0aHJlYXRzLCB0dW5lIHNlY3VyaXR5IHNlcnZpY2VzIHRvIHJlZHVjZSBhbGVydCBub2lzZSwgYW5kIGdhdGhlciBpbmZvcm1hdGlvbiB0byBpbnZlc3RpZ2F0ZSBwb3RlbnRpYWwgaW5jaWRlbnRzLiAqL1xuICAgIHB1YmxpYyBBV1NTZWN1cml0eUluY2lkZW50UmVzcG9uc2VUcmlhZ2VTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZWN1cml0eUluY2lkZW50UmVzcG9uc2VUcmlhZ2VTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHNlcnZpY2UgY2F0YWxvZyBhZG1pbiBjYXBhYmlsaXRpZXMgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZUNhdGFsb2dBZG1pbkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZUNhdGFsb2dBZG1pbkZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIFNlcnZpY2UgQ2F0YWxvZyBhZG1pbiBjYXBhYmlsaXRpZXMgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZUNhdGFsb2dBZG1pblJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VDYXRhbG9nQWRtaW5SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIFNlcnZpY2UgQ2F0YWxvZyBBcHAgUmVnaXN0cnkgY2FwYWJpbGl0aWVzICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VDYXRhbG9nQXBwUmVnaXN0cnlGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VDYXRhbG9nQXBwUmVnaXN0cnlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBTZXJ2aWNlIENhdGFsb2cgQXBwIFJlZ2lzdHJ5IGNhcGFiaWxpdGVzICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VDYXRhbG9nQXBwUmVnaXN0cnlSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlQ2F0YWxvZ0FwcFJlZ2lzdHJ5UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgU2VydmljZSBDYXRhbG9nIEFwcFJlZ2lzdHJ5IHRvIG1hbmFnZSBSZXNvdXJjZSBHcm91cHMgb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZUNhdGFsb2dBcHBSZWdpc3RyeVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VDYXRhbG9nQXBwUmVnaXN0cnlTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHNlcnZpY2UgY2F0YWxvZyBlbmR1c2VyIGNhcGFiaWxpdGllcyAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlQ2F0YWxvZ0VuZFVzZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VDYXRhbG9nRW5kVXNlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIFNlcnZpY2UgQ2F0YWxvZyBlbmQtdXNlciBjYXBhYmlsaXRpZXMgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZUNhdGFsb2dFbmRVc2VyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZUNhdGFsb2dFbmRVc2VyUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBIFNlcnZpY2UgTGlua2VkIFJvbGUgUG9saWN5IGZvciBBV1MgU2VydmljZUNhdGFsb2cgdG8gc3luYyB3aXRoIEFXUyBPcmdhbml6YXRpb25zIG9yZ2FuaXphdGlvbiBzdHJ1Y3R1cmUgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZUNhdGFsb2dPcmdzRGF0YVN5bmNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlQ2F0YWxvZ09yZ3NEYXRhU3luY1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQSBTZXJ2aWNlIExpbmtlZCBSb2xlIGZvciBBV1MgU2VydmljZUNhdGFsb2cgdG8gc3luYyBQcm92aXNpb25pbmcgQXJ0aWZhY3RzIGZyb20gc291cmNlIHJlcG9zaXRvcmllcyAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlQ2F0YWxvZ1N5bmNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlQ2F0YWxvZ1N5bmNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb25zIHJlcXVpcmVkIGZvciBtYW5hZ2luZyBub2RlZ3JvdXBzIGluIHRoZSBjdXN0b21lcidzIGFjY291bnQuIFRoZXNlIHBvbGljaWVzIHJlbGF0ZWQgdG8gbWFuYWdlbWVudCBvZiB0aGUgZm9sbG93aW5nIHJlc291cmNlczogQXV0b3NjYWxpbmdHcm91cHMsIFNlY3VyaXR5R3JvdXBzLCBMYXVuY2hUZW1wbGF0ZXMgYW5kIEluc3RhbmNlUHJvZmlsZXMuICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yQW1hem9uRUtTTm9kZWdyb3VwKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yQW1hem9uRUtTTm9kZWdyb3VwKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBTZXJ2aWNlIExpbmtlZCBSb2xlIHByb3ZpZGVzIEFtYXpvbiBRIERldmVsb3BlciBhYmlsaXR5IHRvIHByb3ZpZGUgdXNhZ2UgaW5mb3JtYXRpb24uICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yQW1hem9uUURldmVsb3BlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvckFtYXpvblFEZXZlbG9wZXIpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIFNlcnZpY2UtTGlua2VkIFJvbGUgcHJvdmlkZXMgQVdTIFRyYW5zZm9ybSB3aXRoIHRoZSBhYmlsaXR5IHRvIHByb3ZpZGUgdXNhZ2UgaW5mb3JtYXRpb24uICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yQVdTVHJhbnNmb3JtKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yQVdTVHJhbnNmb3JtKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIFN5c3RlbXMgTWFuYWdlciByZXNvdXJjZXMgdXNlZCBieSBDbG91ZFdhdGNoIEFsYXJtcyAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvckNsb3VkV2F0Y2hBbGFybXNBY3Rpb25TU01TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvckNsb3VkV2F0Y2hBbGFybXNBY3Rpb25TU01TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBDbG91ZFdhdGNoIHRvIGFjY2VzcyBSRFMgUGVyZm9ybWFuY2UgSW5zaWdodHMgbWV0cmljcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvckNsb3VkV2F0Y2hNZXRyaWNzRGJQZXJmSW5zaWdodHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvckNsb3VkV2F0Y2hNZXRyaWNzRGJQZXJmSW5zaWdodHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEEgc2VydmljZS1saW5rZWQgcm9sZSByZXF1aXJlZCBmb3IgQW1hem9uIENvZGVHdXJ1IFByb2ZpbGVyIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JDb2RlR3VydVByb2ZpbGVyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yQ29kZUd1cnVQcm9maWxlcik7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcm9sZSBncmFudHMgcGVybWlzc2lvbnMgdG8gQ29kZVdoaXNwZXJlciB0byBhY2Nlc3MgZGF0YSBpbiB5b3VyIGFjY291bnQgdG8gY2FsY3VsYXRlIGJpbGxpbmcsIHByb3ZpZGVzIGFjY2VzcyB0byBjcmVhdGUgYW5kIGFjY2VzcyBzZWN1cml0eSByZXBvcnRzIGluIEFtYXpvbiBDb2RlR3VydSwgYW5kIGVtaXQgZGF0YSB0byBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvckNvZGVXaGlzcGVyZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JDb2RlV2hpc3BlcmVyUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEVDMiBTY2hlZHVsZWQgSW5zdGFuY2VzIHRvIGxhdW5jaCBhbmQgbWFuYWdlIHNwb3QgaW5zdGFuY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvckVDMlNjaGVkdWxlZEluc3RhbmNlcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvckVDMlNjaGVkdWxlZEluc3RhbmNlcyk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBHcm91bmRTdGF0aW9uIHVzZXMgdGhpcyBzZXJ2aWNlLWxpbmtlZCByb2xlIHRvIGludm9rZSBFQzIgdG8gZmluZCBwdWJsaWMgSVB2NCBhZGRyZXNzZXMgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JHcm91bmRTdGF0aW9uRGF0YWZsb3dFbmRwb2ludEdyb3VwUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yR3JvdW5kU3RhdGlvbkRhdGFmbG93RW5kcG9pbnRHcm91cFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBFQzJJbWFnZUJ1aWxkZXIgdG8gY2FsbCBBV1Mgc2VydmljZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9ySW1hZ2VCdWlsZGVyKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9ySW1hZ2VCdWlsZGVyKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBJb1QgU2l0ZVdpc2UgdG8gcHJvdmlzaW9uIGFuZCBtYW5hZ2UgZ2F0ZXdheXMgYXMgd2VsbCBhcyBxdWVyeSBkYXRhLiBUaGUgcG9saWN5IGluY2x1ZGVzIHJlcXVpcmVkIEFXUyBHcmVlbmdyYXNzIHBlcm1pc3Npb25zIGZvciBkZXBsb3lpbmcgdG8gZ3JvdXBzLCBBV1MgTGFtYmRhIHBlcm1pc3Npb25zIGZvciBjcmVhdGluZyBhbmQgdXBkYXRpbmcgc2VydmljZS1wcmVmaXhlZCBmdW5jdGlvbnMsIGFuZCBBV1MgSW9UIEFuYWx5dGljcyBwZXJtaXNzaW9ucyBmb3IgcXVlcnlpbmcgZGF0YSBmcm9tIGRhdGFzdG9yZXMuICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9ySW9UU2l0ZVdpc2UoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JJb1RTaXRlV2lzZSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBMb2cgRGVsaXZlcnkgc2VydmljZSB0byBkZWxpdmVyIGxvZ3MgYnkgY2FsbGluZyBsb2cgZGVzdGluYXRpb24gb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yTG9nRGVsaXZlcnlQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JMb2dEZWxpdmVyeVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBBbWF6b24gTW9uaXRyb24gcGVybWlzc2lvbnMgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMsIGluY2x1ZGluZyBBV1MgU1NPIHVzZXIgYXNzaWdubWVudCBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JNb25pdHJvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvck1vbml0cm9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQ2xvdWR3YXRjaCBhY2Nlc3MgdG8gcHVibGlzaCBvcGVyYXRpb25hbCBhbmQgdXNhZ2UgbWV0cmljcyBhbmQgbG9ncyBmb3IgQW1hem9uIE5lcHR1bmUgKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JOZXB0dW5lR3JhcGhQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVGb3JOZXB0dW5lR3JhcGhQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBwZXJtaXNzaW9ucyB0byBkZXNjcmliZSBhbmQgdXBkYXRlIFByaXZhdGUgTWFya2V0cGxhY2UgcmVzb3VyY2VzIGFuZCBkZXNjcmliZSBBV1MgT3JnYW5pemF0aW9ucyAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvclByaXZhdGVNYXJrZXRwbGFjZUFkbWluUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NlcnZpY2VSb2xlRm9yUHJpdmF0ZU1hcmtldHBsYWNlQWRtaW5Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIFByb2N1cmVtZW50IEluc2lnaHRzIHRvIG9idGFpbiBPcmdhbml6YXRpb24gQWNjb3VudCBkZXRhaWxzICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlRm9yUHJvY3VyZW1lbnRJbnNpZ2h0c1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvclByb2N1cmVtZW50SW5zaWdodHNQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gQVdTIHNlcnZpY2VzIGFuZCByZXNvdXJjZXMgbmVjZXNzYXJ5IHRvIG1pZ3JhdGUgc2VydmljZSBpbnN0YW5jZXMgaW50byBBV1MgaW5jbHVkaW5nIEVDMiwgUzMgYW5kIENsb3VkZm9ybWF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZUZvclNNUygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvclNNUyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVXNlciBTdWJzY3JpcHRpb25zIHNlcnZpY2UgdG8geW91ciBJZGVudGl0eSBDZW50ZXIgcmVzb3VyY2VzIHRvIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHlvdXIgc3Vic2NyaXB0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVGb3JVc2VyU3Vic2NyaXB0aW9ucygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZUZvclVzZXJTdWJzY3JpcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgQVdTIEJhY2t1cCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgY29tcGxpYW5jZSByZXBvcnRzIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIEFXU1NlcnZpY2VSb2xlUG9saWN5Rm9yQmFja3VwUmVwb3J0cygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZVBvbGljeUZvckJhY2t1cFJlcG9ydHMpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBjb250YWlucyBwZXJtaXNzaW9ucyBmb3IgdGVzdGluZyByZXN0b3JlcyBhbmQgZm9yIGNsZWFuaW5nIHVwIHJlc291cmNlcyBjcmVhdGVkIGR1cmluZyB0ZXN0cy4gKi9cbiAgICBwdWJsaWMgQVdTU2VydmljZVJvbGVQb2xpY3lGb3JCYWNrdXBSZXN0b3JlVGVzdGluZygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTZXJ2aWNlUm9sZVBvbGljeUZvckJhY2t1cFJlc3RvcmVUZXN0aW5nKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBtYW5hZ2VkIHBvbGljeSBwcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gQW1hem9uIFdvcmtTcGFjZXMgdG8gbWFuYWdlIEVDMiBpbnN0YW5jZXMgaW4geW91ciBBV1MgYWNjb3VudCAqL1xuICAgIHB1YmxpYyBBV1NTZXJ2aWNlUm9sZVBvbGljeUZvcldvcmtzcGFjZXNJbnN0YW5jZXMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU2VydmljZVJvbGVQb2xpY3lGb3JXb3Jrc3BhY2VzSW5zdGFuY2VzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgdGhlIEFXUyBERG9TIFJlc3BvbnNlIFRlYW0gd2l0aCBsaW1pdGVkIGFjY2VzcyB0byB5b3VyIEFXUyBhY2NvdW50IHRvIGFzc2lzdCB3aXRoIEREb1MgYXR0YWNrIG1pdGlnYXRpb24gZHVyaW5nIGEgaGlnaC1zZXZlcml0eSBldmVudC4gKi9cbiAgICBwdWJsaWMgQVdTU2hpZWxkRFJUQWNjZXNzUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NoaWVsZERSVEFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBV1MgU2hpZWxkIHRvIGFjY2VzcyBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmIHRvIHByb3ZpZGUgRERvUyBwcm90ZWN0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NTaGllbGRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTaGllbGRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBwdWJsaXNoIG1ldHJpY3MgYW5kIHByb3ZpZGUgaW5zaWdodHMgZm9yIHlvdXIgc29jaWFsIG1lc3NhZ2Ugc2VuZGluZy4gKi9cbiAgICBwdWJsaWMgQVdTU29jaWFsTWVzc2FnaW5nU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU29jaWFsTWVzc2FnaW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBBV1MgU3lzdGVtcyBNYW5hZ2VyIGZvciBTQVAgd2l0aCB0aGUgcGVybWlzc2lvbnMgbmVlZGVkIHRvIG1hbmFnZSBhbmQgaW50ZWdyYXRlIFNBUCBzb2Z0d2FyZSB3aXRoIEFXUy4gKi9cbiAgICBwdWJsaWMgQVdTU1NNRm9yU0FQU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NNRm9yU0FQU2VydmljZUxpbmtlZFJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIFNlcnZpY2UgTGlua2VkIFJvbGUgQVdTU2VydmljZVJvbGVGb3JBbWF6b25TU01fT3BzSW5zaWdodHMgKi9cbiAgICBwdWJsaWMgQVdTU1NNT3BzSW5zaWdodHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU01PcHNJbnNpZ2h0c1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWRtaW5pc3RyYXRvciBhY2Nlc3MgZm9yIFNTTyBEaXJlY3RvcnkgKi9cbiAgICBwdWJsaWMgQVdTU1NPRGlyZWN0b3J5QWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTU09EaXJlY3RvcnlBZG1pbmlzdHJhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogUmVhZE9ubHkgYWNjZXNzIGZvciBTU08gRGlyZWN0b3J5ICovXG4gICAgcHVibGljIEFXU1NTT0RpcmVjdG9yeVJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTT0RpcmVjdG9yeVJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHdpdGhpbiBBV1MgU1NPIHRvIG1hbmFnZSBBV1MgT3JnYW5pemF0aW9ucyBtYXN0ZXIgYW5kIG1lbWJlciBhY2NvdW50cyBhbmQgY2xvdWQgYXBwbGljYXRpb24gKi9cbiAgICBwdWJsaWMgQVdTU1NPTWFzdGVyQWNjb3VudEFkbWluaXN0cmF0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NPTWFzdGVyQWNjb3VudEFkbWluaXN0cmF0b3IpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3Mgd2l0aGluIEFXUyBTU08gdG8gbWFuYWdlIEFXUyBPcmdhbml6YXRpb25zIG1lbWJlciBhY2NvdW50cyBhbmQgY2xvdWQgYXBwbGljYXRpb24gKi9cbiAgICBwdWJsaWMgQVdTU1NPTWVtYmVyQWNjb3VudEFkbWluaXN0cmF0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NPTWVtYmVyQWNjb3VudEFkbWluaXN0cmF0b3IpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFXUyBTU08gY29uZmlndXJhdGlvbnMuICovXG4gICAgcHVibGljIEFXU1NTT1JlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1NTT1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIEFXUyBTU08gcGVybWlzc2lvbnMgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMsIGluY2x1ZGluZyBJQU0gcm9sZXMsIHBvbGljaWVzIGFuZCBTQU1MIElkUCBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTU1NPU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU1NPU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbiBhY2Nlc3MgcG9saWN5IGZvciBwcm92aWRpbmcgYSB1c2VyL3JvbGUvZXRjIGFjY2VzcyB0byB0aGUgQVdTIFN0ZXBGdW5jdGlvbnMgY29uc29sZS4gRm9yIGEgZnVsbCBjb25zb2xlIGV4cGVyaWVuY2UsIGluIGFkZGl0aW9uIHRvIHRoaXMgcG9saWN5LCBhIHVzZXIgbWF5IG5lZWQgaWFtOlBhc3NSb2xlIHBlcm1pc3Npb24gb24gb3RoZXIgSUFNIHJvbGVzIHRoYXQgY2FuIGJlIGFzc3VtZWQgYnkgdGhlIHNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU1N0ZXBGdW5jdGlvbnNDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTdGVwRnVuY3Rpb25zQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbiBhY2Nlc3MgcG9saWN5IGZvciBwcm92aWRpbmcgYSB1c2VyL3JvbGUvZXRjIGFjY2VzcyB0byB0aGUgQVdTIFN0ZXBGdW5jdGlvbnMgQVBJLiBGb3IgZnVsbCBhY2Nlc3MsIGluIGFkZGl0aW9uIHRvIHRoaXMgcG9saWN5LCBhIHVzZXIgTVVTVCBoYXZlIGlhbTpQYXNzUm9sZSBwZXJtaXNzaW9uIG9uIGF0IGxlYXN0IG9uZSBJQU0gcm9sZSB0aGF0IGNhbiBiZSBhc3N1bWVkIGJ5IHRoZSBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBBV1NTdGVwRnVuY3Rpb25zRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTdGVwRnVuY3Rpb25zRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFuIGFjY2VzcyBwb2xpY3kgZm9yIHByb3ZpZGluZyBhIHVzZXIvcm9sZS9ldGMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgQVdTIFN0ZXBGdW5jdGlvbnMgc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQVdTU3RlcEZ1bmN0aW9uc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N0ZXBGdW5jdGlvbnNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBTdG9yYWdlIEdhdGV3YXkgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NTdG9yYWdlR2F0ZXdheUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3RvcmFnZUdhdGV3YXlGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyBTdG9yYWdlIEdhdGV3YXkgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBBV1NTdG9yYWdlR2F0ZXdheVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N0b3JhZ2VHYXRld2F5UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlLWxpbmtlZCByb2xlIHVzZWQgYnkgQVdTIFN0b3JhZ2UgR2F0ZXdheSB0byBlbmFibGUgaW50ZWdyYXRpb24gb2Ygb3RoZXIgQVdTIHNlcnZpY2VzIHdpdGggU3RvcmFnZSBHYXRld2F5LiAqL1xuICAgIHB1YmxpYyBBV1NTdG9yYWdlR2F0ZXdheVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N0b3JhZ2VHYXRld2F5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBV1NTdXBwbHlDaGFpbkZlZGVyYXRpb25BZG1pbkFjY2VzcyBwcm92aWRlcyBBV1MgU3VwcGx5IENoYWluIGZlZGVyYXRlZCB1c2VycyBhY2Nlc3MgdG8gdGhlIEFXUyBTdXBwbHkgQ2hhaW4gYXBwbGljYXRpb24sIGluY2x1ZGluZyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBhY3Rpb25zIHdpdGhpbiB0aGUgQVdTIFN1cHBseSBDaGFpbiBhcHBsaWNhdGlvbi4gVGhlIHBvbGljeSBwcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSBwZXJtaXNzaW9ucyBvdmVyIElBTSBJZGVudGl0eSBDZW50ZXIgdXNlcnMgYW5kIGdyb3VwcyBhbmQgaXMgYXR0YWNoZWQgdG8gYSByb2xlIGNyZWF0ZWQgYnkgQVdTIFN1cHBseSBDaGFpbiBvbiB5b3VyIGJlaGFsZi4gWW91IHNob3VsZG4ndCBhdHRhY2ggQVdTU3VwcGx5Q2hhaW5GZWRlcmF0aW9uQWRtaW5BY2Nlc3MgcG9saWN5IHRvIGFueSBvdGhlciBJQU0gZW50aXRpZXMuICovXG4gICAgcHVibGljIEFXU1N1cHBseUNoYWluRmVkZXJhdGlvbkFkbWluQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N1cHBseUNoYWluRmVkZXJhdGlvbkFkbWluQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHVzZXJzIHRvIGFjY2VzcyB0aGUgQVdTIFN1cHBvcnQgQ2VudGVyLiAqL1xuICAgIHB1YmxpYyBBV1NTdXBwb3J0QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N1cHBvcnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgQVdTIFN1cHBvcnQgQXBwIGFuZCBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcywgc3VjaCBhcyBBV1MgU3VwcG9ydCBhbmQgU2VydmljZSBRdW90YXMuIFRoaXMgcG9saWN5IGluY2x1ZGVzIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgc3VwcG9ydGluZyBzZXJ2aWNlcyBzbyB0aGF0IHRoZSB1c2VyIGNhbiBjb250YWN0IEFXUyBTdXBwb3J0IGZvciBzdXBwb3J0IGNhc2VzLCBjaGFuZ2Ugc2VydmljZSBxdW90YXMsIGFuZCBjcmVhdGUgdGhlIHJlbGV2YW50IHNlcnZpY2UtbGlua2VkIHJvbGVzLiAqL1xuICAgIHB1YmxpYyBBV1NTdXBwb3J0QXBwRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTdXBwb3J0QXBwRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIEFXUyBTdXBwb3J0IEFwcC4gKi9cbiAgICBwdWJsaWMgQVdTU3VwcG9ydEFwcFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N1cHBvcnRBcHBSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIHN1cHBvcnRwbGFucy4gKi9cbiAgICBwdWJsaWMgQVdTU3VwcG9ydFBsYW5zRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTdXBwb3J0UGxhbnNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBzdXBwb3J0cGxhbnMuICovXG4gICAgcHVibGljIEFXU1N1cHBvcnRQbGFuc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N1cHBvcnRQbGFuc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFXUyBTdXBwb3J0IHRvIGFjY2VzcyBBV1MgcmVzb3VyY2VzIHRvIHByb3ZpZGUgYmlsbGluZywgYWRtaW5pc3RyYXRpdmUsIGFuZCBzdXBwb3J0IHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NTdXBwb3J0U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3VwcG9ydFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIEFXUyBTeXN0ZW1zIE1hbmFnZXIgKFNTTSkgcGVybWlzc2lvbiB0byBkaXNjb3ZlciBBV1MgYWNjb3VudCBpbmZvcm1hdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJBY2NvdW50RGlzY292ZXJ5U2VydmljZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlckFjY291bnREaXNjb3ZlcnlTZXJ2aWNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyByZXNvdXJjZXMgbWFuYWdlZCBvciB1c2VkIGJ5IHRoZSBBV1MgU3lzdGVtcyBNYW5hZ2VyIGNoYW5nZSBtYW5hZ2VtZW50IGZyYW1ld29yay4gKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJDaGFuZ2VNYW5hZ2VtZW50U2VydmljZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlckNoYW5nZU1hbmFnZW1lbnRTZXJ2aWNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIEFXUyBTeXN0ZW1zIE1hbmFnZXIgUXVpY2sgU2V0dXAgdG8gZW5hYmxlIGFuZCBjb25maWd1cmUgQVdTIENvbmZpZyBjb25maWd1cmF0aW9uIHJlY29yZGluZy4gKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJFbmFibGVDb25maWdSZWNvcmRpbmdFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3lzdGVtc01hbmFnZXJFbmFibGVDb25maWdSZWNvcmRpbmdFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgYWRtaW5pc3RyYXRpdmUgcGVybWlzc2lvbnMgZm9yIGVuYWJsaW5nIEV4cGxvcmVyLCBhIGNhcGFiaWxpdHkgb2YgQVdTIFN5c3RlbXMgTWFuYWdlci4gVGhpcyBpbmNsdWRlcyBwZXJtaXNzaW9ucyB0byB1cGRhdGUgcmVsYXRlZCBTeXN0ZW1zIE1hbmFnZXIgc2VydmljZSBzZXR0aW5ncywgYW5kIHRvIGNyZWF0ZSBhIHNlcnZpY2UtbGlua2VkIHJvbGUgZm9yIFN5c3RlbXMgTWFuYWdlci4gKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJFbmFibGVFeHBsb3JlckV4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlckVuYWJsZUV4cGxvcmVyRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFN5c3RlbXMgTWFuYWdlciBmb3IgU0FQIHNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJGb3JTQVBGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VyRm9yU0FQRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIFN5c3RlbXMgTWFuYWdlciBmb3IgU0FQIHNlcnZpY2UgKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJGb3JTQVBSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlckZvclNBUFJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIEFXUyByZXNvdXJjZXMgbWFuYWdlZCBvciB1c2VkIGJ5IHRoZSBBV1MgU3lzdGVtcyBNYW5hZ2VyIGp1c3QgaW4gdGltZSBhY2Nlc3MgZnJhbWV3b3JrLiAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckp1c3RJblRpbWVBY2Nlc3NTZXJ2aWNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VySnVzdEluVGltZUFjY2Vzc1NlcnZpY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgbWFuYWdlZCBwb2xpY3kgQVdTU3lzdGVtc01hbmFnZXJKdXN0SW5UaW1lQWNjZXNzVG9rZW5Qb2xpY3kgYWxsb3dzIFN5c3RlbXMgTWFuYWdlciB0byBnZW5lcmF0ZSBhY2Nlc3MgdG9rZW5zIHVzZWQgZm9yIGp1c3QtaW4tdGltZSBub2RlIGFjY2Vzcy4gKi9cbiAgICBwdWJsaWMgQVdTU3lzdGVtc01hbmFnZXJKdXN0SW5UaW1lQWNjZXNzVG9rZW5Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3lzdGVtc01hbmFnZXJKdXN0SW5UaW1lQWNjZXNzVG9rZW5Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgbWFuYWdlZCBwb2xpY3kgQVdTU3lzdGVtc01hbmFnZXJKdXN0SW5UaW1lQWNjZXNzVG9rZW5TZXNzaW9uUG9saWN5IGFsbG93cyBTeXN0ZW1zIE1hbmFnZXIgdG8gYXBwbHkgc2NvcGVkIGRvd24gcGVybWlzc2lvbnMgdG8gYSBqdXN0LWluLXRpbWUgbm9kZSBhY2Nlc3Mgc2Vzc2lvbiBvbmNlIGl0IGlzIHN0YXJ0ZWQuICovXG4gICAgcHVibGljIEFXU1N5c3RlbXNNYW5hZ2VySnVzdEluVGltZUFjY2Vzc1Rva2VuU2Vzc2lvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlckp1c3RJblRpbWVBY2Nlc3NUb2tlblNlc3Npb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBhbGxvd3MgU3lzdGVtcyBNYW5hZ2VyIHRvIHNoYXJlIGEgZGVueS1hY2Nlc3MgcG9saWN5IGZvciBqdXN0LWluLXRpbWUgbm9kZSBhY2Nlc3MgZnJvbSB0aGUgZGVsZWdhdGVkIGFkbWluaXN0cmF0b3IgYWNjb3VudCB0byBtZW1iZXIgYWNjb3VudHMsIGFuZCByZXBsaWNhdGUgdGhlIHBvbGljeSB0byBtdWx0aXBsZSBSZWdpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NTeXN0ZW1zTWFuYWdlckp1c3RJblRpbWVOb2RlQWNjZXNzUm9sZVByb3BhZ2F0aW9uUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1N5c3RlbXNNYW5hZ2VySnVzdEluVGltZU5vZGVBY2Nlc3NSb2xlUHJvcGFnYXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9ucyByZXF1aXJlZCB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgdXNlciBmb3IgSnVzdC1Jbi1UaW1lLU5vZGUtQWNjZXNzIG5vdGlmaWNhdGlvbnMuICovXG4gICAgcHVibGljIEFXU1N5c3RlbXNNYW5hZ2VyTm90aWZpY2F0aW9uc1NlcnZpY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTU3lzdGVtc01hbmFnZXJOb3RpZmljYXRpb25zU2VydmljZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIElBTSByb2xlIGZvciBTU00gRXhwbG9yZXIgdG8gbWFuYWdlIE9wc0RhdGEgcmVsYXRlZCBvcGVyYXRpb25zICovXG4gICAgcHVibGljIEFXU1N5c3RlbXNNYW5hZ2VyT3BzRGF0YVN5bmNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NTeXN0ZW1zTWFuYWdlck9wc0RhdGFTeW5jU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgdGhlIEFXUyBQb3J0YWwgQXNzZXQgU2VydmVyIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnMgcmVxdWlyZWQgZm9yIG5vcm1hbCBvcGVyYXRpb24uICovXG4gICAgcHVibGljIEFXU1RoaW5rYm94QXNzZXRTZXJ2ZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVGhpbmtib3hBc3NldFNlcnZlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBBV1MgVGhpbmtib3gncyBEZWFkbGluZSBzb2Z0d2FyZSBmdWxsIGFjY2VzcyB0byBtdWx0aXBsZSBBV1Mgc2VydmljZXMgYXMgcmVxdWlyZWQgZm9yIEFXUyBQb3J0YWwgYWRtaW5pc3RyYXRpb24uIFRoaXMgaW5jbHVkZXMgYWNjZXNzIHRvIGNyZWF0ZSBhcmJpdHJhcnkgdGFncyBvbiBzZXZlcmFsIEVDMiByZXNvdXJjZSB0eXBlcy4gKi9cbiAgICBwdWJsaWMgQVdTVGhpbmtib3hBV1NQb3J0YWxBZG1pblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUaGlua2JveEFXU1BvcnRhbEFkbWluUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHRoZSBBV1MgUG9ydGFsIEdhdGV3YXkgbWFjaGluZSB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHJlcXVpcmVkIGZvciBub3JtYWwgb3BlcmF0aW9uLiAqL1xuICAgIHB1YmxpYyBBV1NUaGlua2JveEFXU1BvcnRhbEdhdGV3YXlQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVGhpbmtib3hBV1NQb3J0YWxHYXRld2F5UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHRoZSBEZWFkbGluZSBXb3JrZXJzIGluIEFXUyBQb3J0YWwgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyByZXF1aXJlZCBmb3Igbm9ybWFsIG9wZXJhdGlvbi4gKi9cbiAgICBwdWJsaWMgQVdTVGhpbmtib3hBV1NQb3J0YWxXb3JrZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVGhpbmtib3hBV1NQb3J0YWxXb3JrZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgcmVxdWlyZWQgZm9yIHRoZSBvcGVyYXRpb24gb2YgQVdTIFRoaW5rYm94J3MgRGVhZGxpbmUgUmVzb3VyY2UgVHJhY2tlci4gIFRoaXMgaW5jbHVkZXMgZnVsbCBhY2Nlc3MgdG8gc29tZSBFQzIgYWN0aW9ucywgaW5jbHVkaW5nIERlbGV0ZUZsZWV0cyBhbmQgQ2FuY2VsU3BvdEZsZWV0UmVxdWVzdHMuICovXG4gICAgcHVibGljIEFXU1RoaW5rYm94RGVhZGxpbmVSZXNvdXJjZVRyYWNrZXJBY2Nlc3NQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVGhpbmtib3hEZWFkbGluZVJlc291cmNlVHJhY2tlckFjY2Vzc1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyByZXF1aXJlZCB0byBjcmVhdGUsIGRlc3Ryb3ksIGFuZCBhZG1pbmlzdGVyIEFXUyBUaGlua2JveCdzIERlYWRsaW5lIFJlc291cmNlIFRyYWNrZXIuICovXG4gICAgcHVibGljIEFXU1RoaW5rYm94RGVhZGxpbmVSZXNvdXJjZVRyYWNrZXJBZG1pblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUaGlua2JveERlYWRsaW5lUmVzb3VyY2VUcmFja2VyQWRtaW5Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgcmVxdWlyZWQgZm9yIEFXUyBUaGlua2JveCdzIERlYWRsaW5lIFNwb3QgRXZlbnQgUGx1Z2luLiAgVGhpcyBpbmNsdWRlcyBwZXJtaXNzaW9uIHRvIHJlcXVlc3QsIG1vZGlmeSwgYW5kIGNhbmNlbCBhIHNwb3QgZmxlZXQsIGFzIHdlbGwgYXMgbGltaXRlZCBQYXNzUm9sZSBwZXJtaXNzaW9uLiAqL1xuICAgIHB1YmxpYyBBV1NUaGlua2JveERlYWRsaW5lU3BvdEV2ZW50UGx1Z2luQWRtaW5Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVGhpbmtib3hEZWFkbGluZVNwb3RFdmVudFBsdWdpbkFkbWluUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnQgcGVybWlzc2lvbnMgcmVxdWlyZWQgZm9yIGFuIEVDMiBpbnN0YW5jZSBydW5uaW5nIEFXUyBUaGlua2JveCBEZWFkbGluZSBTcG90IEV2ZW50IFBsdWdpbiBXb3JrZXIgc29mdHdhcmUuICovXG4gICAgcHVibGljIEFXU1RoaW5rYm94RGVhZGxpbmVTcG90RXZlbnRQbHVnaW5Xb3JrZXJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVGhpbmtib3hEZWFkbGluZVNwb3RFdmVudFBsdWdpbldvcmtlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFXUyBUcmFuc2ZlciB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgKi9cbiAgICBwdWJsaWMgQVdTVHJhbnNmZXJDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUcmFuc2ZlckNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFRyYW5zZmVyIFNlcnZpY2UuICovXG4gICAgcHVibGljIEFXU1RyYW5zZmVyRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUcmFuc2ZlckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIFRyYW5zZmVyIGZ1bGwgYWNjZXNzIHRvIGNyZWF0ZSBsb2cgc3RyZWFtcyBhbmQgZ3JvdXBzIGFuZCBwdXQgbG9nIGV2ZW50cyB0byB5b3VyIGFjY291bnQgKi9cbiAgICBwdWJsaWMgQVdTVHJhbnNmZXJMb2dnaW5nQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RyYW5zZmVyTG9nZ2luZ0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGUgcmVhZG9ubHkgYWNjZXNzIHRvIEFXUyBUcmFuc2ZlciBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQVdTVHJhbnNmZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUcmFuc2ZlclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyB0aGUgQVdTIFRyYW5zZm9ybSBzZXJ2aWNlIHRvIGRlcGxveSB0cmFuc2Zvcm1lZCAuTkVUIGFwcGxpY2F0aW9ucyBieSBjcmVhdGluZyBhbmQgbWFuYWdpbmcgQVdTIHJlc291cmNlcy4gVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIHByb3Zpc2lvbiBpbmZyYXN0cnVjdHVyZSwgbWFuYWdlIGNvbXB1dGUgcmVzb3VyY2VzLCBhbmQgY29uZmlndXJlIGRlcGxveW1lbnQgc2V0dGluZ3MgYWNyb3NzIHZhcmlvdXMgQVdTIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBBV1NUcmFuc2Zvcm1BcHBsaWNhdGlvbkRlcGxveW1lbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVHJhbnNmb3JtQXBwbGljYXRpb25EZXBsb3ltZW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyB0aGUgQVdTIFRyYW5zZm9ybSB0byBkZXBsb3kgYXBwbGljYXRpb25zIHRvIEFtYXpvbiBFbGFzdGljIENvbnRhaW5lciBTZXJ2aWNlIChFQ1MpIHdpdGggRmFyZ2F0ZS4gSXQgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIHByb3Zpc2lvbiwgY29uZmlndXJlLCBhbmQgbWFuYWdlIHRoZSB1bmRlcmx5aW5nIGluZnJhc3RydWN0dXJlIHJlcXVpcmVkIHRvIHJ1biBhcHBsaWNhdGlvbnMgb24gRUNTLiAqL1xuICAgIHB1YmxpYyBBV1NUcmFuc2Zvcm1BcHBsaWNhdGlvbkVDU0RlcGxveW1lbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVHJhbnNmb3JtQXBwbGljYXRpb25FQ1NEZXBsb3ltZW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFRydXN0ZWQgQWR2aXNvciBQcmlvcml0eS4gVGhpcyBwb2xpY3kgYWxzbyBlbmFibGVzIHRoZSB1c2VyIHRvIGFkZCBUcnVzdGVkIEFkdmlzb3IgYXMgYSB0cnVzdGVkIHNlcnZpY2Ugd2l0aCBBV1MgT3JnYW5pemF0aW9ucyBhbmQgdG8gc3BlY2lmeSBkZWxlZ2F0ZWQgYWRtaW5pc3RyYXRvciBhY2NvdW50cyBmb3IgVHJ1c3RlZCBBZHZpc29yIFByaW9yaXR5LiAqL1xuICAgIHB1YmxpYyBBV1NUcnVzdGVkQWR2aXNvclByaW9yaXR5RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NUcnVzdGVkQWR2aXNvclByaW9yaXR5RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIFRydXN0ZWQgQWR2aXNvciBQcmlvcml0eS4gVGhpcyBpbmNsdWRlcyBwZXJtaXNzaW9uIHRvIHZpZXcgdGhlIGRlbGVnYXRlZCBhZG1pbmlzdHJhdG9yIGFjY291bnRzLiAqL1xuICAgIHB1YmxpYyBBV1NUcnVzdGVkQWR2aXNvclByaW9yaXR5UmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVHJ1c3RlZEFkdmlzb3JQcmlvcml0eVJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSBQb2xpY3kgZm9yIFRydXN0ZWQgQWR2aXNvciBNdWx0aS1hY2NvdW50IFJlcG9ydGluZyAqL1xuICAgIHB1YmxpYyBBV1NUcnVzdGVkQWR2aXNvclJlcG9ydGluZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RydXN0ZWRBZHZpc29yUmVwb3J0aW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBY2Nlc3MgZm9yIHRoZSBBV1MgVHJ1c3RlZCBBZHZpc29yIFNlcnZpY2UgdG8gaGVscCByZWR1Y2UgY29zdCwgaW5jcmVhc2UgcGVyZm9ybWFuY2UsIGFuZCBpbXByb3ZlIHNlY3VyaXR5IG9mIHlvdXIgQVdTIGVudmlyb25tZW50LiAqL1xuICAgIHB1YmxpYyBBV1NUcnVzdGVkQWR2aXNvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1RydXN0ZWRBZHZpc29yU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIFVzZXIgTm90aWZpY2F0aW9ucyB0byBjYWxsIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTVXNlck5vdGlmaWNhdGlvbnNTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NVc2VyTm90aWZpY2F0aW9uc1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgZm9yIHZpZXdpbmcgZW50aXRsZWQgVmVuZG9yIEluc2lnaHRzIHJlc291cmNlcyBhbmQgbWFuYWdpbmcgVmVuZG9yIEluc2lnaHRzIHN1YnNjcmlwdGlvbnMgKi9cbiAgICBwdWJsaWMgQVdTVmVuZG9ySW5zaWdodHNBc3Nlc3NvckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVmVuZG9ySW5zaWdodHNBc3Nlc3NvckZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIGZvciB2aWV3aW5nIGVudGl0bGVkIFZlbmRvciBJbnNpZ2h0cyByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTVmVuZG9ySW5zaWdodHNBc3Nlc3NvclJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ZlbmRvckluc2lnaHRzQXNzZXNzb3JSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIGZvciBjcmVhdGluZyBhbmQgbWFuYWdpbmcgdGhlIFZlbmRvciBJbnNpZ2h0cyByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTVmVuZG9ySW5zaWdodHNWZW5kb3JGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ZlbmRvckluc2lnaHRzVmVuZG9yRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgZm9yIHZpZXdpbmcgdGhlIFZlbmRvciBJbnNpZ2h0cyByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQVdTVmVuZG9ySW5zaWdodHNWZW5kb3JSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NWZW5kb3JJbnNpZ2h0c1ZlbmRvclJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIFZQQyBMYXR0aWNlIHRvIGFjY2VzcyBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBBV1NWcGNMYXR0aWNlU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVnBjTGF0dGljZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgU2l0ZS10by1TaXRlIFZQTiB0byBjcmVhdGUgYW5kIG1hbmFnZSByZXNvdXJjZXMgcmVsYXRlZCB0byB5b3VyIFZQTiBDb25uZWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTVlBDUzJTVnBuU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTVlBDUzJTVnBuU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBWUEMgVHJhbnNpdCBHYXRld2F5IHRvIGNyZWF0ZSBhbmQgbWFuYWdlIG5lY2Vzc2FyeSByZXNvdXJjZXMgZm9yIHlvdXIgVHJhbnNpdCBHYXRld2F5IFZQQyBBdHRhY2htZW50cy4gKi9cbiAgICBwdWJsaWMgQVdTVlBDVHJhbnNpdEdhdGV3YXlTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NWUENUcmFuc2l0R2F0ZXdheVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGVuYWJsZSBBV1MgVmVyaWZpZWQgQWNjZXNzIHNlcnZpY2UgdG8gcHJvdmlzaW9uIGVuZHBvaW50cyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBBV1NWUENWZXJpZmllZEFjY2Vzc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1ZQQ1ZlcmlmaWVkQWNjZXNzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgV0FGIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gTm90ZSB0aGF0IHRoaXMgcG9saWN5IGFsc28gZ3JhbnRzIHBlcm1pc3Npb25zIHRvIGxpc3QgYW5kIHVwZGF0ZSBBbWF6b24gQ2xvdWRGcm9udCBkaXN0cmlidXRpb25zLCBwZXJtaXNzaW9ucyB0byB2aWV3IGxvYWQgYmFsYW5jZXJzIG9uIEFXUyBFbGFzdGljIExvYWQgQmFsYW5jaW5nLCBwZXJtaXNzaW9ucyB0byB2aWV3IEFtYXpvbiBBUEkgR2F0ZXdheSBSRVNUIEFQSXMgYW5kIHN0YWdlcywgcGVybWlzc2lvbnMgdG8gbGlzdCBhbmQgdmlldyBBbWF6b24gQ2xvdWRXYXRjaCBtZXRyaWNzLCBhbmQgcGVybWlzc2lvbnMgdG8gdmlldyByZWdpb25zIGVuYWJsZWQgd2l0aGluIHRoZSBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBBV1NXQUZDb25zb2xlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NXQUZDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIFdBRiB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuIE5vdGUgdGhhdCB0aGlzIHBvbGljeSBhbHNvIGdyYW50cyBwZXJtaXNzaW9ucyB0byBsaXN0IEFtYXpvbiBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbnMsIHBlcm1pc3Npb25zIHRvIHZpZXcgbG9hZCBiYWxhbmNlcnMgb24gQVdTIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcsIHBlcm1pc3Npb25zIHRvIHZpZXcgQW1hem9uIEFQSSBHYXRld2F5IFJFU1QgQVBJcyBhbmQgc3RhZ2VzLCBwZXJtaXNzaW9ucyB0byBsaXN0IGFuZCB2aWV3IEFtYXpvbiBDbG91ZFdhdGNoIG1ldHJpY3MsIGFuZCBwZXJtaXNzaW9ucyB0byB2aWV3IHJlZ2lvbnMgZW5hYmxlZCB3aXRoaW4gdGhlIGFjY291bnQuICovXG4gICAgcHVibGljIEFXU1dBRkNvbnNvbGVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NXQUZDb25zb2xlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBV1MgV0FGIGFjdGlvbnMuICovXG4gICAgcHVibGljIEFXU1dBRkZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTV0FGRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQVdTIFdBRiBhY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBBV1NXQUZSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NXQUZSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBXZWxsQXJjaGl0ZWN0ZWQgdG8gYWNjZXNzIEFXUyBzZXJ2aWNlcyBhbmQgcmVzb3VyY2VzIHRoYXQgcmVsYXRlIHRvIFdlbGxBcmNoaXRlY3RlZCByZXNvdXJjZXMgb24gYmVoYWxmIG9mIGN1c3RvbWVycy4gKi9cbiAgICBwdWJsaWMgQVdTV2VsbEFyY2hpdGVjdGVkRGlzY292ZXJ5U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTV2VsbEFyY2hpdGVjdGVkRGlzY292ZXJ5U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgV2VsbC1BcmNoaXRlY3RlZCB0byBhY2Nlc3MgT3JnYW5pemF0aW9ucyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQVdTV2VsbEFyY2hpdGVjdGVkT3JnYW5pemF0aW9uc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1dlbGxBcmNoaXRlY3RlZE9yZ2FuaXphdGlvbnNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBmdWxsIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zIHRvIHRoZSBXaWNrciBzZXJ2aWNlLCBpbmNsdWRpbmcgdGhlIFdpY2tyIGFkbWluaXN0cmF0aXZlIGZ1bmN0aW9ucyB1bmRlciB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgQVdTV2lja3JGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1dpY2tyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGNhcGFiaWxpdGllcyB0byBtYW5hZ2UgT2JzZXJ2YWJpbGl0eSBBY2Nlc3MgTWFuYWdlciBsaW5rcyBhbmQgZXN0YWJsaXNoIHNoYXJpbmcgb2YgWC1SYXkgdHJhY2VzICovXG4gICAgcHVibGljIEFXU1hyYXlDcm9zc0FjY291bnRTaGFyaW5nQ29uZmlndXJhdGlvbigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NYcmF5Q3Jvc3NBY2NvdW50U2hhcmluZ0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyB0aGUgQVdTIFgtUmF5IERhZW1vbiB0byByZWxheSByYXcgdHJhY2Ugc2VnbWVudHMgZGF0YSB0byB0aGUgc2VydmljZSdzIEFQSSBhbmQgcmV0cmlldmUgc2FtcGxpbmcgZGF0YSAocnVsZXMsIHRhcmdldHMsIGV0Yy4pIHRvIGJlIHVzZWQgYnkgdGhlIFgtUmF5IFNESy4gKi9cbiAgICBwdWJsaWMgQVdTWFJheURhZW1vbldyaXRlQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1hSYXlEYWVtb25Xcml0ZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBYLVJheSBmdWxsIGFjY2VzcyBtYW5hZ2VkIHBvbGljeSAqL1xuICAgIHB1YmxpYyBBV1NYcmF5RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5BV1NYcmF5RnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBYLVJheSByZWFkIG9ubHkgbWFuYWdlZCBwb2xpY3kgKi9cbiAgICBwdWJsaWMgQVdTWHJheVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1hyYXlSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBYLVJheSB3cml0ZSBvbmx5IG1hbmFnZWQgcG9saWN5ICovXG4gICAgcHVibGljIEFXU1hyYXlXcml0ZU9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTWHJheVdyaXRlT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyBmb3IgQVJDIHpvbmFsIHNoaWZ0IHByYWN0aWNlIHJ1bnMsIGFuZCBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBhbGFybSBzdGF0dXNlcyB0byBtb25pdG9yIHByYWN0aWNlIHJ1bnMuICovXG4gICAgcHVibGljIEFXU1pvbmFsQXV0b3NoaWZ0UHJhY3RpY2VSdW5TTFJQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQVdTWm9uYWxBdXRvc2hpZnRQcmFjdGljZVJ1blNMUlBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIEFQSXMgbmVlZGVkIHRvIHN1cHBvcnQgem9uZS1ncm91cCBhY2Nlc3MtbWFuYWdlbWVudCBmb3Igb3JnYW5pemF0aW9ucy4gKi9cbiAgICBwdWJsaWMgQVdTWm9uZUdyb3VwQWNjZXNzTWFuYWdlbWVudFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkFXU1pvbmVHcm91cEFjY2Vzc01hbmFnZW1lbnRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyBmb3IgdGhlIEFXUyBCYXRjaCBzZXJ2aWNlIHRvIG1hbmFnZSB0aGUgcmVxdWlyZWQgcmVzb3VyY2VzLCBpbmNsdWRpbmcgQW1hem9uIEVDMiBhbmQgQW1hem9uIEVDUyByZXNvdXJjZXMuICovXG4gICAgcHVibGljIEJhdGNoU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQmF0Y2hTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEJlZHJvY2sgQWdlbnRDb3JlIGFzIHdlbGwgYXMgbGltaXRlZCBhY2Nlc3MgdG8gcmVsYXRlZCBzZXJ2aWNlcyAqL1xuICAgIHB1YmxpYyBCZWRyb2NrQWdlbnRDb3JlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5CZWRyb2NrQWdlbnRDb3JlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBhY2Nlc3MgdG8gb3RoZXIgQVdTIHNlcnZpY2UgcmVzb3VyY2VzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHJ1biBBbWF6b24gQmVkcm9jayBBZ2VudENvcmUgaW4gVlBDIG1vZGUgKi9cbiAgICBwdWJsaWMgQmVkcm9ja0FnZW50Q29yZU5ldHdvcmtTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5CZWRyb2NrQWdlbnRDb3JlTmV0d29ya1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGFjY2VzcyB0byBpZGVudGl0eSBhbmQgdG9rZW4gbWFuYWdlbWVudCByZXNvdXJjZXMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIEFtYXpvbiBCZWRyb2NrIEFnZW50Q29yZSBSdW50aW1lIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uLiAqL1xuICAgIHB1YmxpYyBCZWRyb2NrQWdlbnRDb3JlUnVudGltZUlkZW50aXR5U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQmVkcm9ja0FnZW50Q29yZVJ1bnRpbWVJZGVudGl0eVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIGZvciBiaWxsaW5nIGFuZCBjb3N0IG1hbmFnZW1lbnQuIFRoaXMgaW5jbHVkZXMgdmlld2luZyBhY2NvdW50IHVzYWdlIGFuZCB2aWV3aW5nIGFuZCBtb2RpZnlpbmcgYnVkZ2V0cyBhbmQgcGF5bWVudCBtZXRob2RzLiAqL1xuICAgIHB1YmxpYyBCaWxsaW5nKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkJpbGxpbmcpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQnVkZ2V0cyB0byB2ZXJpZnkgYWNjZXNzIHRvIEJpbGxpbmcgVmlld3Mgc2hhcmVkIGFjcm9zcyBhY2NvdW50IGJvdW5kYXJpZXMuICovXG4gICAgcHVibGljIEJ1ZGdldHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5CdWRnZXRzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gQ2VydGlmaWNhdGUgTWFuYWdlciBTZXJ2aWNlIFJvbGUgUG9saWN5ICovXG4gICAgcHVibGljIENlcnRpZmljYXRlTWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNlcnRpZmljYXRlTWFuYWdlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGVuYWJsZSBBV1MgQ2xpZW50IFZQTiB0byBtYW5hZ2UgeW91ciBDbGllbnQgVlBOIGVuZHBvaW50IGNvbm5lY3Rpb25zLiAqL1xuICAgIHB1YmxpYyBDbGllbnRWUE5TZXJ2aWNlQ29ubmVjdGlvbnNSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsaWVudFZQTlNlcnZpY2VDb25uZWN0aW9uc1JvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZW5hYmxlIEFXUyBDbGllbnQgVlBOIHRvIG1hbmFnZSB5b3VyIENsaWVudCBWUE4gZW5kcG9pbnRzLiAqL1xuICAgIHB1YmxpYyBDbGllbnRWUE5TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbGllbnRWUE5TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFNlcnZpY2UgUm9sZSBmb3IgQ2xvdWRGb3JtYXRpb24gU3RhY2tTZXRzIChPcmdhbml6YXRpb24gTWFzdGVyIEFjY291bnQpICovXG4gICAgcHVibGljIENsb3VkRm9ybWF0aW9uU3RhY2tTZXRzT3JnQWRtaW5TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZEZvcm1hdGlvblN0YWNrU2V0c09yZ0FkbWluU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIFJvbGUgZm9yIENsb3VkRm9ybWF0aW9uIFN0YWNrU2V0cyAoT3JnYW5pemF0aW9uIE1lbWJlciBBY2NvdW50KSAqL1xuICAgIHB1YmxpYyBDbG91ZEZvcm1hdGlvblN0YWNrU2V0c09yZ01lbWJlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkRm9ybWF0aW9uU3RhY2tTZXRzT3JnTWVtYmVyU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgQ2xvdWRGcm9udCBjb25zb2xlIHBsdXMgdGhlIGFiaWxpdHkgdG8gbGlzdCBBbWF6b24gUzMgYnVja2V0cyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIENsb3VkRnJvbnRGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkRnJvbnRGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGxpc3QgZGlzdHJpYnV0aW9ucyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuICovXG4gICAgcHVibGljIENsb3VkRnJvbnRSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZEZyb250UmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgcmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBDbG91ZEhTTSAqL1xuICAgIHB1YmxpYyBDbG91ZEhTTVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkSFNNU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byB0aGUgQW1hem9uIENsb3VkU2VhcmNoIGNvbmZpZ3VyYXRpb24gc2VydmljZS4gKi9cbiAgICBwdWJsaWMgQ2xvdWRTZWFyY2hGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkU2VhcmNoRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gdGhlIEFtYXpvbiBDbG91ZFNlYXJjaCBjb25maWd1cmF0aW9uIHNlcnZpY2UuICovXG4gICAgcHVibGljIENsb3VkU2VhcmNoUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRTZWFyY2hSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgc2VydmljZSBsaW5rZWQgcm9sZSBhbGxvd3MgQ2xvdWRUcmFpbCB0byBnZXQgYW5kIGFkZCByZXNvdXJjZSB0YWdzIHRvIHRoZSByZXNvdXJjZSBvd25lcidzIENsb3VkVHJhaWwgZXZlbnRzLiAqL1xuICAgIHB1YmxpYyBDbG91ZFRyYWlsRXZlbnRDb250ZXh0KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkVHJhaWxFdmVudENvbnRleHQpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9uIHBvbGljeSBmb3IgQ2xvdWRUcmFpbCBTZXJ2aWNlTGlua2VkUm9sZSAqL1xuICAgIHB1YmxpYyBDbG91ZFRyYWlsU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRUcmFpbFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIENsb3VkV2F0Y2ggdG8gYXNzdW1lIENsb3VkV2F0Y2gtQ3Jvc3NBY2NvdW50U2hhcmluZyByb2xlcyBpbiByZW1vdGUgYWNjb3VudHMgb24gYmVoYWxmIG9mIHRoZSBjdXJyZW50IGFjY291bnQgaW4gb3JkZXIgdG8gZGlzcGxheSBkYXRhIGNyb3NzLWFjY291bnQsIGNyb3NzLXJlZ2lvbiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoQ3Jvc3NBY2NvdW50QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hDcm9zc0FjY291bnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIENsb3VkV2F0Y2ggYWxhcm1zIGFuZCBtZXRyaWNzIGFzIHdlbGwgYXMgRUMyIG1ldGFkYXRhLiBQcm92aWRlcyBhY2Nlc3MgdG8gU3RvcCwgVGVybWluYXRlIGFuZCBSZWJvb3QgRUMyIGluc3RhbmNlcy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEFjdGlvbnNFQzJBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEFjdGlvbnNFQzJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBGdWxsIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIHVzZSBBbWF6b25DbG91ZFdhdGNoQWdlbnQuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hBZ2VudEFkbWluUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hBZ2VudEFkbWluUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gdXNlIEFtYXpvbkNsb3VkV2F0Y2hBZ2VudCBvbiBzZXJ2ZXJzICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hBZ2VudFNlcnZlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoQWdlbnRTZXJ2ZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBDbG91ZFdhdGNoIEFwcGxpY2F0aW9uIEluc2lnaHRzIGFuZCByZXF1aXJlZCBkZXBlbmRlbmNpZXMuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hBcHBsaWNhdGlvbkluc2lnaHRzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoQXBwbGljYXRpb25JbnNpZ2h0c0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIENsb3VkV2F0Y2ggQXBwbGljYXRpb24gSW5zaWdodHMuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hBcHBsaWNhdGlvbkluc2lnaHRzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEFwcGxpY2F0aW9uSW5zaWdodHNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIENsb3Vkd2F0Y2ggQXBwbGljYXRpb24gSW5zaWdodHMgU2VydmljZSBMaW5rZWQgUm9sZSBQb2xpY3kgKi9cbiAgICBwdWJsaWMgQ2xvdWR3YXRjaEFwcGxpY2F0aW9uSW5zaWdodHNTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZHdhdGNoQXBwbGljYXRpb25JbnNpZ2h0c1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBmdWxsIGFjY2VzcyB0byBDbG91ZFdhdGNoIEFwcGxpY2F0aW9uIFNpZ25hbHMgc2VydmljZSBhbmQgc2NvcGVkIGFjY2VzcyB0byB0aGUgZGVwZW5kZW5jaWVzIG5lZWRlZCB0byB1c2UgYW5kIG9wZXJhdGUgdGhpcyBzZXJ2aWNlLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoQXBwbGljYXRpb25TaWduYWxzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoQXBwbGljYXRpb25TaWduYWxzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBBcHBsaWNhdGlvbiBTaWduYWxzIHNlcnZpY2UgYW5kIHNjb3BlZCBhY2Nlc3MgdG8gdGhlIGRlcGVuZGVuY2llcyBuZWVkZWQgdG8gdXNlIHRoaXMgc2VydmljZSAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoQXBwbGljYXRpb25TaWduYWxzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEFwcGxpY2F0aW9uU2lnbmFsc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50cyBwZXJtaXNzaW9uIHRvIENsb3VkV2F0Y2ggQXBwbGljYXRpb24gU2lnbmFscyB0byBjb2xsZWN0IG1vbml0b3JpbmcgYW5kIHRhZ2dpbmcgZGF0YSBmcm9tIG90aGVyIHJlbGV2YW50IEFXUyBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEFwcGxpY2F0aW9uU2lnbmFsc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hBcHBsaWNhdGlvblNpZ25hbHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbm9uLUNsb3VkV2F0Y2ggQVBJcyB1c2VkIHRvIGRpc3BsYXkgQ2xvdWRXYXRjaCBBdXRvbWF0aWMgRGFzaGJvYXJkcywgaW5jbHVkaW5nIHRoZSBjb250ZW50cyBvZiBvYmplY3RzIHN1Y2ggYXMgTGFtYmRhIGZ1bmN0aW9ucyAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoQXV0b21hdGljRGFzaGJvYXJkc0FjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoQXV0b21hdGljRGFzaGJvYXJkc0FjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGNhcGFiaWxpdGllcyB0byBtYW5hZ2UgT2JzZXJ2YWJpbGl0eSBBY2Nlc3MgTWFuYWdlciBsaW5rcyBhbmQgZXN0YWJsaXNoIHNoYXJpbmcgb2YgQ2xvdWRXYXRjaCByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaENyb3NzQWNjb3VudFNoYXJpbmdDb25maWd1cmF0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hDcm9zc0FjY291bnRTaGFyaW5nQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBidWlsdC1pbiB0YXJnZXRzIGluIEFtYXpvbiBDbG91ZFdhdGNoIEV2ZW50cyB0byBwZXJmb3JtIEVDMiBhY3Rpb25zIG9uIHlvdXIgYmVoYWxmLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoRXZlbnRzQnVpbHRJblRhcmdldEV4ZWN1dGlvbkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoRXZlbnRzQnVpbHRJblRhcmdldEV4ZWN1dGlvbkFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIEV2ZW50cy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEV2ZW50c0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEV2ZW50c0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIENsb3VkV2F0Y2ggRXZlbnRzIHRvIHJlbGF5IGV2ZW50cyB0byB0aGUgc3RyZWFtcyBpbiBBV1MgS2luZXNpcyBTdHJlYW1zIGluIHlvdXIgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEV2ZW50c0ludm9jYXRpb25BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEV2ZW50c0ludm9jYXRpb25BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIEV2ZW50cy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEV2ZW50c1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hFdmVudHNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93IEFXUyBDbG91ZFdhdGNoIHRvIGV4ZWN1dGUgYWN0aW9ucyBvbiB5b3VyIGJlaGFsZiBjb25maWd1cmVkIHRocm91Z2ggYWxhcm1zIGFuZCBldmVudHMuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hFdmVudHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoRXZlbnRzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBDbG91ZFdhdGNoLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hGdWxsQWNjZXNzVjIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaEZ1bGxBY2Nlc3NWMik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIGFjdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBBbWF6b24gQ2xvdWRXYXRjaCBJbnRlcm5ldCBNb25pdG9yLiBBbHNvIHByb3ZpZGVzIGFjY2VzcyB0byBvdGhlciBzZXJ2aWNlcywgc3VjaCBhcyBBbWF6b24gQ2xvdWRXYXRjaCwgQW1hem9uIEVDMiwgQW1hem9uIENsb3VkRnJvbnQsIEFtYXpvbiBXb3JrU3BhY2VzLCBhbmQgRWxhc3RpYyBMb2FkIEJhbGFuY2luZywgdGhhdCBhcmUgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgSW50ZXJuZXQgTW9uaXRvciBzZXJ2aWNlIGZvciBtb25pdG9yaW5nIGFuZCBzdG9yaW5nIGluZm9ybWF0aW9uIGFib3V0IGFwcGxpY2F0aW9uIHRyYWZmaWMuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hJbnRlcm5ldE1vbml0b3JGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hJbnRlcm5ldE1vbml0b3JGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBhY3Rpb25zIGZvciB3b3JraW5nIHdpdGggQW1hem9uIENsb3VkV2F0Y2ggSW50ZXJuZXQgTW9uaXRvci4gQWxzbyBwcm92aWRlcyBhY2Nlc3MgdG8gb3RoZXIgc2VydmljZXMgaW4gQW1hem9uIENsb3VkV2F0Y2gsIGluY2x1ZGluZyBwb2xpY2llcyB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBvbiBDbG91ZFdhdGNoIG1ldHJpY3MgYW5kIHRvIG1hbmFnZSBsb2cgcXVlcmllcywgdGhhdCBhcmUgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgSW50ZXJuZXQgTW9uaXRvciBzZXJ2aWNlIGZvciBtb25pdG9yaW5nIGFuZCBzdG9yaW5nIGluZm9ybWF0aW9uIGFib3V0IGFwcGxpY2F0aW9uIHRyYWZmaWMuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hJbnRlcm5ldE1vbml0b3JSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoSW50ZXJuZXRNb25pdG9yUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgSW50ZXJuZXQgTW9uaXRvciB0byBhY2Nlc3MgRUMyLCBXb3Jrc3BhY2VzLCBhbmQgQ2xvdWRGcm9udCByZXNvdXJjZXMsIGFuZCBvdGhlciByZXF1aXJlZCBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaEludGVybmV0TW9uaXRvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hJbnRlcm5ldE1vbml0b3JTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHdyaXRlIGFjY2VzcyB0byBYLVJheSBhbmQgQ2xvdWRXYXRjaCBBcHBsaWNhdGlvbiBTaWduYWxzIGxvZyBncm91cC4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaExhbWJkYUFwcGxpY2F0aW9uU2lnbmFsc0V4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaExhbWJkYUFwcGxpY2F0aW9uU2lnbmFsc0V4ZWN1dGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgcmVxdWlyZWQgZm9yIHRoZSBMYW1iZGEgSW5zaWdodHMgRXh0ZW5zaW9uICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hMYW1iZGFJbnNpZ2h0c0V4ZWN1dGlvblJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaExhbWJkYUluc2lnaHRzRXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGNhcGFiaWxpdGllcyB0byBtYW5hZ2UgT2JzZXJ2YWJpbGl0eSBBY2Nlc3MgTWFuYWdlciBsaW5rcyBhbmQgZXN0YWJsaXNoIHNoYXJpbmcgb2YgQ2xvdWRXYXRjaCBMb2dzIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoTG9nc0Nyb3NzQWNjb3VudFNoYXJpbmdDb25maWd1cmF0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hMb2dzQ3Jvc3NBY2NvdW50U2hhcmluZ0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBDbG91ZFdhdGNoIExvZ3MgKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaExvZ3NGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hMb2dzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBMb2dzICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hMb2dzUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ2xvdWRXYXRjaExvZ3NSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFlvdSBjYW4gdXNlIHRoaXMgcG9saWN5IGluIElBTSByb2xlcyB0aGF0IGFyZSBhdHRhY2hlZCB0byBBbWF6b24gRUMyIGFuZCBBbWF6b24gRUtTIGluc3RhbmNlIHJlc291cmNlcyB0byBzZW5kIHRlbGVtZXRyeSByZXBvcnRzIChtZXRyaWNzKSB0byBhIE5ldHdvcmsgRmxvdyBNb25pdG9yIGVuZHBvaW50LiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoTmV0d29ya0Zsb3dNb25pdG9yQWdlbnRQdWJsaXNoUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hOZXR3b3JrRmxvd01vbml0b3JBZ2VudFB1Ymxpc2hQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBZb3UgY2FuJ3QgYXR0YWNoIENsb3VkV2F0Y2hOZXR3b3JrRmxvd01vbml0b3JTZXJ2aWNlUm9sZVBvbGljeSB0byB5b3VyIElBTSBlbnRpdGllcy4gVGhpcyBwb2xpY3kgaXMgYXR0YWNoZWQgdG8gYSBzZXJ2aWNlLWxpbmtlZCByb2xlIG5hbWVkIEFXU1NlcnZpY2VSb2xlRm9yTmV0d29ya0Zsb3dNb25pdG9yLCB3aGljaCBwdWJsaXNoZXMgbmV0d29yayB0ZWxlbWV0cnkgYWdncmVnYXRpb24gcmVzdWx0cywgY29sbGVjdGVkIGJ5IE5ldHdvcmsgRmxvdyBNb25pdG9yIGFnZW50cywgdG8gQ2xvdWRXYXRjaC4gSXQgYWxzbyBhbGxvd3MgdGhlIHNlcnZpY2UgdG8gdXNlIEFXUyBPcmdhbml6YXRpb25zIHRvIGdldCBpbmZvcm1hdGlvbiBmb3IgbXVsdGktYWNjb3VudCBzY2VuYXJpb3MuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hOZXR3b3JrRmxvd01vbml0b3JTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoTmV0d29ya0Zsb3dNb25pdG9yU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBZb3UgY2FuJ3QgYXR0YWNoIENsb3VkV2F0Y2hOZXR3b3JrRmxvd01vbml0b3JUb3BvbG9neVNlcnZpY2VSb2xlUG9saWN5IHRvIHlvdXIgSUFNIGVudGl0aWVzLiBUaGlzIHBvbGljeSBpcyBhdHRhY2hlZCB0byBhIHNlcnZpY2UtbGlua2VkIHJvbGUgbmFtZWQgQVdTU2VydmljZVJvbGVGb3JOZXR3b3JrRmxvd01vbml0b3JfVG9wb2xvZ3ksIHdoaWNoIGdlbmVyYXRlcyB0b3BvbG9neSBzbmFwc2hvdHMgb2YgcmVzb3VyY2VzIHVzZWQgYnkgTmV0d29yayBGbG93IE1vbml0b3IgaW4geW91ciBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoTmV0d29ya0Zsb3dNb25pdG9yVG9wb2xvZ3lTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoTmV0d29ya0Zsb3dNb25pdG9yVG9wb2xvZ3lTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBDbG91ZFdhdGNoIE5ldHdvcmsgTW9uaXRvciB0byBhY2Nlc3MgYW5kIG1hbmFnZSBFQzIgYW5kIFZQQyByZXNvdXJjZXMsIHB1Ymxpc2ggZGF0YSB0byBDbG91ZFdhdGNoIGFuZCBhY2Nlc3Mgb3RoZXIgcmVxdWlyZWQgc2VydmljZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hOZXR3b3JrTW9uaXRvclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hOZXR3b3JrTW9uaXRvclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgdXNlciBhY2Nlc3MgdG8gdmlldyBPcGVuU2VhcmNoIGRhc2hib2FyZHMgb24gdGhlIENsb3VkV2F0Y2ggTG9ncyBjb25zb2xlLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoT3BlblNlYXJjaERhc2hib2FyZEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoT3BlblNlYXJjaERhc2hib2FyZEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIHVzZXIgYWNjZXNzIHRvIGNyZWF0ZSBpbnRlZ3JhdGlvbiB3aXRoIE9wZW5TZWFyY2ggdG8gY3JlYXRlLCB1cGRhdGUsIGRlbGV0ZSBvciB2aWV3IGRhc2hib2FyZHMgb24gdGhlIENsb3VkV2F0Y2ggTG9ncyBjb25zb2xlLiAqL1xuICAgIHB1YmxpYyBDbG91ZFdhdGNoT3BlblNlYXJjaERhc2hib2FyZHNGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNsb3VkV2F0Y2hPcGVuU2VhcmNoRGFzaGJvYXJkc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIENsb3VkV2F0Y2guICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBDbG91ZFdhdGNoIFN5bnRoZXRpY3MuICovXG4gICAgcHVibGljIENsb3VkV2F0Y2hTeW50aGV0aWNzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoU3ludGhldGljc0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIENsb3VkV2F0Y2ggU3ludGhldGljcy4gKi9cbiAgICBwdWJsaWMgQ2xvdWRXYXRjaFN5bnRoZXRpY3NSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5DbG91ZFdhdGNoU3ludGhldGljc1JlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBBV1MgQ29tcHJlaGVuZCBzZXJ2aWNlIHJvbGUgd2hpY2ggYWxsb3dzIGFjY2VzcyB0byBTMyByZXNvdXJjZXMgZm9yIGRhdGEgYWNjZXNzICovXG4gICAgcHVibGljIENvbXByZWhlbmREYXRhQWNjZXNzUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Db21wcmVoZW5kRGF0YUFjY2Vzc1JvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gQ29tcHJlaGVuZC4gKi9cbiAgICBwdWJsaWMgQ29tcHJlaGVuZEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ29tcHJlaGVuZEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gQ29tcHJlaGVuZCBNZWRpY2FsICovXG4gICAgcHVibGljIENvbXByZWhlbmRNZWRpY2FsRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Db21wcmVoZW5kTWVkaWNhbEZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBDb21wcmVoZW5kLiAqL1xuICAgIHB1YmxpYyBDb21wcmVoZW5kUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ29tcHJlaGVuZFJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBDb21wdXRlT3B0aW1pemVyLiAqL1xuICAgIHB1YmxpYyBDb21wdXRlT3B0aW1pemVyUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ29tcHV0ZU9wdGltaXplclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIENvbXB1dGVPcHRpbWl6ZXIgdG8gY2FsbCBBV1Mgc2VydmljZXMgYW5kIGNvbGxlY3Qgd29ya2xvYWQgZGV0YWlscyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQ29tcHV0ZU9wdGltaXplclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNvbXB1dGVPcHRpbWl6ZXJTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBuZWVkZWQgZm9yIEFXU0NvbmZpZyB0byBjcmVhdGUgY29uZm9ybWFuY2UgcGFja3MgKi9cbiAgICBwdWJsaWMgQ29uZmlnQ29uZm9ybXNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Db25maWdDb25mb3Jtc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBtYW5hZ2VkIHBvbGljeSBwcm92aWRlcyBhZG1pbiBhY2Nlc3MgdG8gQ29zdCBPcHRpbWl6YXRpb24gSHViLiAqL1xuICAgIHB1YmxpYyBDb3N0T3B0aW1pemF0aW9uSHViQWRtaW5BY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ29zdE9wdGltaXphdGlvbkh1YkFkbWluQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBtYW5hZ2VkIHBvbGljeSBwcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIENvc3QgT3B0aW1pemF0aW9uIEh1Yi4gKi9cbiAgICBwdWJsaWMgQ29zdE9wdGltaXphdGlvbkh1YlJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkNvc3RPcHRpbWl6YXRpb25IdWJSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBDb3N0IE9wdGltaXphdGlvbiBIdWIgdG8gcmV0cmlldmUgb3JnYW5pemF0aW9uIGluZm9ybWF0aW9uIGFuZCBjb2xsZWN0IG9wdGltaXphdGlvbi1yZWxhdGVkIGRhdGEgYW5kIG1ldGFkYXRhLiAqL1xuICAgIHB1YmxpYyBDb3N0T3B0aW1pemF0aW9uSHViU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuQ29zdE9wdGltaXphdGlvbkh1YlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBDb25uZWN0IEN1c3RvbWVyIFByb2ZpbGVzIHRvIGFjY2VzcyBBV1Mgc2VydmljZXMgYW5kIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZi4gKi9cbiAgICBwdWJsaWMgQ3VzdG9tZXJQcm9maWxlc1NlcnZpY2VMaW5rZWRSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkN1c3RvbWVyUHJvZmlsZXNTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyBwZXJtaXNzaW9ucyB0byBBV1Mgc2VydmljZXMgYW5kIGFjdGlvbnMgcmVxdWlyZWQgdG8gc2V0IHVwIGFuZCBjb25maWd1cmUgQVdTIGRhdGFiYXNlIHNlcnZpY2VzLiAqL1xuICAgIHB1YmxpYyBEYXRhYmFzZUFkbWluaXN0cmF0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRGF0YWJhc2VBZG1pbmlzdHJhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHBlcm1pc3Npb25zIHRvIEFXUyBkYXRhIGFuYWx5dGljcyBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgRGF0YVNjaWVudGlzdCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5EYXRhU2NpZW50aXN0KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIERBWCB0byBjcmVhdGUgYW5kIG1hbmFnZSBOZXR3b3JrIGludGVyZmFjZSwgU2VjdXJpdHkgZ3JvdXAsIFN1Ym5ldCBhbmQgVnBjIG9uIGJlaGFsZiBvZiBjdXN0b21lciAqL1xuICAgIHB1YmxpYyBEQVhTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5EQVhTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byByZWFkLW9ubHkgQVBJcyBuZWVkZWQgdG8gcnVuIEVDMiBEZWNsYXJhdGl2ZSBQb2xpY2llcyBBY2NvdW50IFN0YXR1cyBSZXBvcnQuICovXG4gICAgcHVibGljIERlY2xhcmF0aXZlUG9saWNpZXNFQzJSZXBvcnQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRGVjbGFyYXRpdmVQb2xpY2llc0VDMlJlcG9ydCk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIHN1cHBvcnQgQW1hem9uIENsb3VkV2F0Y2ggQ29udHJpYnV0b3IgSW5zaWdodHMgZm9yIEFtYXpvbiBEeW5hbW9EQi4gKi9cbiAgICBwdWJsaWMgRHluYW1vREJDbG91ZFdhdGNoQ29udHJpYnV0b3JJbnNpZ2h0c1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkR5bmFtb0RCQ2xvdWRXYXRjaENvbnRyaWJ1dG9ySW5zaWdodHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb25zIHJlcXVpcmVkIGJ5IER5bmFtb0RCIHRvIG1hbmFnZSBnbG9iYWwgdGFibGUgcmVwbGljYSBzZXR0aW5ncyAqL1xuICAgIHB1YmxpYyBEeW5hbW9EQkdsb2JhbFRhYmxlU2V0dGluZ3NNYW5hZ2VtZW50U2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRHluYW1vREJHbG9iYWxUYWJsZVNldHRpbmdzTWFuYWdlbWVudFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZSBBV1MgRHluYW1vREIgYWNjZXNzIHRvIEtpbmVzaXNEYXRhU3RyZWFtcyAqL1xuICAgIHB1YmxpYyBEeW5hbW9EQktpbmVzaXNSZXBsaWNhdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkR5bmFtb0RCS2luZXNpc1JlcGxpY2F0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9ucyByZXF1aXJlZCBieSBEeW5hbW9EQiBmb3IgY3Jvc3MtcmVnaW9uIGRhdGEgcmVwbGljYXRpb24gKi9cbiAgICBwdWJsaWMgRHluYW1vREJSZXBsaWNhdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkR5bmFtb0RCUmVwbGljYXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBmdWxsIGFjY2VzcyB0byBFQzIgRmFzdCBMYXVuY2ggYWN0aW9ucyAqL1xuICAgIHB1YmxpYyBFQzJGYXN0TGF1bmNoRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FQzJGYXN0TGF1bmNoRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBncmFudHMgZWMyZmFzdGxhdW5jaCB0byBwcmVwYXJlIGFuZCBtYW5hZ2UgcHJlcHJvdmlzaW9uZWQgc25hcHNob3RzIGluIGN1c3RvbWVyJ3MgYWNjb3VudCAmIHB1Ymxpc2ggcmVsYXRlZCBtZXRyaWNzLiAqL1xuICAgIHB1YmxpYyBFQzJGYXN0TGF1bmNoU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRUMyRmFzdExhdW5jaFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGdyYW50aW5nIHBlcm1pc3Npb25zIHRvIEVDMiBGbGVldCB0byBsYXVuY2ggaW5zdGFuY2VzIGluIHRoZSBmdXR1cmUuICovXG4gICAgcHVibGljIEVDMkZsZWV0VGltZVNoaWZ0YWJsZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVDMkZsZWV0VGltZVNoaWZ0YWJsZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUGVybWlzc2lvbnMgbmVlZCBieSBFQzIgSW1hZ2UgQnVpbGRlciB0byBwZXJmb3JtIGEgY3Jvc3MgYWNjb3VudCBkaXN0cmlidXRpb24uICovXG4gICAgcHVibGljIEVjMkltYWdlQnVpbGRlckNyb3NzQWNjb3VudERpc3RyaWJ1dGlvbkFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FYzJJbWFnZUJ1aWxkZXJDcm9zc0FjY291bnREaXN0cmlidXRpb25BY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgRUMySW1hZ2VCdWlsZGVyTGlmZWN5Y2xlRXhlY3V0aW9uUG9saWN5IHBvbGljeSBncmFudHMgcGVybWlzc2lvbnMgZm9yIEltYWdlIEJ1aWxkZXIgdG8gcGVyZm9ybSBhY3Rpb25zIHN1Y2ggYXMgZGVwcmVjYXRlIG9yIGRlbGV0ZSBJbWFnZSBCdWlsZGVyIGltYWdlIHJlc291cmNlcyBhbmQgdGhlaXIgdW5kZXJseWluZyByZXNvdXJjZXMgKEFNSXMsIHNuYXBzaG90cykgdG8gc3VwcG9ydCBhdXRvbWF0ZWQgcnVsZXMgZm9yIGltYWdlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRhc2tzLiAqL1xuICAgIHB1YmxpYyBFQzJJbWFnZUJ1aWxkZXJMaWZlY3ljbGVFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRUMySW1hZ2VCdWlsZGVyTGlmZWN5Y2xlRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIGN1c3RvbWVycyB0byBjYWxsIEVDMiBJbnN0YW5jZSBDb25uZWN0IHRvIHB1Ymxpc2ggZXBoZW1lcmFsIGtleXMgdG8gdGhlaXIgRUMyIGluc3RhbmNlcyBhbmQgY29ubmVjdCB2aWEgc3NoIG9yIHRoZSBFQzIgSW5zdGFuY2UgQ29ubmVjdCBDTEkuICovXG4gICAgcHVibGljIEVDMkluc3RhbmNlQ29ubmVjdCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FQzJJbnN0YW5jZUNvbm5lY3QpO1xuICAgIH1cblxuICAgIC8qKiBFQzIgSW5zdGFuY2UgQ29ubmVjdCBlbmRwb2ludCBwb2xpY3kgdG8gbWFuYWdlIEVDMiBJbnN0YW5jZSBDb25uZWN0IGVuZHBvaW50cyBjcmVhdGVkIGJ5IHRoZSBjdXN0b21lciAqL1xuICAgIHB1YmxpYyBFYzJJbnN0YW5jZUNvbm5lY3RFbmRwb2ludCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FYzJJbnN0YW5jZUNvbm5lY3RFbmRwb2ludCk7XG4gICAgfVxuXG4gICAgLyoqIEVDMiBJbnN0YW5jZSBwcm9maWxlIGZvciBJbWFnZSBCdWlsZGVyIHNlcnZpY2UuICovXG4gICAgcHVibGljIEVDMkluc3RhbmNlUHJvZmlsZUZvckltYWdlQnVpbGRlcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FQzJJbnN0YW5jZVByb2ZpbGVGb3JJbWFnZUJ1aWxkZXIpO1xuICAgIH1cblxuICAgIC8qKiBFQzIgSW5zdGFuY2UgcHJvZmlsZSBmb3IgYnVpbGRpbmcgY29udGFpbmVyIGltYWdlcyB3aXRoIEVDMiBJbWFnZSBCdWlsZGVyLiBUaGlzIHBvbGljeSBncmFudHMgdGhlIHVzZXIgYnJvYWQgcGVybWlzc2lvbnMgdG8gdXBsb2FkIEVDUiBpbWFnZXMuICovXG4gICAgcHVibGljIEVDMkluc3RhbmNlUHJvZmlsZUZvckltYWdlQnVpbGRlckVDUkNvbnRhaW5lckJ1aWxkcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FQzJJbnN0YW5jZVByb2ZpbGVGb3JJbWFnZUJ1aWxkZXJFQ1JDb250YWluZXJCdWlsZHMpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgRUNSIFJlcGxpY2F0aW9uICovXG4gICAgcHVibGljIEVDUlJlcGxpY2F0aW9uU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRUNSUmVwbGljYXRpb25TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZCB3aGVuIHVzaW5nIEFXUyBFQ1IgcmVwb3NpdG9yeSBjcmVhdGlvbiB0ZW1wbGF0ZXMgKi9cbiAgICBwdWJsaWMgRUNSVGVtcGxhdGVTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FQ1JUZW1wbGF0ZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgYWxsb3dzIEVsYXN0aUNhY2hlIHRvIG1hbmFnZSBBV1MgcmVzb3VyY2VzIG9uIHlvdXIgYmVoYWxmIGFzIG5lY2Vzc2FyeSBmb3IgbWFuYWdpbmcgeW91ciBjYWNoZSAqL1xuICAgIHB1YmxpYyBFbGFzdGlDYWNoZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsYXN0aUNhY2hlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gRWxhc3RpY0xvYWRCYWxhbmNpbmcsIGFuZCBsaW1pdGVkIGFjY2VzcyB0byBvdGhlciBzZXJ2aWNlcyBuZWNlc3NhcnkgdG8gcHJvdmlkZSBFbGFzdGljTG9hZEJhbGFuY2luZyBmZWF0dXJlcy4gKi9cbiAgICBwdWJsaWMgRWxhc3RpY0xvYWRCYWxhbmNpbmdGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsYXN0aWNMb2FkQmFsYW5jaW5nRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gQW1hem9uIEVsYXN0aWNMb2FkQmFsYW5jaW5nIGFuZCBkZXBlbmRlbnQgc2VydmljZXMgKi9cbiAgICBwdWJsaWMgRWxhc3RpY0xvYWRCYWxhbmNpbmdSZWFkT25seSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FbGFzdGljTG9hZEJhbGFuY2luZ1JlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogQWNjZXNzIHRvIHZpZXcgcHVyY2hhc2VkIGFzc2V0cyBhbmQgZG93bmxvYWQgcmVsYXRlZCBzb2Z0d2FyZSBhbmQga2lja3N0YXJ0IGZpbGVzICovXG4gICAgcHVibGljIEVsZW1lbnRhbEFjdGl2YXRpb25zRG93bmxvYWRTb2Z0d2FyZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FbGVtZW50YWxBY3RpdmF0aW9uc0Rvd25sb2FkU29mdHdhcmVBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBGdWxsIGFjY2VzcyB0byB2aWV3IGFuZCB0YWtlIGFjdGlvbiBvbiBFbGVtZW50YWwgQXBwbGlhbmNlcyBhbmQgU29mdHdhcmUgcHVyY2hhc2VkIGFzc2V0cyAqL1xuICAgIHB1YmxpYyBFbGVtZW50YWxBY3RpdmF0aW9uc0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuRWxlbWVudGFsQWN0aXZhdGlvbnNGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWNjZXNzIHRvIHZpZXcgcHVyY2hhc2VkIGFzc2V0cyBhbmQgZ2VuZXJhdGUgc29mdHdhcmUgbGljZW5zZXMgZm9yIHBlbmRpbmcgYWN0aXZhdGlvbnMgKi9cbiAgICBwdWJsaWMgRWxlbWVudGFsQWN0aXZhdGlvbnNHZW5lcmF0ZUxpY2Vuc2VzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsZW1lbnRhbEFjdGl2YXRpb25zR2VuZXJhdGVMaWNlbnNlcyk7XG4gICAgfVxuXG4gICAgLyoqIFJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIGRldGFpbGVkIGxpc3Qgb2YgcHVyY2hhc2VkIGFzc2V0cyBhc3NvY2lhdGVkIHRvIHRoZSBBV1MgYWNjb3VudCBvZiB0aGUgdXNlciAqL1xuICAgIHB1YmxpYyBFbGVtZW50YWxBY3RpdmF0aW9uc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsZW1lbnRhbEFjdGl2YXRpb25zUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBGdWxsIGFjY2VzcyB0byB2aWV3IGFuZCB0YWtlIGFjdGlvbiBvbiBFbGVtZW50YWwgQXBwbGlhbmNlcyBhbmQgU29mdHdhcmUgcXVvdGVzIGFuZCBvcmRlcnMgKi9cbiAgICBwdWJsaWMgRWxlbWVudGFsQXBwbGlhbmNlc1NvZnR3YXJlRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FbGVtZW50YWxBcHBsaWFuY2VzU29mdHdhcmVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUmVhZC1vbmx5IGFjY2VzcyB0byB2aWV3IEVsZW1lbnRhbCBBcHBsaWFuY2VzIGFuZCBTb2Z0d2FyZSBxdW90ZXMgYW5kIG9yZGVycyAqL1xuICAgIHB1YmxpYyBFbGVtZW50YWxBcHBsaWFuY2VzU29mdHdhcmVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5FbGVtZW50YWxBcHBsaWFuY2VzU29mdHdhcmVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bGwgYWNjZXNzIHRvIHZpZXcgYW5kIHRha2UgYWN0aW9uIG9uIEVsZW1lbnRhbCBBcHBsaWFuY2UgYW5kIFNvZnR3YXJlIHN1cHBvcnQgY2FzZXMgYW5kIHByb2R1Y3Qgc3VwcG9ydCBjb250ZW50ICovXG4gICAgcHVibGljIEVsZW1lbnRhbFN1cHBvcnRDZW50ZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVsZW1lbnRhbFN1cHBvcnRDZW50ZXJGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHJlYWQtb25seSBwZXJtaXNzaW9ucyB0aGF0IGFsbG93IHRoZSBXQUwgc2VydmljZSBmb3IgQW1hem9uIEVNUiB0byBmaW5kIGFuZCByZXR1cm4gdGhlIHN0YXR1cyBvZiBhIGNsdXN0ZXIgKi9cbiAgICBwdWJsaWMgRU1SRGVzY3JpYmVDbHVzdGVyUG9saWN5Rm9yRU1SV0FMKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkVNUkRlc2NyaWJlQ2x1c3RlclBvbGljeUZvckVNUldBTCk7XG4gICAgfVxuXG4gICAgLyoqIEFjY2VzcyBwb2xpY3kgdG8gYWxsb3cgRk0gc2VydmljZSBsaW5rZWQgcm9sZSB0byBwZXJmb3JtIEZNLXJlbGF0ZWQgYWN0aW9ucyBvbiBGTS1tYW5hZ2VkIHJlc291cmNlcyB3aXRoaW4gYSBjdXN0b21lciBBV1MgT3JnYW5pemF0aW9uIGFjY291bnQuICovXG4gICAgcHVibGljIEZNU1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkZNU1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIEFtYXpvbiBGU3ggdG8gZGVsZXRlIGl0cyBTZXJ2aWNlIExpbmtlZCBSb2xlcyBmb3IgQW1hem9uIFMzIGFjY2VzcyAqL1xuICAgIHB1YmxpYyBGU3hEZWxldGVTZXJ2aWNlTGlua2VkUm9sZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5GU3hEZWxldGVTZXJ2aWNlTGlua2VkUm9sZUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgZm9yIGNvbXB1dGUgYWN0aW9ucyBpbiBhbiBBbWF6b24gR2FtZUxpZnQgY29udGFpbmVyIGZsZWV0LCBpbmNsdWRpbmcgYWNjZXNzIHRvIGRlcGVuZGVuY2llcyBzdWNoIGFzIEFtYXpvbiBTMy4gKi9cbiAgICBwdWJsaWMgR2FtZUxpZnRDb250YWluZXJGbGVldFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5HYW1lTGlmdENvbnRhaW5lckZsZWV0UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHRvIGFsbG93IEdhbWVsaWZ0IEdhbWVTZXJ2ZXJHcm91cHMgdG8gbWFuYWdlIGN1c3RvbWVyIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBHYW1lTGlmdEdhbWVTZXJ2ZXJHcm91cFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5HYW1lTGlmdEdhbWVTZXJ2ZXJHcm91cFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgbWFuYWdlZCBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb24gdG8gY29ubmVjdCB3aXRoIEFtYXpvbiBRIGFuZCB1dGlsaXplIHRoZSBmZWF0dXJlcyBpbiB0aGUgR2l0TGFiIER1byB3aXRoIEFtYXpvbiBRIGludGVncmF0aW9uLiAqL1xuICAgIHB1YmxpYyBHaXRMYWJEdW9XaXRoQW1hem9uUVBlcm1pc3Npb25zUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkdpdExhYkR1b1dpdGhBbWF6b25RUGVybWlzc2lvbnNQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvdyBHbG9iYWxBY2NlbGVyYXRvciBVc2VycyBmdWxsIEFjY2VzcyB0byBhbGwgQVBJcyAqL1xuICAgIHB1YmxpYyBHbG9iYWxBY2NlbGVyYXRvckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuR2xvYmFsQWNjZWxlcmF0b3JGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3cgR2xvYmFsQWNjZWxlcmF0b3IgVXNlcnMgQWNjZXNzIHRvIFJlYWQgT25seSBBUElzICovXG4gICAgcHVibGljIEdsb2JhbEFjY2VsZXJhdG9yUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuR2xvYmFsQWNjZWxlcmF0b3JSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgYWNjZXNzIHRvIHRoZSBHcmVlbmdyYXNzIE9UQSBVcGRhdGUgYXJ0aWZhY3RzIGluIGFsbCBHcmVlbmdyYXNzIHJlZ2lvbnMgKi9cbiAgICBwdWJsaWMgR3JlZW5ncmFzc09UQVVwZGF0ZUFydGlmYWN0QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkdyZWVuZ3Jhc3NPVEFVcGRhdGVBcnRpZmFjdEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFXUyBIZWFsdGggcG9saWN5IHRvIGVuYWJsZSBPcmdhbml6YXRpb25hbCBWaWV3IGZlYXR1cmUgKi9cbiAgICBwdWJsaWMgSGVhbHRoT3JnYW5pemF0aW9uc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkhlYWx0aE9yZ2FuaXphdGlvbnNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBhY2Nlc3MgdG8gcmVhZCBhbGwgYWNjZXNzIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IElBTSBhY2Nlc3MgYWR2aXNvciBzdWNoIGFzIHNlcnZpY2UgbGFzdCBhY2Nlc3NlZCBpbmZvcm1hdGlvbi4gKi9cbiAgICBwdWJsaWMgSUFNQWNjZXNzQWR2aXNvclJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTUFjY2Vzc0Fkdmlzb3JSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIElBTSBBY2Nlc3MgQW5hbHl6ZXIgKi9cbiAgICBwdWJsaWMgSUFNQWNjZXNzQW5hbHl6ZXJGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTUFjY2Vzc0FuYWx5emVyRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gSUFNIEFjY2VzcyBBbmFseXplciByZXNvdXJjZXMgKi9cbiAgICBwdWJsaWMgSUFNQWNjZXNzQW5hbHl6ZXJSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JQU1BY2Nlc3NBbmFseXplclJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHJlcXVpcmVkIHRvIGNoZWNrIHRoZSBwcmVzZW5jZSBvZiByb290IHVzZXIgY3JlZGVudGlhbHMgc3VjaCBhcyByb290IHVzZXIgcGFzc3dvcmQgYW5kIHJvb3QgdXNlciBhY2Nlc3Mga2V5cyB1c2luZyB0aGUgU2VjdXJpdHkgVG9rZW4gU2VydmljZSAoU1RTKSBBc3N1bWVSb290IEFQSS4gVXNlIHRoaXMgbWFuYWdlZCBwb2xpY3kgb25seSB3aXRoIHRoZSBTVFMgQXNzdW1lUm9vdCBhY3Rpb24uICovXG4gICAgcHVibGljIElBTUF1ZGl0Um9vdFVzZXJDcmVkZW50aWFscygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JQU1BdWRpdFJvb3RVc2VyQ3JlZGVudGlhbHMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgcmVxdWlyZWQgdG8gY3JlYXRlIGEgcm9vdCB1c2VyIHBhc3N3b3JkIHVzaW5nIHRoZSBTZWN1cml0eSBUb2tlbiBTZXJ2aWNlIChTVFMpIEFzc3VtZVJvb3QgQVBJLiAgVXNlIHRoaXMgbWFuYWdlZCBwb2xpY3kgb25seSB3aXRoIHRoZSBTVFMgQXNzdW1lUm9vdCBhY3Rpb24uICovXG4gICAgcHVibGljIElBTUNyZWF0ZVJvb3RVc2VyUGFzc3dvcmQoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuSUFNQ3JlYXRlUm9vdFVzZXJQYXNzd29yZCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyByZXF1aXJlZCB0byBkZWxldGUgYWxsIHJvb3QgdXNlciBjcmVkZW50aWFscyBzdWNoIGFzIHJvb3QgcGFzc3dvcmQgYW5kIHJvb3QgYWNjZXNzIGtleXMgdXNpbmcgdGhlIFNlY3VyaXR5IFRva2VuIFNlcnZpY2UgKFNUUykgQXNzdW1lUm9vdCBBUEkuICBVc2UgdGhpcyBtYW5hZ2VkIHBvbGljeSBvbmx5IHdpdGggdGhlIFNUUyBBc3N1bWVSb290IGFjdGlvbi4gKi9cbiAgICBwdWJsaWMgSUFNRGVsZXRlUm9vdFVzZXJDcmVkZW50aWFscygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JQU1EZWxldGVSb290VXNlckNyZWRlbnRpYWxzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gSUFNIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gKi9cbiAgICBwdWJsaWMgSUFNRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JQU1GdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZCBvbmx5IGFjY2VzcyB0byBJQU0gdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLiAqL1xuICAgIHB1YmxpYyBJQU1SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JQU1SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBhbiBJQU0gdXNlciB0byBtYW5hZ2UgdGhlaXIgb3duIFNlcnZpY2UgU3BlY2lmaWMgQ3JlZGVudGlhbHMuICovXG4gICAgcHVibGljIElBTVNlbGZNYW5hZ2VTZXJ2aWNlU3BlY2lmaWNDcmVkZW50aWFscygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JQU1TZWxmTWFuYWdlU2VydmljZVNwZWNpZmljQ3JlZGVudGlhbHMpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyB0aGUgYWJpbGl0eSBmb3IgYW4gSUFNIHVzZXIgdG8gY2hhbmdlIHRoZWlyIG93biBwYXNzd29yZC4gKi9cbiAgICBwdWJsaWMgSUFNVXNlckNoYW5nZVBhc3N3b3JkKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLklBTVVzZXJDaGFuZ2VQYXNzd29yZCk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IGZvciBhbiBJQU0gdXNlciB0byBtYW5hZ2UgdGhlaXIgb3duIFNTSCBrZXlzLiAqL1xuICAgIHB1YmxpYyBJQU1Vc2VyU1NIS2V5cygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5JQU1Vc2VyU1NIS2V5cyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEludGVyYWN0aXZlIFZpZGVvIFNlcnZpY2UgKElWUyksIEFsc28gaW5jbHVkZWQgcGVybWlzc2lvbnMgZm9yIGRlcGVuZGVudCBzZXJ2aWNlcywgbmVlZGVkIGZvciBmdWxsIGFjY2VzcyB0byB0aGUgaXZzIGNvbnNvbGUuICovXG4gICAgcHVibGljIElWU0Z1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuSVZTRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gSVZTIExvdy1MYXRlbmN5IGFuZCBSZWFsLVRpbWUgc3RyZWFtaW5nIEFQSXMgKi9cbiAgICBwdWJsaWMgSVZTUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuSVZTUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIExpbmtlZCBSb2xlIHRvIHBlcmZvcm0gUzMgUHV0T2JqZWN0IHRvIHJlY29yZGluZyBJVlMgbGl2ZSBzdHJlYW1zICovXG4gICAgcHVibGljIElWU1JlY29yZFRvUzMoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuSVZTUmVjb3JkVG9TMyk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBLYWZrYSBDb25uZWN0IHBlcm1pc3Npb24gdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgb24geW91ciBiZWhhbGYuICovXG4gICAgcHVibGljIEthZmthQ29ubmVjdFNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkthZmthQ29ubmVjdFNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogSUFNIHNlcnZpY2UgbGlua2VkIHJvbGUgcG9saWN5IGZvciBLYWZrYS4gKi9cbiAgICBwdWJsaWMgS2Fma2FTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5LYWZrYVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogR3JhbnRzIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBBbWF6b24gS2V5c3BhY2VzIGZvciBDaGFuZ2UgRGF0YSBDYXB0dXJlICovXG4gICAgcHVibGljIEtleXNwYWNlc0NEQ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLktleXNwYWNlc0NEQ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUGVybWlzc2lvbnMgcmVxdWlyZWQgYnkgS2V5c3BhY2VzIGZvciBjcm9zcy1yZWdpb24gZGF0YSByZXBsaWNhdGlvbiAqL1xuICAgIHB1YmxpYyBLZXlzcGFjZXNSZXBsaWNhdGlvblNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLktleXNwYWNlc1JlcGxpY2F0aW9uU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgdG8gZ3JhbnQgdGVtcG9yYXJ5IGRhdGEgYWNjZXNzIHRvIExha2UgRm9ybWF0aW9uIHJlc291cmNlcyAqL1xuICAgIHB1YmxpYyBMYWtlRm9ybWF0aW9uRGF0YUFjY2Vzc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkxha2VGb3JtYXRpb25EYXRhQWNjZXNzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIEFXUyBMZXggQm90IHVzZSBjYXNlICovXG4gICAgcHVibGljIExleEJvdFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5MZXhCb3RQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIEFXUyBMZXggQ2hhbm5lbCB1c2UgY2FzZSAqL1xuICAgIHB1YmxpYyBMZXhDaGFubmVsUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLkxleENoYW5uZWxQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBV1MgTGlnaHRzYWlsIHNlcnZpY2UgbGlua2VkIHJvbGUgcG9saWN5IHdoaWNoIGdyYW50cyBwZXJtaXNzaW9ucyB0byBleHBvcnQgcmVzb3VyY2VzICovXG4gICAgcHVibGljIExpZ2h0c2FpbEV4cG9ydEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5MaWdodHNhaWxFeHBvcnRBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBUaGlzIHBvbGljeSBncmFudHMgcGVybWlzc2lvbiB0byByZWdpc3RlciBNZWRpYUNvbm5lY3QgR2F0ZXdheSBJbnN0YW5jZXMgdG8gYSBNZWRpYUNvbm5lY3QgR2F0ZXdheS4gKi9cbiAgICBwdWJsaWMgTWVkaWFDb25uZWN0R2F0ZXdheUluc3RhbmNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5NZWRpYUNvbm5lY3RHYXRld2F5SW5zdGFuY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIE1lZGlhUGFja2FnZSB0byBwdWJsaXNoIGxvZ3MgdG8gQ2xvdWRXYXRjaCAqL1xuICAgIHB1YmxpYyBNZWRpYVBhY2thZ2VTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5NZWRpYVBhY2thZ2VTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGFsbG93cyBNZW1vcnlEQiB0byBtYW5hZ2UgQVdTIHJlc291cmNlcyBvbiB5b3VyIGJlaGFsZiBhcyBuZWNlc3NhcnkgZm9yIG1hbmFnaW5nIHlvdXIgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBNZW1vcnlEQlNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk1lbW9yeURCU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQb2xpY3kgZm9yIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIHRvIGFzc3VtZSByb2xlIGluIGN1c3RvbWVyJ3MgYWNjb3VudCB0byBjYWxsIE1pZ3JhdGlvbiBIdWIgKi9cbiAgICBwdWJsaWMgTWlncmF0aW9uSHViRE1TQWNjZXNzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTWlncmF0aW9uSHViRE1TQWNjZXNzU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgTWlncmF0aW9uIEh1YiB0byBjYWxsIEFwcGxpY2F0aW9uIERpc2NvdmVyeSBTZXJ2aWNlIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIE1pZ3JhdGlvbkh1YlNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk1pZ3JhdGlvbkh1YlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IGZvciBTZXJ2ZXIgTWlncmF0aW9uIFNlcnZpY2UgdG8gYXNzdW1lIHJvbGUgaW4gY3VzdG9tZXIncyBhY2NvdW50IHRvIGNhbGwgTWlncmF0aW9uIEh1YiAqL1xuICAgIHB1YmxpYyBNaWdyYXRpb25IdWJTTVNBY2Nlc3NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5NaWdyYXRpb25IdWJTTVNBY2Nlc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFBvbGljeSBmb3IgQVdTIE1vbml0cm9uIHNlcnZpY2UgbGlua2VkIHJvbGUgZ3JhbnRpbmcgYWNjZXNzIHRvIHJlcXVpcmVkIGN1c3RvbWVyIHJlc291cmNlcy4gKi9cbiAgICBwdWJsaWMgTW9uaXRyb25TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Nb25pdHJvblNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gTXVsdGktcGFydHkgYXBwcm92YWwuIFRoaXMgcG9saWN5IGFsc28gaW5jbHVkZXMgcmVsYXRlZCBwZXJtaXNzaW9ucyB0byBBV1MgT3JnYW5pemF0aW9ucyBhbmQgQVdTIElBTSBJZGVudGl0eSBmb3IgbWFuYWdpbmcgYXBwcm92YWwgdGVhbXMgYW5kIGlkZW50aXR5IHNvdXJjZXMuICovXG4gICAgcHVibGljIE11bHRpUGFydHlBcHByb3ZhbEZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTXVsdGlQYXJ0eUFwcHJvdmFsRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gTXVsdGktcGFydHkgYXBwcm92YWwuIFRoaXMgcG9saWN5IGFsc28gaW5jbHVkZXMgcmVsYXRlZCByZWFkIHBlcm1pc3Npb24gdG8gQVdTIE9yZ2FuaXphdGlvbnMgYW5kIEFXUyBJQU0gSWRlbnRpdHkgZm9yIGFwcHJvdmFsIHRlYW1zIGFuZCBpZGVudGl0eSBzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBNdWx0aVBhcnR5QXBwcm92YWxSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5NdWx0aVBhcnR5QXBwcm92YWxSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIG1hbmFnZSBBbWF6b24gTmVwdHVuZSB1c2luZyB0aGUgQVdTIENvbnNvbGUuIE5vdGUgdGhpcyBwb2xpY3kgYWxzbyBncmFudHMgZnVsbCBhY2Nlc3MgdG8gcHVibGlzaCBvbiBhbGwgU05TIHRvcGljcyB3aXRoaW4gdGhlIGFjY291bnQsIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBhbmQgZWRpdCBBbWF6b24gRUMyIGluc3RhbmNlcyBhbmQgVlBDIGNvbmZpZ3VyYXRpb25zLCBwZXJtaXNzaW9ucyB0byB2aWV3IGFuZCBsaXN0IGtleXMgb24gQW1hem9uIEtNUywgYW5kIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBSRFMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9uZXB0dW5lL2ZhcXMvLiAqL1xuICAgIHB1YmxpYyBOZXB0dW5lQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTmVwdHVuZUNvbnNvbGVGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIE5lcHR1bmUuIE5vdGUgdGhpcyBwb2xpY3kgYWxzbyBncmFudHMgZnVsbCBhY2Nlc3MgdG8gcHVibGlzaCBvbiBhbGwgU05TIHRvcGljcyB3aXRoaW4gdGhlIGFjY291bnQgYW5kIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBSRFMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9uZXB0dW5lL2ZhcXMvLiAqL1xuICAgIHB1YmxpYyBOZXB0dW5lRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5OZXB0dW5lRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gYWxsIEFtYXpvbiBOZXB0dW5lIEFuYWx5dGljcyByZXNvdXJjZXMgYWxvbmcgd2l0aCByZWFkIG9ubHkgcGVybWlzc2lvbnMgZm9yIGRlcGVuZGVudCBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgTmVwdHVuZUdyYXBoUmVhZE9ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTmVwdHVuZUdyYXBoUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkIG9ubHkgYWNjZXNzIHRvIEFtYXpvbiBOZXB0dW5lLiBOb3RlIHRoYXQgdGhpcyBwb2xpY3kgYWxzbyBncmFudHMgYWNjZXNzIHRvIEFtYXpvbiBSRFMgcmVzb3VyY2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vbmVwdHVuZS9mYXFzLy4gKi9cbiAgICBwdWJsaWMgTmVwdHVuZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk5lcHR1bmVSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBmdWxsIGFjY2VzcyBwZXJtaXNzaW9ucyB0byBBV1Mgc2VydmljZXMgYW5kIGFjdGlvbnMgcmVxdWlyZWQgdG8gc2V0IHVwIGFuZCBjb25maWd1cmUgQVdTIG5ldHdvcmsgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBOZXR3b3JrQWRtaW5pc3RyYXRvcigpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5OZXR3b3JrQWRtaW5pc3RyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciB0aGUgQVdTIFNoaWVsZCBuZXR3b3JrIHNlY3VyaXR5IGRpcmVjdG9yIHNlcnZpY2UgbGlua2VkIHJvbGUgdG8gYXNzZXNzIHNwZWNpZmllZCBlbnZpcm9ubWVudHMuICovXG4gICAgcHVibGljIE5ldHdvcmtTZWN1cml0eURpcmVjdG9yU2VydmljZUxpbmtlZFJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuTmV0d29ya1NlY3VyaXR5RGlyZWN0b3JTZXJ2aWNlTGlua2VkUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIENsb3VkV2F0Y2ggT2JzZXJ2YWJpbGl0eSBBY2Nlc3MgTWFuYWdlciAqL1xuICAgIHB1YmxpYyBPQU1GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLk9BTUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBSZWFkIE9ubHkgYWNjZXNzIHRvIENsb3VkV2F0Y2ggT2JzZXJ2YWJpbGl0eSBBY2Nlc3MgTWFuYWdlciAqL1xuICAgIHB1YmxpYyBPQU1SZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5PQU1SZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBBbWF6b24gT3BlblNlYXJjaCBJbmdlc3Rpb24gdG8gZGVzY3JpYmUgbmV0d29yayByZXNvdXJjZXMgYW5kIHdyaXRlIHNlcnZpY2UgbWV0cmljcyB0byBjbG91ZHdhdGNoICovXG4gICAgcHVibGljIE9wZW5zZWFyY2hJbmdlc3Rpb25TZWxmTWFuYWdlZFZwY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuT3BlbnNlYXJjaEluZ2VzdGlvblNlbGZNYW5hZ2VkVnBjZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBhc3NvY2lhdGUgYW5kIGRpc3NvY2lhdGUgcGFydG5lciBjZW50cmFsIHVzZXJzIHdpdGggSUFNIHJvbGVzICovXG4gICAgcHVibGljIFBhcnRuZXJDZW50cmFsQWNjb3VudE1hbmFnZW1lbnRVc2VyUm9sZUFzc29jaWF0aW9uKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlBhcnRuZXJDZW50cmFsQWNjb3VudE1hbmFnZW1lbnRVc2VyUm9sZUFzc29jaWF0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIHNlcnZpY2VzIGFuZCByZXNvdXJjZXMsIGJ1dCBkb2VzIG5vdCBhbGxvdyBtYW5hZ2VtZW50IG9mIFVzZXJzIGFuZCBncm91cHMuICovXG4gICAgcHVibGljIFBvd2VyVXNlckFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Qb3dlclVzZXJBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFtYXpvbiBRIEFwcHMuICovXG4gICAgcHVibGljIFFBcHBzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUUFwcHNTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEdyYW50cyBwZXJtaXNzaW9ucyB0byBRQnVzaW5lc3MgdG8gY2FsbCBRdWlja1NpZ2h0IEFQSXMgZm9yIHRoZSBRdWlja1NpZ2h0IHBsdWdpbiAqL1xuICAgIHB1YmxpYyBRQnVzaW5lc3NRdWlja3NpZ2h0UGx1Z2luUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlFCdXNpbmVzc1F1aWNrc2lnaHRQbHVnaW5Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgcGVybWlzc2lvbnMgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IEFtYXpvbiBRICovXG4gICAgcHVibGljIFFCdXNpbmVzc1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlFCdXNpbmVzc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUG9saWN5IHVzZWQgYnkgUXVpY2tTaWdodCB0ZWFtIHRvIGFjY2VzcyBjdXN0b21lciBkYXRhIHByb2R1Y2VkIGJ5IFMzIFN0b3JhZ2UgTWFuYWdlbWVudCBBbmFseXRpY3MuICovXG4gICAgcHVibGljIFF1aWNrU2lnaHRBY2Nlc3NGb3JTM1N0b3JhZ2VNYW5hZ2VtZW50QW5hbHl0aWNzUmVhZE9ubHkoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUXVpY2tTaWdodEFjY2Vzc0ZvclMzU3RvcmFnZU1hbmFnZW1lbnRBbmFseXRpY3NSZWFkT25seSk7XG4gICAgfVxuXG4gICAgLyoqIERlZmF1bHQgcG9saWN5IGZvciB0aGUgQW1hem9uIFJEUyBzZXJ2aWNlIHJvbGUuICovXG4gICAgcHVibGljIFJEU0Nsb3VkSHNtQXV0aG9yaXphdGlvblJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUkRTQ2xvdWRIc21BdXRob3JpemF0aW9uUm9sZSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gQVdTIHNlcnZpY2VzIGFuZCByZXNvdXJjZXMuICovXG4gICAgcHVibGljIFJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJlYWRPbmx5QWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gUmVzb3VyY2UgR3JvdXBzIGFuZCBUYWcgRWRpdG9yLiAqL1xuICAgIHB1YmxpYyBSZXNvdXJjZUdyb3Vwc2FuZFRhZ0VkaXRvckZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUmVzb3VyY2VHcm91cHNhbmRUYWdFZGl0b3JGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHVzZSBSZXNvdXJjZSBHcm91cHMgYW5kIFRhZyBFZGl0b3IsIGJ1dCBkb2VzIG5vdCBhbGxvdyBlZGl0aW5nIG9mIHRhZ3MgdmlhIHRoZSBUYWcgRWRpdG9yLiAqL1xuICAgIHB1YmxpYyBSZXNvdXJjZUdyb3Vwc2FuZFRhZ0VkaXRvclJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJlc291cmNlR3JvdXBzYW5kVGFnRWRpdG9yUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIFJlc291cmNlIEdyb3VwcyB0byBxdWVyeSB0aGUgQVdTIHNlcnZpY2VzIHRoYXQgb3duIHlvdXIgcmVzb3VyY2VzIHRvIGtlZXAgdGhlIGdyb3VwIHVwLXRvLWRhdGUgKi9cbiAgICBwdWJsaWMgUmVzb3VyY2VHcm91cHNTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5SZXNvdXJjZUdyb3Vwc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcGVybWlzc2lvbnMgdG8gdGFnIGFuZCB1bnRhZyBhbGwgdGhlIHJlc291cmNlcyBzdXBwb3J0ZWQgYnkgUmVzb3VyY2UgR3JvdXBzIFRhZ2dpbmcgQVBJLiBUaGlzIHBvbGljeSBhbHNvIGdyYW50cyB0aGUgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gcmV0cmlldmUgYWxsIHRhZ2dlZCwgb3IgcHJldmlvdXNseSB0YWdnZWQsIHJlc291cmNlcyB0aHJvdWdoIHRoZSBSZXNvdXJjZSBHcm91cHMgVGFnZ2luZyBBUEkuICovXG4gICAgcHVibGljIFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVRhZ1VudGFnU3VwcG9ydGVkUmVzb3VyY2VzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSVRhZ1VudGFnU3VwcG9ydGVkUmVzb3VyY2VzKTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBPcGVuU2hpZnQgQW1hem9uIEVCUyBDb250YWluZXIgU3RvcmFnZSBJbnRlcmZhY2UgKENTSSkgRHJpdmVyIE9wZXJhdG9yIHRvIGluc3RhbGwgYW5kIG1haW50YWluIHRoZSBBbWF6b24gRUJTIENTSSBkcml2ZXIgb24gYSBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgY2x1c3Rlci4gVGhlIEFtYXpvbiBFQlMgQ1NJIGRyaXZlciBhbGxvd3MgUk9TQSBjbHVzdGVycyB0byBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBBbWF6b24gRUJTIHZvbHVtZXMgZm9yIHBlcnNpc3RlbnQgdm9sdW1lcy4gKi9cbiAgICBwdWJsaWMgUk9TQUFtYXpvbkVCU0NTSURyaXZlck9wZXJhdG9yUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FBbWF6b25FQlNDU0lEcml2ZXJPcGVyYXRvclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyB0aGUgT3BlblNoaWZ0IENsb3VkIE5ldHdvcmsgQ29uZmlnIENvbnRyb2xsZXIgT3BlcmF0b3IgdG8gcHJvdmlzaW9uIGFuZCBtYW5hZ2UgbmV0d29ya2luZyByZXNvdXJjZXMgZm9yIHVzZSBieSB0aGUgUmVkIEhhdCBPcGVuU2hpZnQgU2VydmljZSBvbiBBV1MgKFJPU0EpIGNsdXN0ZXIgbmV0d29ya2luZyBvdmVybGF5LiBUaGUgT3BlblNoaWZ0IENsb3VkIE5ldHdvcmsgT3BlcmF0b3IgaW50ZXJmYWNlcyB3aXRoIEFXUyBBUElzIG9uIGJlaGFsZiBvZiB0aGUgbmV0d29yayBwbHVnaW5zIHZpYSBDdXN0b21SZXNvdXJjZURlZmluaXRpb25zLiBUaGUgb3BlcmF0b3IgdXNlcyB0aGVzZSBwb2xpY3kgcGVybWlzc2lvbnMgdG8gbWFuYWdlIHByaXZhdGUgSVAgYWRkcmVzc2VzIGZvciBBbWF6b24gRUMyIGluc3RhbmNlcyBhcyBwYXJ0IG9mIHRoZSBST1NBIGNsdXN0ZXIuICovXG4gICAgcHVibGljIFJPU0FDbG91ZE5ldHdvcmtDb25maWdPcGVyYXRvclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBQ2xvdWROZXR3b3JrQ29uZmlnT3BlcmF0b3JQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgUmVkIEhhdCBPcGVuU2hpZnQgU2VydmljZSBvbiBBV1MgKFJPU0EpIGNvbnRyb2wgcGxhbmUgdG8gbWFuYWdlIFJPU0EgY2x1c3RlciBBbWF6b24gRUMyIGFuZCBBbWF6b24gUm91dGUgNTMgcmVzb3VyY2VzLiAqL1xuICAgIHB1YmxpYyBST1NBQ29udHJvbFBsYW5lT3BlcmF0b3JQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUk9TQUNvbnRyb2xQbGFuZU9wZXJhdG9yUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBPcGVuU2hpZnQgSW1hZ2UgUmVnaXN0cnkgT3BlcmF0b3IgdG8gcHJvdmlzaW9uIGFuZCBtYW5hZ2UgQW1hem9uIFMzIGJ1Y2tldHMgYW5kIG9iamVjdHMgZm9yIHVzZSBieSB0aGUgUmVkIEhhdCBPcGVuU2hpZnQgU2VydmljZSBvbiBBV1MgKFJPU0EpIGluLWNsdXN0ZXIgaW1hZ2UgcmVnaXN0cnkgdG8gc2F0aXNmeSBST1NBIHN0b3JhZ2UgcmVxdWlyZW1lbnRzLiBUaGUgT3BlblNoaWZ0IEltYWdlIFJlZ2lzdHJ5IE9wZXJhdG9yIGluc3RhbGxzIGFuZCBtYWludGFpbnMgdGhlIGludGVybmFsIHJlZ2lzdHJ5IG9mIGEgUmVkIEhhdCBPcGVuU2hpZnQgY2x1c3Rlci4gKi9cbiAgICBwdWJsaWMgUk9TQUltYWdlUmVnaXN0cnlPcGVyYXRvclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBSW1hZ2VSZWdpc3RyeU9wZXJhdG9yUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBPcGVuU2hpZnQgSW5ncmVzcyBPcGVyYXRvciB0byBwcm92aXNpb24gYW5kIG1hbmFnZSBsb2FkIGJhbGFuY2VycyBhbmQgZG9tYWluIG5hbWUgc3lzdGVtIChETlMpIGNvbmZpZ3VyYXRpb25zIGZvciBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgY2x1c3RlcnMuIFRoZSBwb2xpY3kgYWxsb3dzIHJlYWQgYWNjZXNzIHRvIHRhZyB2YWx1ZXMsIHdoaWNoIHRoZSBvcGVyYXRvciBmaWx0ZXJzIGZvciBSb3V0ZSA1MyByZXNvdXJjZXMgdG8gZGlzY292ZXIgaG9zdGVkIHpvbmVzLiAqL1xuICAgIHB1YmxpYyBST1NBSW5ncmVzc09wZXJhdG9yUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FJbmdyZXNzT3BlcmF0b3JQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIFJlZCBIYXQgT3BlblNoaWZ0IFNlcnZpY2Ugb24gQVdTIChST1NBKSBpbnN0YWxsZXIgdG8gbWFuYWdlIEFXUyByZXNvdXJjZXMgdGhhdCBzdXBwb3J0IFJPU0EgY2x1c3RlciBpbnN0YWxsYXRpb24uIFRoaXMgaW5jbHVkZXMgbWFuYWdpbmcgaW5zdGFuY2UgcHJvZmlsZXMgZm9yIFJPU0Egd29ya2VyIG5vZGVzLiAqL1xuICAgIHB1YmxpYyBST1NBSW5zdGFsbGVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FJbnN0YWxsZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIGJ1aWx0LWluIFJPU0EgQVdTIEVuY3J5cHRpb24gUHJvdmlkZXIgdG8gbWFuYWdlIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpIGtleXMgdG8gc3VwcG9ydCBldGNkIGRhdGEgZW5jcnlwdGlvbiB1c2luZyBhIGN1c3RvbWVyIHByb3ZpZGVkIEFXUyBLTVMga2V5LiBUaGUgcG9saWN5IGFsbG93cyBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIG9mIGRhdGEgdXNpbmcgS01TIGtleXMuICovXG4gICAgcHVibGljIFJPU0FLTVNQcm92aWRlclBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBS01TUHJvdmlkZXJQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgdGhlIFJPU0EgS3ViZXJuZXRlcyBjb250cm9sbGVyIHRvIG1hbmFnZSBBbWF6b24gRUMyLCBFbGFzdGljIExvYWQgQmFsYW5jaW5nIChFTEIpLCBhbmQgQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykgcmVzb3VyY2VzIGZvciBhIFJPU0EgY2x1c3Rlci4gKi9cbiAgICBwdWJsaWMgUk9TQUt1YmVDb250cm9sbGVyUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJPU0FLdWJlQ29udHJvbGxlclBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IHByb3ZpZGVzIHRoZSBwZXJtaXNzaW9ucyByZXF1aXJlZCB0byBtYW5hZ2UgdGhlIFJlZCBIYXQgT3BlblNoaWZ0IFNlcnZpY2Ugb24gQVdTIChST1NBKSBzdWJzY3JpcHRpb24uICovXG4gICAgcHVibGljIFJPU0FNYW5hZ2VTdWJzY3JpcHRpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUk9TQU1hbmFnZVN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgdG8gbWFuYWdlIGNsdXN0ZXIgRUMyIGluc3RhbmNlcyBhcyB3b3JrZXIgbm9kZXMsIGluY2x1ZGluZyBwZXJtaXNzaW9uIHRvIGNvbmZpZ3VyZSBzZWN1cml0eSBncm91cHMgYW5kIHRhZyBpbnN0YW5jZXMgYW5kIHZvbHVtZXMuIFRoaXMgcG9saWN5IGFsc28gYWxsb3dzIGZvciB0aGUgdXNlIG9mIEVDMiBpbnN0YW5jZXMgd2l0aCBkaXNrIGVuY3J5cHRpb24gcHJvdmlkZWQgYnkgQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykga2V5cy4gKi9cbiAgICBwdWJsaWMgUk9TQU5vZGVQb29sTWFuYWdlbWVudFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBTm9kZVBvb2xNYW5hZ2VtZW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgaW5zdGFsbGVyIHRvIGNvbmZpZ3VyZSBWUEMgRW5kcG9pbnRzIGFuZCBTZWN1cml0eSBHcm91cHMuIEludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBzaGFyZWQgVlBDLiAqL1xuICAgIHB1YmxpYyBST1NBU2hhcmVkVlBDRW5kcG9pbnRQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUk9TQVNoYXJlZFZQQ0VuZHBvaW50UG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHRoZSBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgaW5zdGFsbGVyIHRvIGNvbmZpZ3VyZSBSb3V0ZTUzIHJlY29yZHMuIEludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBzaGFyZWQgVlBDLiAqL1xuICAgIHB1YmxpYyBST1NBU2hhcmVkVlBDUm91dGU1M1BvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBU2hhcmVkVlBDUm91dGU1M1BvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIFJPU0Egc2l0ZSByZWxpYWJpbGl0eSBlbmdpbmVlcmluZyAoU1JFKSB0aGUgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGluaXRpYWxseSBvYnNlcnZlLCBkaWFnbm9zZSwgYW5kIHN1cHBvcnQgQVdTIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggUmVkIEhhdCBPcGVuU2hpZnQgU2VydmljZSBvbiBBV1MgKFJPU0EpIGNsdXN0ZXJzLCBpbmNsdWRpbmcgdGhlIGFiaWxpdHkgdG8gY2hhbmdlIFJPU0EgY2x1c3RlciBub2RlIHN0YXRlLiAqL1xuICAgIHB1YmxpYyBST1NBU1JFU3VwcG9ydFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5ST1NBU1JFU3VwcG9ydFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBSZWQgSGF0IE9wZW5TaGlmdCBTZXJ2aWNlIG9uIEFXUyAoUk9TQSkgd29ya2VyIG5vZGVzIGluIHlvdXIgYWNjb3VudCByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBFQzIgaW5zdGFuY2VzIGFuZCBBV1MgUmVnaW9ucyBmb3IgY29tcHV0ZSBub2RlIGxpZmVjeWNsZSBtYW5hZ2VtZW50LiAqL1xuICAgIHB1YmxpYyBST1NBV29ya2VySW5zdGFuY2VQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUk9TQVdvcmtlckluc3RhbmNlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogU2VydmljZSBMaW5rZWQgUm9sZSBQb2xpY3kgZm9yIFJvdXRlIDUzIFJlY292ZXJ5IFJlYWRpbmVzcyAqL1xuICAgIHB1YmxpYyBSb3V0ZTUzUmVjb3ZlcnlSZWFkaW5lc3NTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5Sb3V0ZTUzUmVjb3ZlcnlSZWFkaW5lc3NTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEVuYWJsZXMgYWNjZXNzIHRvIEFXUyBTZXJ2aWNlcyBhbmQgUmVzb3VyY2VzIHVzZWQgb3IgbWFuYWdlZCBieSBSb3V0ZTUzIFJlc29sdmVyICovXG4gICAgcHVibGljIFJvdXRlNTNSZXNvbHZlclNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJvdXRlNTNSZXNvbHZlclNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQSBzZXJ2aWNlLWxpbmtlZCByb2xlIHJlcXVpcmVkIGZvciBBV1MgUlRCRmFicmljIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHlvdXIgbmV0d29yayBpbnRlcmZhY2UgcmVzb3VyY2VzIGFuZCBkZWxpdmVyIG1ldHJpY3MuICovXG4gICAgcHVibGljIFJUQkZhYnJpY1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlJUQkZhYnJpY1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogRW5hYmxlcyBhY2Nlc3MgdG8gQVdTIFNlcnZpY2VzIGFuZCBSZXNvdXJjZXMgdXNlZCBvciBtYW5hZ2VkIGJ5IFMzIFN0b3JhZ2UgTGVucyAqL1xuICAgIHB1YmxpYyBTM1N0b3JhZ2VMZW5zU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuUzNTdG9yYWdlTGVuc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHJlcXVpcmVkIHRvIHVubG9jayBhIFMzIGJ1Y2tldCBwb2xpY3kgdXNpbmcgdGhlIFNlY3VyaXR5IFRva2VuIFNlcnZpY2UgKFNUUykgQXNzdW1lUm9vdCBBUEkuIFVzZSB0aGlzIG1hbmFnZWQgcG9saWN5IG9ubHkgd2l0aCB0aGUgU1RTIEFzc3VtZVJvb3QgYWN0aW9uLiAqL1xuICAgIHB1YmxpYyBTM1VubG9ja0J1Y2tldFBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TM1VubG9ja0J1Y2tldFBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGluaXRpYWwgYWRtaW5pc3RyYXRpdmUgYW5kIGluZGl2aWR1YWwgc2V0dXAgcHJpdmlsZWdlcyBmb3IgQW1hem9uIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpbyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gQWxsb3dzIGxhdW5jaGluZyBvZiBTYWdlTWFrZXIgVW5pZmllZCBTdHVkaW8gUG9ydGFsLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9BZG1pbklBTUNvbnNvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQWRtaW5JQU1Db25zb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWRtaW5pc3RyYXRpdmUgZXhlY3V0aW9uIHBvbGljeSBmb3IgdXNpbmcgSUFNIHJvbGVzIHdpdGggU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvLiBBbGxvd3MgYWRtaW5zIHRvIHByb3Zpc2lvbiwgbWFuYWdlIGFuZCBhY2Nlc3MgcmVzb3VyY2VzIGluIHlvdXIgYWNjb3VudCAoZXhjbHVkaW5nIGFjY2VzcyB0byBkYXRhIHJlc291cmNlcykgZm9yIElBTS1iYXNlZCB1c2FnZSBvZiBTYWdlTWFrZXIgVW5pZmllZCBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0FkbWluSUFNRGVmYXVsdEV4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9BZG1pbklBTURlZmF1bHRFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBZG1pbmlzdHJhdGl2ZSBleGVjdXRpb24gcG9saWN5IGZvciB1c2luZyBJQU0gcm9sZXMgd2l0aCBTYWdlTWFrZXIgVW5pZmllZCBTdHVkaW8uIEFsbG93cyBhZG1pbnMgdG8gcHJvdmlzaW9uLCBtYW5hZ2UgYW5kIGFjY2VzcyByZXNvdXJjZXMgaW4gdGhlIGxvY2FsIGFjY291bnQgKGluY2x1ZGluZyBicm9hZCBhY2Nlc3MgdG8gYWxsIEFQSXMgaW4gZGF0YSBzZXJ2aWNlcyBsaWtlIFMzLCBHbHVlLCBDbG91ZFdhdGNoIExvZ3MsIGFuZCBvdGhlcnMpIGZvciBJQU0tYmFzZWQgdXNhZ2Ugb2YgU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9BZG1pbklBTVBlcm1pc3NpdmVFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQWRtaW5JQU1QZXJtaXNzaXZlRXhlY3V0aW9uUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBJQU0gcG9saWN5IGdyYW50cyBhbiBJQU0gcm9sZSBmdWxsIGFjY2VzcyB0byBBV1MgR2x1ZSBEYXRhIENhdGFsb2cgKG1ldGFkYXRhKSBhbmQgQW1hem9uIFMzIChhY3R1YWwgZGF0YSkgZm9yIGRhdGEgbGFrZSBvcGVyYXRpb25zLCB3aXRoIGFjY2VzcyBzY29wZWQgYnkgYWNjb3VudCwgYW5kIHJvbGUgdGFncy4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvQWRtaW5Qcm9qZWN0VXNlclJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQWRtaW5Qcm9qZWN0VXNlclJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIEJlZHJvY2sgQWdlbnRzIHRvIGFjY2VzcyBBbWF6b24gQmVkcm9jayBtb2RlbHMgYW5kIG90aGVyIHJlc291cmNlcyBhdHRhY2hlZCB0byBhbiBhZ2VudCBpbiBTYWdlTWFrZXIgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9CZWRyb2NrQWdlbnRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9CZWRyb2NrQWdlbnRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBhbiBBbWF6b24gQmVkcm9jayBjaGF0IGFnZW50IGFwcCdzIGNvbmZpZ3VyYXRpb24gYW5kIEFtYXpvbiBCZWRyb2NrIGFnZW50IGluIFNhZ2VNYWtlciBTdHVkaW8uICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0JlZHJvY2tDaGF0QWdlbnRVc2VyUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9CZWRyb2NrQ2hhdEFnZW50VXNlclJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIEJlZHJvY2sgdG8gYWNjZXNzIEFtYXpvbiBCZWRyb2NrIG1vZGVscyBhbmQgZGF0YXNldHMgZm9yIGV2YWx1YXRpb24gam9icyBpbiBTYWdlTWFrZXIgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9CZWRyb2NrRXZhbHVhdGlvbkpvYlNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0JlZHJvY2tFdmFsdWF0aW9uSm9iU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIEJlZHJvY2sgRmxvd3MgdG8gYWNjZXNzIEFtYXpvbiBCZWRyb2NrIG1vZGVscyBhbmQgb3RoZXIgcmVzb3VyY2VzIGF0dGFjaGVkIHRvIGEgZmxvdyBpbiBTYWdlTWFrZXIgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9CZWRyb2NrRmxvd1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0JlZHJvY2tGbG93U2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQVdTIExhbWJkYSB0byBhY2Nlc3MgYW4gQW1hem9uIEJlZHJvY2sgZnVuY3Rpb24gY29tcG9uZW50J3MgY29uZmlndXJhdGlvbiBpbiBTYWdlTWFrZXIgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9CZWRyb2NrRnVuY3Rpb25FeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0JlZHJvY2tGdW5jdGlvbkV4ZWN1dGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gY29uZmlndXJlIHZlY3RvciBzdG9yZXMgYW5kIEFtYXpvbiBCZWRyb2NrIGtub3dsZWRnZSBiYXNlcyBpbiBTYWdlTWFrZXIgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9CZWRyb2NrS25vd2xlZGdlQmFzZUN1c3RvbVJlc291cmNlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0JlZHJvY2tLbm93bGVkZ2VCYXNlQ3VzdG9tUmVzb3VyY2VQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgQW1hem9uIEJlZHJvY2sgS25vd2xlZGdlIEJhc2VzIHRvIGFjY2VzcyBBbWF6b24gQmVkcm9jayBtb2RlbHMgYW5kIGRhdGEgc291cmNlcyBpbiBTYWdlTWFrZXIgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9CZWRyb2NrS25vd2xlZGdlQmFzZVNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0JlZHJvY2tLbm93bGVkZ2VCYXNlU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gYW4gQW1hem9uIEJlZHJvY2sgcHJvbXB0IGFuZCBpdHMgY29uZmlndXJhdGlvbiBpbiBTYWdlTWFrZXIgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9CZWRyb2NrUHJvbXB0VXNlclJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvQmVkcm9ja1Byb21wdFVzZXJSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgaXMgdXNlZCBieSBBbWF6b24gU2FnZU1ha2VyIFN0dWRpbyB0byBjYXRhbG9nLCBkaXNjb3ZlciwgZ292ZXJuLCBzaGFyZSwgYW5kIGFuYWx5emUgZGF0YSBpbiB0aGUgQW1hem9uIFNhZ2VNYWtlciBTdHVkaW8gZG9tYWluLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9Eb21haW5FeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0RvbWFpbkV4ZWN1dGlvblJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBTZXJ2aWNlIHJvbGUgZm9yIGRvbWFpbiBsZXZlbCBhY3Rpb25zIGluIHRoZSBwb3J0YWwgdGhhdCBhcmUgcGVyZm9ybWVkIGJ5IEFtYXpvbiBTYWdlTWFrZXIgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9Eb21haW5TZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9Eb21haW5TZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEFtYXpvbiBTYWdlTWFrZXIgU3R1ZGlvIGNyZWF0ZXMgSUFNIHJvbGVzIGZvciBwcm9qZWN0cyB1c2VycyB0byBwZXJmb3JtIGRhdGEgYW5hbHl0aWNzLCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgYW5kIG1hY2hpbmUgbGVhcm5pbmcgYWN0aW9ucywgYW5kIHVzZXMgdGhpcyBwb2xpY3kgd2hlbiBjcmVhdGluZyB0aGVzZSByb2xlcyB0byBkZWZpbmUgdGhlIHBlcm1pc3Npb25zIHJlbGF0ZWQgdG8gRU1SLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9FTVJJbnN0YW5jZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvRU1SSW5zdGFuY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIFNhZ2VNYWtlciBTdHVkaW8gY3JlYXRlcyBJQU0gcm9sZXMgZm9yIHByb2plY3RzIHVzZXJzIHRvIHBlcmZvcm0gZGF0YSBhbmFseXRpY3MsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCBhbmQgbWFjaGluZSBsZWFybmluZyBhY3Rpb25zLCBhbmQgdXNlcyB0aGlzIHBvbGljeSB3aGVuIGNyZWF0aW5nIHRoZXNlIHJvbGVzIHRvIGRlZmluZSB0aGUgcGVybWlzc2lvbnMgcmVsYXRlZCB0byBFTVIuICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb0VNUlNlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0VNUlNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgcHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQW1hem9uIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpbyB2aWEgdGhlIEFtYXpvbiBTYWdlTWFrZXIgbWFuYWdlbWVudCBjb25zb2xlLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9GdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gU2FnZU1ha2VyIFN0dWRpbyB1c2VzIHRoaXMgcG9saWN5IHRvIHByb3Zpc2lvbiBhbmQgbWFuYWdlIHJlc291cmNlcyBpbiB5b3VyIGFjY291bnQuICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb1Byb2plY3RQcm92aXNpb25pbmdSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb1Byb2plY3RQcm92aXNpb25pbmdSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIFNhZ2VNYWtlciBTdHVkaW8gY3JlYXRlcyBJQU0gcm9sZXMgZm9yIHByb2plY3RzIHVzZXJzIHRvIHBlcmZvcm0gZGF0YSBhbmFseXRpY3MsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCBhbmQgbWFjaGluZSBsZWFybmluZyBhY3Rpb25zLCBhbmQgdXNlcyB0aGlzIHBvbGljeSB3aGVuIGNyZWF0aW5nIHRoZXNlIHJvbGVzIHRvIGRlZmluZSB0aGUgcGVybWlzc2lvbnMgcmVsYXRlZCB0byBTYWdlTWFrZXIuICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb1Byb2plY3RSb2xlTWFjaGluZUxlYXJuaW5nUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb1Byb2plY3RSb2xlTWFjaGluZUxlYXJuaW5nUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIFNhZ2VNYWtlciBjcmVhdGVzIElBTSByb2xlcyBmb3IgUHJvamVjdHMgdXNlcnMgdG8gcGVyZm9ybSBkYXRhIGFuYWx5dGljcywgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIGFuZCBtYWNoaW5lIGxlYXJuaW5nIGFjdGlvbnMsIGFuZCB1c2VzIHRoaXMgcG9saWN5IHdoZW4gY3JlYXRpbmcgdGhlc2Ugcm9sZXMgdG8gZGVmaW5lIHRoZSBib3VuZGFyeSBvZiB0aGVpciBwZXJtaXNzaW9ucy4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvUHJvamVjdFVzZXJSb2xlUGVybWlzc2lvbnNCb3VuZGFyeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9Qcm9qZWN0VXNlclJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICAvKiogQW1hem9uIFNhZ2VNYWtlciBTdHVkaW8gY3JlYXRlcyBJQU0gcm9sZXMgZm9yIHByb2plY3RzIHVzZXJzIHRvIHBlcmZvcm0gZGF0YSBhbmFseXRpY3MsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLCBhbmQgbWFjaGluZSBsZWFybmluZyBhY3Rpb25zLCBhbmQgdXNlcyB0aGlzIHBvbGljeSB3aGVuIGNyZWF0aW5nIHRoZXNlIHJvbGVzIHRvIGRlZmluZSB0aGUgcGVybWlzc2lvbnMuICovXG4gICAgcHVibGljIFNhZ2VNYWtlclN0dWRpb1Byb2plY3RVc2VyUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9Qcm9qZWN0VXNlclJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBBbWF6b24gU2FnZU1ha2VyIFN0dWRpbyB1c2VzIHRoaXMgcG9saWN5IHdoZW4gcnVubmluZyBxdWVyeSBleGVjdXRpb25zIG9uIGZlZGVyYXRlZCBjb25uZWN0aW9ucy4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvUXVlcnlFeGVjdXRpb25Sb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNhZ2VNYWtlclN0dWRpb1F1ZXJ5RXhlY3V0aW9uUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGluZGl2aWR1YWwgc2V0dXAgcHJpdmlsZWdlcyBmb3IgQW1hem9uIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpbyB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYW5kIFNESy4gQWxsb3dzIGxhdW5jaGluZyBvZiBTYWdlTWFrZXIgVW5pZmllZCBTdHVkaW8gUG9ydGFsLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9Vc2VySUFNQ29uc29sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9Vc2VySUFNQ29uc29sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEV4ZWN1dGlvbiBwb2xpY3kgZm9yIHVzaW5nIElBTSByb2xlcyB3aXRoIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpby4gQWxsb3dzIHVzZXJzIHRvIGFjY2VzcyByZXNvdXJjZXMgaW4gdGhlIGxvY2FsIGFjY291bnQgKGV4Y2x1ZGluZyBhY2Nlc3MgdG8gZGF0YSByZXNvdXJjZXMpIGZvciBJQU0tYmFzZWQgdXNhZ2Ugb2YgU2FnZU1ha2VyIFVuaWZpZWQgU3R1ZGlvLiAqL1xuICAgIHB1YmxpYyBTYWdlTWFrZXJTdHVkaW9Vc2VySUFNRGVmYXVsdEV4ZWN1dGlvblBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TYWdlTWFrZXJTdHVkaW9Vc2VySUFNRGVmYXVsdEV4ZWN1dGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIEV4ZWN1dGlvbiBwb2xpY3kgZm9yIHVzaW5nIElBTSByb2xlcyB3aXRoIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpby4gQWxsb3dzIHVzZXJzIHRvIGFjY2VzcyByZXNvdXJjZXMgaW4geW91ciBhY2NvdW50IChpbmNsdWRpbmcgYnJvYWQgYWNjZXNzIHRvIGFsbCBBUElzIGluIGRhdGEgc2VydmljZXMgbGlrZSBTMywgR2x1ZSwgQ2xvdWRXYXRjaCBMb2dzLCBhbmQgb3RoZXJzKSBmb3IgSUFNLWJhc2VkIHVzYWdlIG9mIFNhZ2VNYWtlciBVbmlmaWVkIFN0dWRpby4gKi9cbiAgICBwdWJsaWMgU2FnZU1ha2VyU3R1ZGlvVXNlcklBTVBlcm1pc3NpdmVFeGVjdXRpb25Qb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2FnZU1ha2VyU3R1ZGlvVXNlcklBTVBlcm1pc3NpdmVFeGVjdXRpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkL3dyaXRlIGFjY2VzcyB0byBBV1MgU2VjcmV0cyBNYW5hZ2VyIHZpYSB0aGUgQVdTIE1hbmFnZW1lbnQgQ29uc29sZS4gTm90ZTogdGhpcyBleGx1ZGVzIElBTSBhY3Rpb25zLCBzbyBjb21iaW5lIHdpdGggSUFNRnVsbEFjY2VzcyBpZiByb3RhdGlvbiBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkLiAqL1xuICAgIHB1YmxpYyBTZWNyZXRzTWFuYWdlclJlYWRXcml0ZSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TZWNyZXRzTWFuYWdlclJlYWRXcml0ZSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBzZWN1cml0eSBhdWRpdCB0ZW1wbGF0ZSBncmFudHMgYWNjZXNzIHRvIHJlYWQgc2VjdXJpdHkgY29uZmlndXJhdGlvbiBtZXRhZGF0YS4gSXQgaXMgdXNlZnVsIGZvciBzb2Z0d2FyZSB0aGF0IGF1ZGl0cyB0aGUgY29uZmlndXJhdGlvbiBvZiBhbiBBV1MgYWNjb3VudC4gKi9cbiAgICBwdWJsaWMgU2VjdXJpdHlBdWRpdCgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TZWN1cml0eUF1ZGl0KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIG1hbmFnZSByZXNvdXJjZXMgY3JlYXRlZCBieSBTZWN1cml0eSBMYWtlLiAqL1xuICAgIHB1YmxpYyBTZWN1cml0eUxha2VSZXNvdXJjZU1hbmFnZW1lbnRTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TZWN1cml0eUxha2VSZXNvdXJjZU1hbmFnZW1lbnRTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0byBvcGVyYXRlIHRoZSBBbWF6b24gU2VjdXJpdHkgTGFrZSBzZXJ2aWNlIG9uIHlvdXIgYmVoYWxmICovXG4gICAgcHVibGljIFNlY3VyaXR5TGFrZVNlcnZpY2VMaW5rZWRSb2xlKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNlY3VyaXR5TGFrZVNlcnZpY2VMaW5rZWRSb2xlKTtcbiAgICB9XG5cbiAgICAvKiogUGVybWlzc2lvbnMgdG8gYWxsb3cgdGhlIEFXUyBTZXJ2ZXIgTWlncmF0aW9uIENvbm5lY3RvciB0byBtaWdyYXRlIFZNcyB0byBFQzIuIEFsbG93cyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIEFXUyBTZXJ2ZXIgTWlncmF0aW9uIFNlcnZpY2UsIHJlYWQvd3JpdGUgYWNjZXNzIHRvIFMzIGJ1Y2tldHMgc3RhcnRpbmcgd2l0aCAnc21zLWItJyBhbmQgJ2ltcG9ydC10by1lYzItJyBhcyB3ZWxsIGFzIHRoZSBidWNrZXRzIHVzZWQgZm9yIEFXUyBTZXJ2ZXIgTWlncmF0aW9uIENvbm5lY3RvciB1cGdyYWRlLCBBV1MgU2VydmVyIE1pZ3JhdGlvbiBDb25uZWN0b3IgcmVnaXN0cmF0aW9uIHdpdGggQVdTLCBhbmQgbWV0cmljcyB1cGxvYWQgdG8gQVdTLiAqL1xuICAgIHB1YmxpYyBTZXJ2ZXJNaWdyYXRpb25Db25uZWN0b3IoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2VydmVyTWlncmF0aW9uQ29ubmVjdG9yKTtcbiAgICB9XG5cbiAgICAvKiogUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIGFsbCBmZWF0dXJlcyBvZiB0aGUgU2VydmVyIE1pZ3JhdGlvbiBTZXJ2aWNlIENvbnNvbGUgKi9cbiAgICBwdWJsaWMgU2VydmVyTWlncmF0aW9uU2VydmljZUNvbnNvbGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNlcnZlck1pZ3JhdGlvblNlcnZpY2VDb25zb2xlRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFBlcm1pc3Npb25zIHRvIGFsbG93IHRoZSBBV1MgU2VydmVyIE1pZ3JhdGlvbiBTZXJ2aWNlIHRvIGNyZWF0ZSBhbmQgdXBkYXRlIHJlbGV2YW50IEFXUyByZXNvdXJjZXMgaW50byB0aGUgY3VzdG9tZXIncyBBV1MgYWNjb3VudCBmb3IgbGF1bmNoaW5nIG1pZ3JhdGVkIHNlcnZlcnMgYW5kIGFwcGxpY2F0aW9ucy4gKi9cbiAgICBwdWJsaWMgU2VydmVyTWlncmF0aW9uU2VydmljZUxhdW5jaFJvbGUoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2VydmVyTWlncmF0aW9uU2VydmljZUxhdW5jaFJvbGUpO1xuICAgIH1cblxuICAgIC8qKiBQZXJtaXNzaW9ucyB0byBhbGxvdyB0aGUgQVdTIFNNUyB0byBydW4gdXNlZCBkYXRhIHZhbGlkYXRpb24gc2NyaXB0IGFuZCBzZW5kIHNjcmlwdCBzdWNjZXNzL2ZhaWx1cmUgYmFjayB0byBTTVMgKi9cbiAgICBwdWJsaWMgU2VydmVyTWlncmF0aW9uU2VydmljZVJvbGVGb3JJbnN0YW5jZVZhbGlkYXRpb24oKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2VydmVyTWlncmF0aW9uU2VydmljZVJvbGVGb3JJbnN0YW5jZVZhbGlkYXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBTZXJ2aWNlIFF1b3RhcyAqL1xuICAgIHB1YmxpYyBTZXJ2aWNlUXVvdGFzRnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TZXJ2aWNlUXVvdGFzRnVsbEFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHJlYWQgb25seSBhY2Nlc3MgdG8gU2VydmljZSBRdW90YXMgKi9cbiAgICBwdWJsaWMgU2VydmljZVF1b3Rhc1JlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlNlcnZpY2VRdW90YXNSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBTZXJ2aWNlIFF1b3RhcyB0byBjcmVhdGUgc3VwcG9ydCBjYXNlcyBvbiB5b3VyIGJlaGFsZiAqL1xuICAgIHB1YmxpYyBTZXJ2aWNlUXVvdGFzU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU2VydmljZVF1b3Rhc1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gdGhlIFNpbXBsZSBXb3JrZmxvdyBjb25maWd1cmF0aW9uIHNlcnZpY2UuICovXG4gICAgcHVibGljIFNpbXBsZVdvcmtmbG93RnVsbEFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TaW1wbGVXb3JrZmxvd0Z1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBBbGxvd3MgU01TVm9pY2UgdG8gcHVibGlzaCBtZXRyaWNzIHRvIENsb3VkV2F0Y2ggb24geW91ciBiZWhhbGYgKi9cbiAgICBwdWJsaWMgU01TVm9pY2VTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TTVNWb2ljZVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogQWxsb3dzIHNwbGl0IGNvc3QgYWxsb2NhdGlvbiBkYXRhIHRvIHJldHJpZXZlIEFXUyBPcmdhbml6YXRpb25zIGluZm9ybWF0aW9uLCBpZiBhcHBsaWNhYmxlLCBhbmQgY29sbGVjdCB0ZWxlbWV0cnkgZGF0YSBmb3IgdGhlIHNwbGl0IGNvc3QgYWxsb2NhdGlvbiBkYXRhIHNlcnZpY2VzIHRoYXQgdGhlIGN1c3RvbWVyIGhhcyBvcHRlZCBpbiB0by4gKi9cbiAgICBwdWJsaWMgU3BsaXRDb3N0QWxsb2NhdGlvbkRhdGFTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TcGxpdENvc3RBbGxvY2F0aW9uRGF0YVNlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgYWNjZXNzIHJlcXVpcmVkIHRvIHVubG9jayBhIFNRUyBxdWV1ZSBwb2xpY3kgdXNpbmcgdGhlIFNlY3VyaXR5IFRva2VuIFNlcnZpY2UgKFNUUykgQXNzdW1lUm9vdCBBUEkuIFVzZSB0aGlzIG1hbmFnZWQgcG9saWN5IG9ubHkgd2l0aCB0aGUgU1RTIEFzc3VtZVJvb3QgYWN0aW9uLiAqL1xuICAgIHB1YmxpYyBTUVNVbmxvY2tRdWV1ZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TUVNVbmxvY2tRdWV1ZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIHBlcm1pc3Npb25zIHRvIGNoZWNrIFF1aWNrIFNldHVwIGNvbmZpZ3VyYXRpb24gaGVhbHRoLCBlbnN1cmUgY29uc2lzdGVudCB1c2Ugb2YgcGFyYW1ldGVycyBhbmQgcHJvdmlzaW9uZWQgcmVzb3VyY2VzLCBhbmQgcmVtZWRpYXRlIHJlc291cmNlcyB3aGVuIGRyaWZ0IGlzIGRldGVjdGVkLiAqL1xuICAgIHB1YmxpYyBTU01RdWlja1NldHVwUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5TU01RdWlja1NldHVwUm9sZVBvbGljeSk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgcG9saWN5IGdyYW50cyBwZXJtaXNzaW9ucyB0byB0cm91Ymxlc2hvb3QgYW5kIHJlc29sdmUgaXNzdWVzIGluIGFuIEFXUyBhY2NvdW50LiBUaGlzIHBvbGljeSBhbHNvIGVuYWJsZXMgdGhlIHVzZXIgdG8gY29udGFjdCBBV1Mgc3VwcG9ydCB0byBjcmVhdGUgYW5kIG1hbmFnZSBjYXNlcy4gKi9cbiAgICBwdWJsaWMgU3VwcG9ydFVzZXIoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuU3VwcG9ydFVzZXIpO1xuICAgIH1cblxuICAgIC8qKiBHcmFudHMgZnVsbCBhY2Nlc3MgcGVybWlzc2lvbnMgbmVjZXNzYXJ5IGZvciByZXNvdXJjZXMgcmVxdWlyZWQgZm9yIGFwcGxpY2F0aW9uIGFuZCBkZXZlbG9wbWVudCBvcGVyYXRpb25zLiAqL1xuICAgIHB1YmxpYyBTeXN0ZW1BZG1pbmlzdHJhdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlN5c3RlbUFkbWluaXN0cmF0b3IpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyBmdWxsIGFjY2VzcyB0byBBbWF6b24gVHJhbnNsYXRlLiAqL1xuICAgIHB1YmxpYyBUcmFuc2xhdGVGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlRyYW5zbGF0ZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFtYXpvbiBUcmFuc2xhdGUuICovXG4gICAgcHVibGljIFRyYW5zbGF0ZVJlYWRPbmx5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlRyYW5zbGF0ZVJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgZ3JhbnRzIHBlcm1pc3Npb25zIHRvIHZpZXcgcmVzb3VyY2VzIGFuZCBiYXNpYyBtZXRhZGF0YSBhY3Jvc3MgYWxsIEFXUyBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgVmlld09ubHlBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuVmlld09ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBEZWZhdWx0IHBvbGljeSBmb3IgdGhlIFZNIEltcG9ydC9FeHBvcnQgc2VydmljZSByb2xlLCBmb3IgY3VzdG9tZXJzIHVzaW5nIHRoZSBBV1MgQ29ubmVjdG9yLiBUaGUgVk0gSW1wb3J0L0V4cG9ydCBzZXJ2aWNlIGFzc3VtZXMgYSByb2xlIHdpdGggdGhpcyBwb2xpY3kgdG8gZnVsZmlsbCB2aXJ0dWFsIG1hY2hpbmUgbWlncmF0aW9uIHJlcXVlc3RzIGZyb20gdGhlIEFXUyBDb25uZWN0b3IgdmlydHVhbCBhcHBsaWFuY2UuIChOb3RlIHRoYXQgdGhlIEFXUyBDb25uZWN0b3IgdXNlcyB0aGUgXCJBV1NDb25uZWN0b3JcIiBtYW5hZ2VkIHBvbGljeSB0byBpc3N1ZSByZXF1ZXN0cyBvbiB0aGUgY3VzdG9tZXIncyBiZWhhbGYgdG8gdGhlIFZNIEltcG9ydC9FeHBvcnQgc2VydmljZS4pIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBBTUlzIGFuZCBFQlMgc25hcHNob3RzLCBtb2RpZnkgRUJTIHNuYXBzaG90IGF0dHJpYnV0ZXMsIG1ha2UgXCJEZXNjcmliZSpcIiBjYWxscyBvbiBFQzIgb2JqZWN0cywgYW5kIHJlYWQgZnJvbSBTMyBidWNrZXRzIHN0YXJ0aW5nIHdpdGggJ2ltcG9ydC10by1lYzItJy4gKi9cbiAgICBwdWJsaWMgVk1JbXBvcnRFeHBvcnRSb2xlRm9yQVdTQ29ubmVjdG9yKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlZNSW1wb3J0RXhwb3J0Um9sZUZvckFXU0Nvbm5lY3Rvcik7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGZ1bGwgYWNjZXNzIHRvIEFtYXpvbiBWUEMgTGF0dGljZSBhbmQgYWNjZXNzIHRvIGRlcGVuZGVuY3kgc2VydmljZXMuICovXG4gICAgcHVibGljIFZQQ0xhdHRpY2VGdWxsQWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlZQQ0xhdHRpY2VGdWxsQWNjZXNzKTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byBBbWF6b24gVlBDIExhdHRpY2UgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlLCBhbmQgbGltaXRlZCBhY2Nlc3MgdG8gZGVwZW5kZW5jeSBzZXJ2aWNlcy4gKi9cbiAgICBwdWJsaWMgVlBDTGF0dGljZVJlYWRPbmx5QWNjZXNzKCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLlZQQ0xhdHRpY2VSZWFkT25seUFjY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBpbnZva2luZyBBbWF6b24gVlBDIExhdHRpY2Ugc2VydmljZXMuICovXG4gICAgcHVibGljIFZQQ0xhdHRpY2VTZXJ2aWNlc0ludm9rZUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5WUENMYXR0aWNlU2VydmljZXNJbnZva2VBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGluZyBTTFIgdG8gd3JpdGUgY3VzdG9tZXIncyBsb2dzIHRvIGEgZmlyZWhvc2Ugc3RyZWFtICovXG4gICAgcHVibGljIFdBRkxvZ2dpbmdTZXJ2aWNlUm9sZVBvbGljeSgpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5XQUZMb2dnaW5nU2VydmljZVJvbGVQb2xpY3kpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGluZyBTTFIgdG8gd3JpdGUgY3VzdG9tZXIncyBsb2dzIHRvIGEgZmlyZWhvc2Ugc3RyZWFtICovXG4gICAgcHVibGljIFdBRlJlZ2lvbmFsTG9nZ2luZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLldBRlJlZ2lvbmFsTG9nZ2luZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogVGhpcyBwb2xpY3kgY3JlYXRlcyBhIHNlcnZpY2UtbGlua2VkIHJvbGUgdGhhdCBhbGxvd3MgQVdTIFdBRiB0byB3cml0ZSBsb2dzIHRvIEFtYXpvbiBLaW5lc2lzIERhdGEgRmlyZWhvc2UuICovXG4gICAgcHVibGljIFdBRlYyTG9nZ2luZ1NlcnZpY2VSb2xlUG9saWN5KCk6IGF3c19pYW0uSU1hbmFnZWRQb2xpY3kge1xuICAgICAgICByZXR1cm4gYXdzX2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShBd3NNYW5hZ2VkUG9saWN5U3RhdGljLldBRlYyTG9nZ2luZ1NlcnZpY2VSb2xlUG9saWN5KTtcbiAgICB9XG5cbiAgICAvKiogUHJvdmlkZXMgZnVsbCBhY2Nlc3MgdG8gQVdTIFdlbGwtQXJjaGl0ZWN0ZWQgVG9vbCB2aWEgdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgKi9cbiAgICBwdWJsaWMgV2VsbEFyY2hpdGVjdGVkQ29uc29sZUZ1bGxBY2Nlc3MoKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuV2VsbEFyY2hpdGVjdGVkQ29uc29sZUZ1bGxBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIEFXUyBXZWxsLUFyY2hpdGVjdGVkIFRvb2wgdmlhIHRoZSBBV1MgTWFuYWdlbWVudCBDb25zb2xlICovXG4gICAgcHVibGljIFdlbGxBcmNoaXRlY3RlZENvbnNvbGVSZWFkT25seUFjY2VzcygpOiBhd3NfaWFtLklNYW5hZ2VkUG9saWN5IHtcbiAgICAgICAgcmV0dXJuIGF3c19pYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoQXdzTWFuYWdlZFBvbGljeVN0YXRpYy5XZWxsQXJjaGl0ZWN0ZWRDb25zb2xlUmVhZE9ubHlBY2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBFbmFibGVzIGFjY2VzcyB0byBBV1MgU2VydmljZXMgYW5kIFJlc291cmNlcyB1c2VkIG9yIG1hbmFnZWQgYnkgQW1hem9uIFdvcmtMaW5rICovXG4gICAgcHVibGljIFdvcmtMaW5rU2VydmljZVJvbGVQb2xpY3koKTogYXdzX2lhbS5JTWFuYWdlZFBvbGljeSB7XG4gICAgICAgIHJldHVybiBhd3NfaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKEF3c01hbmFnZWRQb2xpY3lTdGF0aWMuV29ya0xpbmtTZXJ2aWNlUm9sZVBvbGljeSk7XG4gICAgfVxufVxuIl19