taon-typeorm 18.0.23 → 19.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1216) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/package.json +1 -1
  3. package/tmp-environment.json +24 -3
  4. package/browser/esm2022/lib/index.mjs +0 -4
  5. package/browser/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  6. package/browser/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  7. package/browser/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  8. package/browser/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  9. package/browser/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  10. package/browser/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  11. package/browser/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  12. package/browser/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  13. package/browser/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  14. package/browser/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  15. package/browser/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  16. package/browser/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  17. package/browser/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  18. package/browser/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  19. package/browser/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  20. package/browser/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  21. package/browser/esm2022/lib/typeorm/constants.mjs +0 -4
  22. package/browser/esm2022/lib/typeorm/container.mjs +0 -57
  23. package/browser/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  24. package/browser/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  25. package/browser/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  26. package/browser/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  27. package/browser/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  28. package/browser/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  29. package/browser/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  30. package/browser/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  31. package/browser/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  32. package/browser/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  33. package/browser/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  34. package/browser/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  35. package/browser/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  36. package/browser/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  37. package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  38. package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  39. package/browser/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  40. package/browser/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  41. package/browser/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  42. package/browser/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  43. package/browser/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  44. package/browser/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  45. package/browser/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  46. package/browser/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  47. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  48. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  49. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  50. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  51. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  52. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  53. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  54. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  55. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  56. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  57. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  58. package/browser/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  59. package/browser/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  60. package/browser/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  61. package/browser/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  62. package/browser/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  63. package/browser/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  64. package/browser/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  65. package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  66. package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  67. package/browser/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  68. package/browser/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  69. package/browser/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  70. package/browser/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  71. package/browser/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  72. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  73. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  74. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  75. package/browser/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  76. package/browser/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  77. package/browser/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  78. package/browser/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  79. package/browser/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  80. package/browser/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  81. package/browser/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  82. package/browser/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  83. package/browser/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  84. package/browser/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  85. package/browser/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  86. package/browser/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  87. package/browser/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  88. package/browser/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  89. package/browser/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  90. package/browser/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  91. package/browser/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  92. package/browser/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  93. package/browser/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  94. package/browser/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  95. package/browser/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  96. package/browser/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  97. package/browser/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  98. package/browser/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  99. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  100. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  101. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  102. package/browser/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  103. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  104. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  105. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  106. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  107. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  108. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  109. package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  110. package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  111. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  112. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  113. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  114. package/browser/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  115. package/browser/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  116. package/browser/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  117. package/browser/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  118. package/browser/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  119. package/browser/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  120. package/browser/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  121. package/browser/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  122. package/browser/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  123. package/browser/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  124. package/browser/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  125. package/browser/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  126. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  127. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  128. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  129. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  130. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  131. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  132. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  133. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  134. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  135. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  136. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  137. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  138. package/browser/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  139. package/browser/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  140. package/browser/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  141. package/browser/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  142. package/browser/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  143. package/browser/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  144. package/browser/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  145. package/browser/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  146. package/browser/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  147. package/browser/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  148. package/browser/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  149. package/browser/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  150. package/browser/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  151. package/browser/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  152. package/browser/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  153. package/browser/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  154. package/browser/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  155. package/browser/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  156. package/browser/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  157. package/browser/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  158. package/browser/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  159. package/browser/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  160. package/browser/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  161. package/browser/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  162. package/browser/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  163. package/browser/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  164. package/browser/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  165. package/browser/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  166. package/browser/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  167. package/browser/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  168. package/browser/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  169. package/browser/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  170. package/browser/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  171. package/browser/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  172. package/browser/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  173. package/browser/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  174. package/browser/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  175. package/browser/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  176. package/browser/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  177. package/browser/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  178. package/browser/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  179. package/browser/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  180. package/browser/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  181. package/browser/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  182. package/browser/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  183. package/browser/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  184. package/browser/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  185. package/browser/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  186. package/browser/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  187. package/browser/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  188. package/browser/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  189. package/browser/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  190. package/browser/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  191. package/browser/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  192. package/browser/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  193. package/browser/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  194. package/browser/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  195. package/browser/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  196. package/browser/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  197. package/browser/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  198. package/browser/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  199. package/browser/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  200. package/browser/esm2022/lib/typeorm/error/index.mjs +0 -63
  201. package/browser/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  202. package/browser/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  203. package/browser/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  204. package/browser/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  205. package/browser/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  206. package/browser/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  207. package/browser/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  208. package/browser/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  209. package/browser/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  210. package/browser/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  211. package/browser/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  212. package/browser/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  213. package/browser/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  214. package/browser/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  215. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  216. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  217. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  218. package/browser/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  219. package/browser/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  220. package/browser/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  221. package/browser/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  222. package/browser/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  223. package/browser/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  224. package/browser/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  225. package/browser/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  226. package/browser/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  227. package/browser/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  228. package/browser/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  229. package/browser/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  230. package/browser/esm2022/lib/typeorm/globals.mjs +0 -165
  231. package/browser/esm2022/lib/typeorm/index.mjs +0 -157
  232. package/browser/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  233. package/browser/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  234. package/browser/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  235. package/browser/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  236. package/browser/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  237. package/browser/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  238. package/browser/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  239. package/browser/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  240. package/browser/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  241. package/browser/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  242. package/browser/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  243. package/browser/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  244. package/browser/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  245. package/browser/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  246. package/browser/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  247. package/browser/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  248. package/browser/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  249. package/browser/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  250. package/browser/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  251. package/browser/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  252. package/browser/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  253. package/browser/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  254. package/browser/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  255. package/browser/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  256. package/browser/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  257. package/browser/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  258. package/browser/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  259. package/browser/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  260. package/browser/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  261. package/browser/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  262. package/browser/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  263. package/browser/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  264. package/browser/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  265. package/browser/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  266. package/browser/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  267. package/browser/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  268. package/browser/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  269. package/browser/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  270. package/browser/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  271. package/browser/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  272. package/browser/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  273. package/browser/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  274. package/browser/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  275. package/browser/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  276. package/browser/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  277. package/browser/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  278. package/browser/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  279. package/browser/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  280. package/browser/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  281. package/browser/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  282. package/browser/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  283. package/browser/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  284. package/browser/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  285. package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  286. package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  287. package/browser/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  288. package/browser/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  289. package/browser/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  290. package/browser/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  291. package/browser/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  292. package/browser/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  293. package/browser/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  294. package/browser/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  295. package/browser/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  296. package/browser/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  297. package/browser/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  298. package/browser/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  299. package/browser/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  300. package/browser/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  301. package/browser/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  302. package/browser/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  303. package/browser/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  304. package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  305. package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  306. package/browser/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  307. package/browser/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  308. package/browser/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  309. package/browser/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
  310. package/browser/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  311. package/browser/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  312. package/browser/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  313. package/browser/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  314. package/browser/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  315. package/browser/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  316. package/browser/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  317. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  318. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  319. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  320. package/browser/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  321. package/browser/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  322. package/browser/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  323. package/browser/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  324. package/browser/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  325. package/browser/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  326. package/browser/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  327. package/browser/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  328. package/browser/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  329. package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  330. package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  331. package/browser/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  332. package/browser/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  333. package/browser/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  334. package/browser/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  335. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  336. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  337. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  338. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  339. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  340. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  341. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  342. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  343. package/browser/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  344. package/browser/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  345. package/browser/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  346. package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  347. package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  348. package/browser/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  349. package/browser/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  350. package/browser/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  351. package/browser/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  352. package/browser/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  353. package/browser/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  354. package/browser/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  355. package/browser/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  356. package/browser/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  357. package/browser/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  358. package/browser/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  359. package/browser/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  360. package/browser/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  361. package/browser/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  362. package/browser/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  363. package/browser/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  364. package/browser/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  365. package/browser/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  366. package/browser/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  367. package/browser/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  368. package/browser/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  369. package/browser/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  370. package/browser/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  371. package/browser/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  372. package/browser/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  373. package/browser/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  374. package/browser/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  375. package/browser/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  376. package/browser/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  377. package/browser/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  378. package/browser/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  379. package/browser/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  380. package/browser/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  381. package/browser/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  382. package/browser/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  383. package/browser/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  384. package/browser/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  385. package/browser/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  386. package/browser/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  387. package/browser/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  388. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  389. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  390. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  391. package/browser/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  392. package/browser/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  393. package/browser/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  394. package/browser/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  395. package/browser/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  396. package/browser/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  397. package/browser/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  398. package/browser/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  399. package/browser/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  400. package/browser/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  401. package/browser/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  402. package/browser/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  403. package/browser/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  404. package/browser/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  405. package/browser/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  406. package/browser/esm2022/public-api.mjs +0 -2
  407. package/browser/esm2022/taon-typeorm.mjs +0 -5
  408. package/client/esm2022/lib/index.mjs +0 -4
  409. package/client/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  410. package/client/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  411. package/client/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  412. package/client/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  413. package/client/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  414. package/client/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  415. package/client/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  416. package/client/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  417. package/client/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  418. package/client/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  419. package/client/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  420. package/client/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  421. package/client/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  422. package/client/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  423. package/client/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  424. package/client/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  425. package/client/esm2022/lib/typeorm/constants.mjs +0 -4
  426. package/client/esm2022/lib/typeorm/container.mjs +0 -57
  427. package/client/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  428. package/client/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  429. package/client/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  430. package/client/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  431. package/client/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  432. package/client/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  433. package/client/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  434. package/client/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  435. package/client/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  436. package/client/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  437. package/client/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  438. package/client/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  439. package/client/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  440. package/client/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  441. package/client/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  442. package/client/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  443. package/client/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  444. package/client/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  445. package/client/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  446. package/client/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  447. package/client/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  448. package/client/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  449. package/client/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  450. package/client/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  451. package/client/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  452. package/client/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  453. package/client/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  454. package/client/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  455. package/client/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  456. package/client/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  457. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  458. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  459. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  460. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  461. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  462. package/client/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  463. package/client/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  464. package/client/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  465. package/client/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  466. package/client/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  467. package/client/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  468. package/client/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  469. package/client/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  470. package/client/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  471. package/client/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  472. package/client/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  473. package/client/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  474. package/client/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  475. package/client/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  476. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  477. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  478. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  479. package/client/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  480. package/client/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  481. package/client/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  482. package/client/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  483. package/client/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  484. package/client/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  485. package/client/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  486. package/client/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  487. package/client/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  488. package/client/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  489. package/client/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  490. package/client/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  491. package/client/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  492. package/client/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  493. package/client/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  494. package/client/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  495. package/client/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  496. package/client/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  497. package/client/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  498. package/client/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  499. package/client/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  500. package/client/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  501. package/client/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  502. package/client/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  503. package/client/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  504. package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  505. package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  506. package/client/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  507. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  508. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  509. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  510. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  511. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  512. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  513. package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  514. package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  515. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  516. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  517. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  518. package/client/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  519. package/client/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  520. package/client/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  521. package/client/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  522. package/client/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  523. package/client/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  524. package/client/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  525. package/client/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  526. package/client/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  527. package/client/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  528. package/client/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  529. package/client/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  530. package/client/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  531. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  532. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  533. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  534. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  535. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  536. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  537. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  538. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  539. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  540. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  541. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  542. package/client/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  543. package/client/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  544. package/client/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  545. package/client/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  546. package/client/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  547. package/client/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  548. package/client/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  549. package/client/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  550. package/client/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  551. package/client/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  552. package/client/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  553. package/client/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  554. package/client/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  555. package/client/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  556. package/client/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  557. package/client/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  558. package/client/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  559. package/client/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  560. package/client/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  561. package/client/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  562. package/client/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  563. package/client/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  564. package/client/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  565. package/client/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  566. package/client/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  567. package/client/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  568. package/client/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  569. package/client/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  570. package/client/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  571. package/client/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  572. package/client/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  573. package/client/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  574. package/client/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  575. package/client/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  576. package/client/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  577. package/client/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  578. package/client/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  579. package/client/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  580. package/client/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  581. package/client/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  582. package/client/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  583. package/client/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  584. package/client/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  585. package/client/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  586. package/client/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  587. package/client/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  588. package/client/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  589. package/client/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  590. package/client/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  591. package/client/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  592. package/client/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  593. package/client/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  594. package/client/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  595. package/client/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  596. package/client/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  597. package/client/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  598. package/client/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  599. package/client/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  600. package/client/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  601. package/client/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  602. package/client/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  603. package/client/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  604. package/client/esm2022/lib/typeorm/error/index.mjs +0 -63
  605. package/client/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  606. package/client/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  607. package/client/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  608. package/client/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  609. package/client/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  610. package/client/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  611. package/client/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  612. package/client/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  613. package/client/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  614. package/client/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  615. package/client/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  616. package/client/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  617. package/client/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  618. package/client/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  619. package/client/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  620. package/client/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  621. package/client/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  622. package/client/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  623. package/client/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  624. package/client/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  625. package/client/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  626. package/client/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  627. package/client/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  628. package/client/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  629. package/client/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  630. package/client/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  631. package/client/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  632. package/client/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  633. package/client/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  634. package/client/esm2022/lib/typeorm/globals.mjs +0 -165
  635. package/client/esm2022/lib/typeorm/index.mjs +0 -157
  636. package/client/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  637. package/client/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  638. package/client/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  639. package/client/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  640. package/client/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  641. package/client/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  642. package/client/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  643. package/client/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  644. package/client/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  645. package/client/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  646. package/client/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  647. package/client/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  648. package/client/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  649. package/client/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  650. package/client/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  651. package/client/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  652. package/client/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  653. package/client/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  654. package/client/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  655. package/client/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  656. package/client/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  657. package/client/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  658. package/client/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  659. package/client/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  660. package/client/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  661. package/client/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  662. package/client/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  663. package/client/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  664. package/client/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  665. package/client/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  666. package/client/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  667. package/client/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  668. package/client/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  669. package/client/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  670. package/client/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  671. package/client/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  672. package/client/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  673. package/client/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  674. package/client/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  675. package/client/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  676. package/client/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  677. package/client/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  678. package/client/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  679. package/client/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  680. package/client/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  681. package/client/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  682. package/client/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  683. package/client/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  684. package/client/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  685. package/client/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  686. package/client/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  687. package/client/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  688. package/client/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  689. package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  690. package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  691. package/client/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  692. package/client/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  693. package/client/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  694. package/client/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  695. package/client/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  696. package/client/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  697. package/client/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  698. package/client/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  699. package/client/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  700. package/client/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  701. package/client/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  702. package/client/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  703. package/client/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  704. package/client/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  705. package/client/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  706. package/client/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  707. package/client/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  708. package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  709. package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  710. package/client/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  711. package/client/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  712. package/client/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  713. package/client/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
  714. package/client/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  715. package/client/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  716. package/client/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  717. package/client/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  718. package/client/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  719. package/client/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  720. package/client/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  721. package/client/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  722. package/client/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  723. package/client/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  724. package/client/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  725. package/client/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  726. package/client/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  727. package/client/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  728. package/client/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  729. package/client/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  730. package/client/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  731. package/client/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  732. package/client/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  733. package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  734. package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  735. package/client/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  736. package/client/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  737. package/client/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  738. package/client/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  739. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  740. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  741. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  742. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  743. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  744. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  745. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  746. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  747. package/client/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  748. package/client/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  749. package/client/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  750. package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  751. package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  752. package/client/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  753. package/client/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  754. package/client/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  755. package/client/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  756. package/client/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  757. package/client/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  758. package/client/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  759. package/client/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  760. package/client/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  761. package/client/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  762. package/client/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  763. package/client/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  764. package/client/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  765. package/client/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  766. package/client/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  767. package/client/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  768. package/client/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  769. package/client/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  770. package/client/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  771. package/client/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  772. package/client/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  773. package/client/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  774. package/client/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  775. package/client/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  776. package/client/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  777. package/client/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  778. package/client/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  779. package/client/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  780. package/client/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  781. package/client/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  782. package/client/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  783. package/client/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  784. package/client/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  785. package/client/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  786. package/client/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  787. package/client/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  788. package/client/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  789. package/client/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  790. package/client/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  791. package/client/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  792. package/client/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  793. package/client/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  794. package/client/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  795. package/client/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  796. package/client/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  797. package/client/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  798. package/client/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  799. package/client/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  800. package/client/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  801. package/client/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  802. package/client/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  803. package/client/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  804. package/client/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  805. package/client/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  806. package/client/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  807. package/client/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  808. package/client/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  809. package/client/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  810. package/client/esm2022/public-api.mjs +0 -2
  811. package/client/esm2022/taon-typeorm.mjs +0 -5
  812. package/taon.jsonc +0 -8
  813. package/websql/esm2022/lib/index.mjs +0 -4
  814. package/websql/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  815. package/websql/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  816. package/websql/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  817. package/websql/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  818. package/websql/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  819. package/websql/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  820. package/websql/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  821. package/websql/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  822. package/websql/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  823. package/websql/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  824. package/websql/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  825. package/websql/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  826. package/websql/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  827. package/websql/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  828. package/websql/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  829. package/websql/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  830. package/websql/esm2022/lib/typeorm/constants.mjs +0 -4
  831. package/websql/esm2022/lib/typeorm/container.mjs +0 -57
  832. package/websql/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  833. package/websql/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  834. package/websql/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  835. package/websql/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  836. package/websql/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  837. package/websql/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  838. package/websql/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  839. package/websql/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  840. package/websql/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  841. package/websql/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  842. package/websql/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  843. package/websql/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  844. package/websql/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  845. package/websql/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  846. package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  847. package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  848. package/websql/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  849. package/websql/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  850. package/websql/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  851. package/websql/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  852. package/websql/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  853. package/websql/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  854. package/websql/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  855. package/websql/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  856. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  857. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  858. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  859. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  860. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  861. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  862. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  863. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  864. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  865. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  866. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  867. package/websql/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  868. package/websql/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  869. package/websql/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  870. package/websql/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  871. package/websql/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  872. package/websql/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  873. package/websql/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  874. package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  875. package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  876. package/websql/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  877. package/websql/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  878. package/websql/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  879. package/websql/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  880. package/websql/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  881. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  882. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  883. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  884. package/websql/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  885. package/websql/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  886. package/websql/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  887. package/websql/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  888. package/websql/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  889. package/websql/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  890. package/websql/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  891. package/websql/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  892. package/websql/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  893. package/websql/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  894. package/websql/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  895. package/websql/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  896. package/websql/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  897. package/websql/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  898. package/websql/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  899. package/websql/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  900. package/websql/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  901. package/websql/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  902. package/websql/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  903. package/websql/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  904. package/websql/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  905. package/websql/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  906. package/websql/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  907. package/websql/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  908. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  909. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  910. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  911. package/websql/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  912. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  913. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  914. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  915. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  916. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  917. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  918. package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  919. package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  920. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  921. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  922. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  923. package/websql/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  924. package/websql/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  925. package/websql/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  926. package/websql/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  927. package/websql/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  928. package/websql/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  929. package/websql/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  930. package/websql/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  931. package/websql/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  932. package/websql/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  933. package/websql/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  934. package/websql/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  935. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  936. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  937. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  938. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  939. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  940. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  941. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  942. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  943. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  944. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  945. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  946. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  947. package/websql/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  948. package/websql/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  949. package/websql/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  950. package/websql/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  951. package/websql/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  952. package/websql/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  953. package/websql/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  954. package/websql/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  955. package/websql/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  956. package/websql/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  957. package/websql/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  958. package/websql/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  959. package/websql/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  960. package/websql/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  961. package/websql/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  962. package/websql/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  963. package/websql/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  964. package/websql/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  965. package/websql/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  966. package/websql/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  967. package/websql/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  968. package/websql/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  969. package/websql/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  970. package/websql/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  971. package/websql/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  972. package/websql/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  973. package/websql/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  974. package/websql/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  975. package/websql/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  976. package/websql/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  977. package/websql/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  978. package/websql/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  979. package/websql/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  980. package/websql/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  981. package/websql/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  982. package/websql/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  983. package/websql/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  984. package/websql/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  985. package/websql/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  986. package/websql/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  987. package/websql/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  988. package/websql/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  989. package/websql/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  990. package/websql/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  991. package/websql/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  992. package/websql/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  993. package/websql/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  994. package/websql/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  995. package/websql/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  996. package/websql/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  997. package/websql/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  998. package/websql/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  999. package/websql/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  1000. package/websql/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  1001. package/websql/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  1002. package/websql/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  1003. package/websql/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  1004. package/websql/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  1005. package/websql/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  1006. package/websql/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  1007. package/websql/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  1008. package/websql/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  1009. package/websql/esm2022/lib/typeorm/error/index.mjs +0 -63
  1010. package/websql/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  1011. package/websql/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  1012. package/websql/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  1013. package/websql/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  1014. package/websql/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  1015. package/websql/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  1016. package/websql/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  1017. package/websql/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  1018. package/websql/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  1019. package/websql/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  1020. package/websql/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  1021. package/websql/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  1022. package/websql/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  1023. package/websql/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  1024. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  1025. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  1026. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  1027. package/websql/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  1028. package/websql/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  1029. package/websql/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  1030. package/websql/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  1031. package/websql/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  1032. package/websql/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  1033. package/websql/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  1034. package/websql/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  1035. package/websql/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  1036. package/websql/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  1037. package/websql/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  1038. package/websql/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  1039. package/websql/esm2022/lib/typeorm/globals.mjs +0 -165
  1040. package/websql/esm2022/lib/typeorm/index.mjs +0 -157
  1041. package/websql/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  1042. package/websql/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  1043. package/websql/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  1044. package/websql/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  1045. package/websql/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  1046. package/websql/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  1047. package/websql/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  1048. package/websql/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  1049. package/websql/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  1050. package/websql/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  1051. package/websql/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  1052. package/websql/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  1053. package/websql/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  1054. package/websql/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  1055. package/websql/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  1056. package/websql/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  1057. package/websql/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  1058. package/websql/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  1059. package/websql/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  1060. package/websql/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  1061. package/websql/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  1062. package/websql/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  1063. package/websql/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  1064. package/websql/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  1065. package/websql/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  1066. package/websql/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  1067. package/websql/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  1068. package/websql/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  1069. package/websql/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  1070. package/websql/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  1071. package/websql/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  1072. package/websql/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  1073. package/websql/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  1074. package/websql/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  1075. package/websql/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  1076. package/websql/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  1077. package/websql/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  1078. package/websql/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  1079. package/websql/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  1080. package/websql/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  1081. package/websql/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  1082. package/websql/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  1083. package/websql/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  1084. package/websql/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  1085. package/websql/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  1086. package/websql/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  1087. package/websql/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  1088. package/websql/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  1089. package/websql/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  1090. package/websql/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  1091. package/websql/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  1092. package/websql/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  1093. package/websql/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  1094. package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  1095. package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  1096. package/websql/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  1097. package/websql/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  1098. package/websql/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  1099. package/websql/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  1100. package/websql/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  1101. package/websql/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  1102. package/websql/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  1103. package/websql/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  1104. package/websql/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  1105. package/websql/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  1106. package/websql/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  1107. package/websql/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  1108. package/websql/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  1109. package/websql/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  1110. package/websql/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  1111. package/websql/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  1112. package/websql/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  1113. package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  1114. package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  1115. package/websql/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  1116. package/websql/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  1117. package/websql/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  1118. package/websql/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -331
  1119. package/websql/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  1120. package/websql/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  1121. package/websql/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  1122. package/websql/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  1123. package/websql/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  1124. package/websql/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  1125. package/websql/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  1126. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  1127. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  1128. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  1129. package/websql/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  1130. package/websql/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  1131. package/websql/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  1132. package/websql/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  1133. package/websql/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  1134. package/websql/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  1135. package/websql/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  1136. package/websql/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  1137. package/websql/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  1138. package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  1139. package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  1140. package/websql/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  1141. package/websql/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  1142. package/websql/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  1143. package/websql/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  1144. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  1145. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  1146. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  1147. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  1148. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  1149. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  1150. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  1151. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  1152. package/websql/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  1153. package/websql/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  1154. package/websql/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  1155. package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  1156. package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  1157. package/websql/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  1158. package/websql/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  1159. package/websql/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  1160. package/websql/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  1161. package/websql/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  1162. package/websql/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  1163. package/websql/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  1164. package/websql/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  1165. package/websql/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  1166. package/websql/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  1167. package/websql/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  1168. package/websql/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  1169. package/websql/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  1170. package/websql/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  1171. package/websql/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  1172. package/websql/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  1173. package/websql/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  1174. package/websql/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  1175. package/websql/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  1176. package/websql/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  1177. package/websql/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  1178. package/websql/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  1179. package/websql/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  1180. package/websql/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  1181. package/websql/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  1182. package/websql/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  1183. package/websql/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  1184. package/websql/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  1185. package/websql/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  1186. package/websql/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  1187. package/websql/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  1188. package/websql/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  1189. package/websql/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  1190. package/websql/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  1191. package/websql/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  1192. package/websql/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  1193. package/websql/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  1194. package/websql/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  1195. package/websql/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  1196. package/websql/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  1197. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  1198. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  1199. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  1200. package/websql/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  1201. package/websql/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  1202. package/websql/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  1203. package/websql/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  1204. package/websql/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  1205. package/websql/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  1206. package/websql/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  1207. package/websql/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  1208. package/websql/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  1209. package/websql/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  1210. package/websql/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  1211. package/websql/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  1212. package/websql/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  1213. package/websql/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  1214. package/websql/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  1215. package/websql/esm2022/public-api.mjs +0 -2
  1216. package/websql/esm2022/taon-typeorm.mjs +0 -5
@@ -1,743 +0,0 @@
1
- import { EntityNotFoundError } from "../error/EntityNotFoundError";
2
- import { QueryRunnerProviderAlreadyReleasedError } from "../error/QueryRunnerProviderAlreadyReleasedError";
3
- import { NoNeedToReleaseEntityManagerError } from "../error/NoNeedToReleaseEntityManagerError";
4
- /* */
5
- /* */
6
- import { TreeRepository } from "../repository/TreeRepository";
7
- import { Repository } from "../repository/Repository";
8
- import { FindOptionsUtils } from "../find-options/FindOptionsUtils";
9
- import { PlainObjectToNewEntityTransformer } from "../query-builder/transformer/PlainObjectToNewEntityTransformer";
10
- import { PlainObjectToDatabaseEntityTransformer } from "../query-builder/transformer/PlainObjectToDatabaseEntityTransformer";
11
- import { CustomRepositoryCannotInheritRepositoryError, CustomRepositoryNotFoundError, TreeRepositoryNotSupportedError, TypeORMError, } from "../error"; /* */
12
- /* */
13
- /* */
14
- /* */
15
- /* */
16
- import { AbstractRepository } from "../repository/AbstractRepository";
17
- import { EntityPersistExecutor } from "../persistence/EntityPersistExecutor";
18
- import { ObjectUtils } from "../util/ObjectUtils";
19
- import { getMetadataArgsStorage } from "../globals";
20
- import { InstanceChecker } from "../util/InstanceChecker";
21
- /**
22
- * Entity manager supposed to work with any entity, automatically find its repository and call its methods,
23
- * whatever entity type are you passing.
24
- */
25
- export class EntityManager {
26
- constructor(connection, queryRunner) {
27
- this["@instanceof"] = Symbol.for("EntityManager");
28
- /**
29
- * Once created and then reused by repositories.
30
- */
31
- this.repositories = [];
32
- /**
33
- * Once created and then reused by repositories.
34
- */
35
- this.treeRepositories = [];
36
- /**
37
- * Plain to object transformer used in create and merge operations.
38
- */
39
- this.plainObjectToEntityTransformer = new PlainObjectToNewEntityTransformer();
40
- this.connection = connection;
41
- if (queryRunner) {
42
- this.queryRunner = queryRunner;
43
- ObjectUtils.assign(this.queryRunner, { manager: this });
44
- }
45
- }
46
- /**
47
- * Wraps given function execution (and all operations made there) in a transaction.
48
- * All database operations must be executed using provided entity manager.
49
- */
50
- async transaction(isolationOrRunInTransaction, runInTransactionParam) {
51
- const isolation = typeof isolationOrRunInTransaction === "string"
52
- ? isolationOrRunInTransaction
53
- : undefined;
54
- const runInTransaction = typeof isolationOrRunInTransaction === "function"
55
- ? isolationOrRunInTransaction
56
- : runInTransactionParam;
57
- if (!runInTransaction) {
58
- throw new TypeORMError(`Transaction method requires callback in second parameter if isolation level is supplied.`);
59
- }
60
- if (this.queryRunner && this.queryRunner.isReleased)
61
- throw new QueryRunnerProviderAlreadyReleasedError();
62
- const queryRunner = this.queryRunner || this.connection.createQueryRunner();
63
- try {
64
- await queryRunner.startTransaction(isolation);
65
- const result = await runInTransaction(queryRunner.manager);
66
- await queryRunner.commitTransaction();
67
- return result;
68
- }
69
- catch (err) {
70
- try {
71
- await queryRunner.rollbackTransaction();
72
- }
73
- catch (rollbackError) { }
74
- throw err;
75
- }
76
- finally {
77
- if (!this.queryRunner)
78
- await queryRunner.release();
79
- }
80
- }
81
- /**
82
- * Executes raw SQL query and returns raw database results.
83
- */
84
- async query(query, parameters) {
85
- return this.connection.query(query, parameters, this.queryRunner);
86
- }
87
- /**
88
- * Creates a new query builder that can be used to build a SQL query.
89
- */
90
- createQueryBuilder(entityClass, alias, queryRunner) {
91
- if (alias) {
92
- return this.connection.createQueryBuilder(entityClass, alias, queryRunner || this.queryRunner);
93
- }
94
- else {
95
- return this.connection.createQueryBuilder(entityClass ||
96
- queryRunner ||
97
- this.queryRunner);
98
- }
99
- }
100
- /**
101
- * Checks if entity has an id by its Function type or schema name.
102
- */
103
- hasId(targetOrEntity, maybeEntity) {
104
- const target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;
105
- const entity = arguments.length === 2 ? maybeEntity : targetOrEntity;
106
- const metadata = this.connection.getMetadata(target);
107
- return metadata.hasId(entity);
108
- }
109
- /**
110
- * Gets entity mixed id.
111
- */
112
- getId(targetOrEntity, maybeEntity) {
113
- const target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;
114
- const entity = arguments.length === 2 ? maybeEntity : targetOrEntity;
115
- const metadata = this.connection.getMetadata(target);
116
- return metadata.getEntityIdMixedMap(entity);
117
- }
118
- /**
119
- * Creates a new entity instance or instances.
120
- * Can copy properties from the given object into new entities.
121
- */
122
- create(entityClass, plainObjectOrObjects) {
123
- const metadata = this.connection.getMetadata(entityClass);
124
- if (!plainObjectOrObjects)
125
- return metadata.create(this.queryRunner);
126
- if (Array.isArray(plainObjectOrObjects))
127
- return plainObjectOrObjects.map((plainEntityLike) => this.create(entityClass, plainEntityLike));
128
- const mergeIntoEntity = metadata.create(this.queryRunner);
129
- this.plainObjectToEntityTransformer.transform(mergeIntoEntity, plainObjectOrObjects, metadata, true);
130
- return mergeIntoEntity;
131
- }
132
- /**
133
- * Merges two entities into one new entity.
134
- */
135
- merge(entityClass, mergeIntoEntity, ...entityLikes) {
136
- const metadata = this.connection.getMetadata(entityClass);
137
- entityLikes.forEach((object) => this.plainObjectToEntityTransformer.transform(mergeIntoEntity, object, metadata));
138
- return mergeIntoEntity;
139
- }
140
- /**
141
- * Creates a new entity from the given plain javascript object. If entity already exist in the database, then
142
- * it loads it (and everything related to it), replaces all values with the new ones from the given object
143
- * and returns this new entity. This new entity is actually a loaded from the db entity with all properties
144
- * replaced from the new object.
145
- */
146
- async preload(entityClass, entityLike) {
147
- const metadata = this.connection.getMetadata(entityClass);
148
- const plainObjectToDatabaseEntityTransformer = new PlainObjectToDatabaseEntityTransformer(this.connection.manager);
149
- const transformedEntity = await plainObjectToDatabaseEntityTransformer.transform(entityLike, metadata);
150
- if (transformedEntity)
151
- return this.merge(entityClass, transformedEntity, entityLike);
152
- return undefined;
153
- }
154
- /**
155
- * Saves a given entity in the database.
156
- */
157
- save(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
158
- let target = arguments.length > 1 &&
159
- (typeof targetOrEntity === "function" ||
160
- InstanceChecker.isEntitySchema(targetOrEntity) ||
161
- typeof targetOrEntity === "string")
162
- ? targetOrEntity
163
- : undefined;
164
- const entity = target
165
- ? maybeEntityOrOptions
166
- : targetOrEntity;
167
- const options = target
168
- ? maybeOptions
169
- : maybeEntityOrOptions;
170
- if (InstanceChecker.isEntitySchema(target))
171
- target = target.options.name;
172
- if (Array.isArray(entity) && entity.length === 0)
173
- return Promise.resolve(entity);
174
- return new EntityPersistExecutor(this.connection, this.queryRunner, "save", target, entity, options)
175
- .execute()
176
- .then(() => entity);
177
- }
178
- /**
179
- * Removes a given entity from the database.
180
- */
181
- remove(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
182
- const target = arguments.length > 1 &&
183
- (typeof targetOrEntity === "function" ||
184
- InstanceChecker.isEntitySchema(targetOrEntity) ||
185
- typeof targetOrEntity === "string")
186
- ? targetOrEntity
187
- : undefined;
188
- const entity = target
189
- ? maybeEntityOrOptions
190
- : targetOrEntity;
191
- const options = target
192
- ? maybeOptions
193
- : maybeEntityOrOptions;
194
- if (Array.isArray(entity) && entity.length === 0)
195
- return Promise.resolve(entity);
196
- return new EntityPersistExecutor(this.connection, this.queryRunner, "remove", target, entity, options)
197
- .execute()
198
- .then(() => entity);
199
- }
200
- /**
201
- * Records the delete date of one or many given entities.
202
- */
203
- softRemove(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
204
- let target = arguments.length > 1 &&
205
- (typeof targetOrEntity === "function" ||
206
- InstanceChecker.isEntitySchema(targetOrEntity) ||
207
- typeof targetOrEntity === "string")
208
- ? targetOrEntity
209
- : undefined;
210
- const entity = target
211
- ? maybeEntityOrOptions
212
- : targetOrEntity;
213
- const options = target
214
- ? maybeOptions
215
- : maybeEntityOrOptions;
216
- if (InstanceChecker.isEntitySchema(target))
217
- target = target.options.name;
218
- if (Array.isArray(entity) && entity.length === 0)
219
- return Promise.resolve(entity);
220
- return new EntityPersistExecutor(this.connection, this.queryRunner, "soft-remove", target, entity, options)
221
- .execute()
222
- .then(() => entity);
223
- }
224
- /**
225
- * Recovers one or many given entities.
226
- */
227
- recover(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
228
- let target = arguments.length > 1 &&
229
- (typeof targetOrEntity === "function" ||
230
- InstanceChecker.isEntitySchema(targetOrEntity) ||
231
- typeof targetOrEntity === "string")
232
- ? targetOrEntity
233
- : undefined;
234
- const entity = target
235
- ? maybeEntityOrOptions
236
- : targetOrEntity;
237
- const options = target
238
- ? maybeOptions
239
- : maybeEntityOrOptions;
240
- if (InstanceChecker.isEntitySchema(target))
241
- target = target.options.name;
242
- if (Array.isArray(entity) && entity.length === 0)
243
- return Promise.resolve(entity);
244
- return new EntityPersistExecutor(this.connection, this.queryRunner, "recover", target, entity, options)
245
- .execute()
246
- .then(() => entity);
247
- }
248
- /**
249
- * Inserts a given entity into the database.
250
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
251
- * Executes fast and efficient INSERT query.
252
- * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.
253
- * You can execute bulk inserts using this method.
254
- */
255
- async insert(target, entity) {
256
- return this.createQueryBuilder()
257
- .insert()
258
- .into(target)
259
- .values(entity)
260
- .execute();
261
- }
262
- async upsert(target, entityOrEntities, conflictPathsOrOptions) {
263
- const metadata = this.connection.getMetadata(target);
264
- let options;
265
- if (Array.isArray(conflictPathsOrOptions)) {
266
- options = {
267
- conflictPaths: conflictPathsOrOptions,
268
- };
269
- }
270
- else {
271
- options = conflictPathsOrOptions;
272
- }
273
- let entities;
274
- if (!Array.isArray(entityOrEntities)) {
275
- entities = [entityOrEntities];
276
- }
277
- else {
278
- entities = entityOrEntities;
279
- }
280
- const conflictColumns = metadata.mapPropertyPathsToColumns(options.conflictPaths);
281
- const overwriteColumns = metadata.columns.filter((col) => !conflictColumns.includes(col) &&
282
- entities.some((entity) => typeof col.getEntityValue(entity) !== "undefined"));
283
- return this.createQueryBuilder()
284
- .insert()
285
- .into(target)
286
- .values(entities)
287
- .orUpdate([...conflictColumns, ...overwriteColumns].map((col) => col.databaseName), conflictColumns.map((col) => col.databaseName), {
288
- skipUpdateIfNoValuesChanged: options.skipUpdateIfNoValuesChanged,
289
- })
290
- .execute();
291
- }
292
- /**
293
- * Updates entity partially. Entity can be found by a given condition(s).
294
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
295
- * Executes fast and efficient UPDATE query.
296
- * Does not check if entity exist in the database.
297
- * Condition(s) cannot be empty.
298
- */
299
- update(target, criteria, partialEntity) {
300
- if (criteria === undefined ||
301
- criteria === null ||
302
- criteria === "" ||
303
- (Array.isArray(criteria) && criteria.length === 0)) {
304
- return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the update method.`));
305
- }
306
- if (typeof criteria === "string" ||
307
- typeof criteria === "number" ||
308
- criteria instanceof Date ||
309
- Array.isArray(criteria)) {
310
- return this.createQueryBuilder()
311
- .update(target)
312
- .set(partialEntity)
313
- .whereInIds(criteria)
314
- .execute();
315
- }
316
- else {
317
- return this.createQueryBuilder()
318
- .update(target)
319
- .set(partialEntity)
320
- .where(criteria)
321
- .execute();
322
- }
323
- }
324
- /**
325
- * Deletes entities by a given condition(s).
326
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
327
- * Executes fast and efficient DELETE query.
328
- * Does not check if entity exist in the database.
329
- * Condition(s) cannot be empty.
330
- */
331
- delete(targetOrEntity, criteria) {
332
- if (criteria === undefined ||
333
- criteria === null ||
334
- criteria === "" ||
335
- (Array.isArray(criteria) && criteria.length === 0)) {
336
- return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
337
- }
338
- if (typeof criteria === "string" ||
339
- typeof criteria === "number" ||
340
- criteria instanceof Date ||
341
- Array.isArray(criteria)) {
342
- return this.createQueryBuilder()
343
- .delete()
344
- .from(targetOrEntity)
345
- .whereInIds(criteria)
346
- .execute();
347
- }
348
- else {
349
- return this.createQueryBuilder()
350
- .delete()
351
- .from(targetOrEntity)
352
- .where(criteria)
353
- .execute();
354
- }
355
- }
356
- /**
357
- * Records the delete date of entities by a given condition(s).
358
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
359
- * Executes fast and efficient DELETE query.
360
- * Does not check if entity exist in the database.
361
- * Condition(s) cannot be empty.
362
- */
363
- softDelete(targetOrEntity, criteria) {
364
- if (criteria === undefined ||
365
- criteria === null ||
366
- criteria === "" ||
367
- (Array.isArray(criteria) && criteria.length === 0)) {
368
- return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
369
- }
370
- if (typeof criteria === "string" ||
371
- typeof criteria === "number" ||
372
- criteria instanceof Date ||
373
- Array.isArray(criteria)) {
374
- return this.createQueryBuilder()
375
- .softDelete()
376
- .from(targetOrEntity)
377
- .whereInIds(criteria)
378
- .execute();
379
- }
380
- else {
381
- return this.createQueryBuilder()
382
- .softDelete()
383
- .from(targetOrEntity)
384
- .where(criteria)
385
- .execute();
386
- }
387
- }
388
- /**
389
- * Restores entities by a given condition(s).
390
- * Unlike save method executes a primitive operation without cascades, relations and other operations included.
391
- * Executes fast and efficient DELETE query.
392
- * Does not check if entity exist in the database.
393
- * Condition(s) cannot be empty.
394
- */
395
- restore(targetOrEntity, criteria) {
396
- if (criteria === undefined ||
397
- criteria === null ||
398
- criteria === "" ||
399
- (Array.isArray(criteria) && criteria.length === 0)) {
400
- return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
401
- }
402
- if (typeof criteria === "string" ||
403
- typeof criteria === "number" ||
404
- criteria instanceof Date ||
405
- Array.isArray(criteria)) {
406
- return this.createQueryBuilder()
407
- .restore()
408
- .from(targetOrEntity)
409
- .whereInIds(criteria)
410
- .execute();
411
- }
412
- else {
413
- return this.createQueryBuilder()
414
- .restore()
415
- .from(targetOrEntity)
416
- .where(criteria)
417
- .execute();
418
- }
419
- }
420
- /**
421
- * Counts entities that match given options.
422
- * Useful for pagination.
423
- */
424
- count(entityClass, options) {
425
- const metadata = this.connection.getMetadata(entityClass);
426
- return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
427
- metadata.name)
428
- .setFindOptions(options || {})
429
- .getCount();
430
- }
431
- /**
432
- * Counts entities that match given conditions.
433
- * Useful for pagination.
434
- */
435
- countBy(entityClass, where) {
436
- const metadata = this.connection.getMetadata(entityClass);
437
- return this.createQueryBuilder(entityClass, metadata.name)
438
- .setFindOptions({ where })
439
- .getCount();
440
- }
441
- /**
442
- * Finds entities that match given find options.
443
- */
444
- async find(entityClass, options) {
445
- const metadata = this.connection.getMetadata(entityClass);
446
- return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
447
- metadata.name)
448
- .setFindOptions(options || {})
449
- .getMany();
450
- }
451
- /**
452
- * Finds entities that match given find options.
453
- */
454
- async findBy(entityClass, where) {
455
- const metadata = this.connection.getMetadata(entityClass);
456
- return this.createQueryBuilder(entityClass, metadata.name)
457
- .setFindOptions({ where: where })
458
- .getMany();
459
- }
460
- /**
461
- * Finds entities that match given find options.
462
- * Also counts all entities that match given conditions,
463
- * but ignores pagination settings (from and take options).
464
- */
465
- findAndCount(entityClass, options) {
466
- const metadata = this.connection.getMetadata(entityClass);
467
- return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
468
- metadata.name)
469
- .setFindOptions(options || {})
470
- .getManyAndCount();
471
- }
472
- /**
473
- * Finds entities that match given WHERE conditions.
474
- * Also counts all entities that match given conditions,
475
- * but ignores pagination settings (from and take options).
476
- */
477
- findAndCountBy(entityClass, where) {
478
- const metadata = this.connection.getMetadata(entityClass);
479
- return this.createQueryBuilder(entityClass, metadata.name)
480
- .setFindOptions({ where })
481
- .getManyAndCount();
482
- }
483
- /**
484
- * Finds entities with ids.
485
- * Optionally find options or conditions can be applied.
486
- *
487
- * @deprecated use `findBy` method instead in conjunction with `In` operator, for example:
488
- *
489
- * .findBy({
490
- * id: In([1, 2, 3])
491
- * })
492
- */
493
- async findByIds(entityClass, ids) {
494
- if (!ids.length)
495
- return Promise.resolve([]);
496
- const metadata = this.connection.getMetadata(entityClass);
497
- return this.createQueryBuilder(entityClass, metadata.name)
498
- .andWhereInIds(ids)
499
- .getMany();
500
- }
501
- /**
502
- * Finds first entity by a given find options.
503
- * If entity was not found in the database - returns null.
504
- */
505
- async findOne(entityClass, options) {
506
- const metadata = this.connection.getMetadata(entityClass);
507
- let alias = metadata.name;
508
- if (options && options.join) {
509
- alias = options.join.alias;
510
- }
511
- if (!options.where) {
512
- throw new Error(`You must provide selection conditions in order to find a single row.`);
513
- }
514
- return this.createQueryBuilder(entityClass, alias)
515
- .setFindOptions({
516
- ...options,
517
- take: 1,
518
- })
519
- .getOne();
520
- }
521
- /**
522
- * Finds first entity that matches given where condition.
523
- * If entity was not found in the database - returns null.
524
- */
525
- async findOneBy(entityClass, where) {
526
- const metadata = this.connection.getMetadata(entityClass);
527
- return this.createQueryBuilder(entityClass, metadata.name)
528
- .setFindOptions({
529
- where,
530
- take: 1,
531
- })
532
- .getOne();
533
- }
534
- /**
535
- * Finds first entity that matches given id.
536
- * If entity was not found in the database - returns null.
537
- *
538
- * @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:
539
- *
540
- * .findOneBy({
541
- * id: 1 // where "id" is your primary column name
542
- * })
543
- */
544
- async findOneById(entityClass, id) {
545
- const metadata = this.connection.getMetadata(entityClass);
546
- return this.createQueryBuilder(entityClass, metadata.name)
547
- .setFindOptions({
548
- take: 1,
549
- })
550
- .whereInIds(metadata.ensureEntityIdMap(id))
551
- .getOne();
552
- }
553
- /**
554
- * Finds first entity by a given find options.
555
- * If entity was not found in the database - rejects with error.
556
- */
557
- async findOneOrFail(entityClass, options) {
558
- return this.findOne(entityClass, options).then((value) => {
559
- if (value === null) {
560
- return Promise.reject(new EntityNotFoundError(entityClass, options));
561
- }
562
- return Promise.resolve(value);
563
- });
564
- }
565
- /**
566
- * Finds first entity that matches given where condition.
567
- * If entity was not found in the database - rejects with error.
568
- */
569
- async findOneByOrFail(entityClass, where) {
570
- return this.findOneBy(entityClass, where).then((value) => {
571
- if (value === null) {
572
- return Promise.reject(new EntityNotFoundError(entityClass, where));
573
- }
574
- return Promise.resolve(value);
575
- });
576
- }
577
- /**
578
- * Clears all the data from the given table (truncates/drops it).
579
- *
580
- * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.
581
- * @see https://stackoverflow.com/a/5972738/925151
582
- */
583
- async clear(entityClass) {
584
- const metadata = this.connection.getMetadata(entityClass);
585
- const queryRunner = this.queryRunner || this.connection.createQueryRunner();
586
- try {
587
- return await queryRunner.clearTable(metadata.tablePath); // await is needed here because we are using finally
588
- }
589
- finally {
590
- if (!this.queryRunner)
591
- await queryRunner.release();
592
- }
593
- }
594
- /**
595
- * Increments some column by provided value of the entities matched given conditions.
596
- */
597
- async increment(entityClass, conditions, propertyPath, value) {
598
- const metadata = this.connection.getMetadata(entityClass);
599
- const column = metadata.findColumnWithPropertyPath(propertyPath);
600
- if (!column)
601
- throw new TypeORMError(`Column ${propertyPath} was not found in ${metadata.targetName} entity.`);
602
- if (isNaN(Number(value)))
603
- throw new TypeORMError(`Value "${value}" is not a number.`);
604
- const values = propertyPath
605
- .split(".")
606
- .reduceRight((value, key) => ({ [key]: value }), () => this.connection.driver.escape(column.databaseName) +
607
- " + " +
608
- value);
609
- return this.createQueryBuilder(entityClass, "entity")
610
- .update(entityClass)
611
- .set(values)
612
- .where(conditions)
613
- .execute();
614
- }
615
- /**
616
- * Decrements some column by provided value of the entities matched given conditions.
617
- */
618
- async decrement(entityClass, conditions, propertyPath, value) {
619
- const metadata = this.connection.getMetadata(entityClass);
620
- const column = metadata.findColumnWithPropertyPath(propertyPath);
621
- if (!column)
622
- throw new TypeORMError(`Column ${propertyPath} was not found in ${metadata.targetName} entity.`);
623
- if (isNaN(Number(value)))
624
- throw new TypeORMError(`Value "${value}" is not a number.`);
625
- const values = propertyPath
626
- .split(".")
627
- .reduceRight((value, key) => ({ [key]: value }), () => this.connection.driver.escape(column.databaseName) +
628
- " - " +
629
- value);
630
- return this.createQueryBuilder(entityClass, "entity")
631
- .update(entityClass)
632
- .set(values)
633
- .where(conditions)
634
- .execute();
635
- }
636
- /**
637
- * Gets repository for the given entity class or name.
638
- * If single database connection mode is used, then repository is obtained from the
639
- * repository aggregator, where each repository is individually created for this entity manager.
640
- * When single database connection is not used, repository is being obtained from the connection.
641
- */
642
- getRepository(target) {
643
- const repository = this.repositories.find((repository) => repository.target === target);
644
- if (repository)
645
- return repository;
646
- if (this.connection.driver.options.type === "mongodb") {
647
- /* */
648
- /* */
649
- /* */
650
- /* */
651
- /* */
652
- /* */
653
- /* */
654
- /* */
655
- return (void 0);
656
- }
657
- else {
658
- const newRepository = new Repository(target, this, this.queryRunner);
659
- this.repositories.push(newRepository);
660
- return newRepository;
661
- }
662
- }
663
- /**
664
- * Gets tree repository for the given entity class or name.
665
- * If single database connection mode is used, then repository is obtained from the
666
- * repository aggregator, where each repository is individually created for this entity manager.
667
- * When single database connection is not used, repository is being obtained from the connection.
668
- */
669
- getTreeRepository(target) {
670
- if (this.connection.driver.treeSupport === false)
671
- throw new TreeRepositoryNotSupportedError(this.connection.driver);
672
- const repository = this.treeRepositories.find((repository) => repository.target === target);
673
- if (repository)
674
- return repository;
675
- const newRepository = new TreeRepository(target, this, this.queryRunner);
676
- this.treeRepositories.push(newRepository);
677
- return newRepository;
678
- }
679
- /* */
680
- /* */
681
- /* */
682
- /* */
683
- /* */
684
- /* */
685
- /* */
686
- /* */
687
- /* */
688
- /**
689
- * Creates a new repository instance out of a given Repository and
690
- * sets current EntityManager instance to it. Used to work with custom repositories
691
- * in transactions.
692
- */
693
- withRepository(repository) {
694
- const repositoryConstructor = repository.constructor;
695
- const { target, manager, queryRunner, ...otherRepositoryProperties } = repository;
696
- return Object.assign(new repositoryConstructor(repository.target, this), {
697
- ...otherRepositoryProperties,
698
- });
699
- }
700
- /**
701
- * Gets custom entity repository marked with @EntityRepository decorator.
702
- *
703
- * @deprecated use Repository.extend to create custom repositories
704
- */
705
- getCustomRepository(customRepository) {
706
- const entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find((repository) => {
707
- return (repository.target ===
708
- (typeof customRepository === "function"
709
- ? customRepository
710
- : customRepository.constructor));
711
- });
712
- if (!entityRepositoryMetadataArgs)
713
- throw new CustomRepositoryNotFoundError(customRepository);
714
- const entityMetadata = entityRepositoryMetadataArgs.entity
715
- ? this.connection.getMetadata(entityRepositoryMetadataArgs.entity)
716
- : undefined;
717
- const entityRepositoryInstance = new entityRepositoryMetadataArgs.target(this, entityMetadata);
718
- if (entityRepositoryInstance instanceof AbstractRepository) {
719
- if (!entityRepositoryInstance["manager"])
720
- entityRepositoryInstance["manager"] = this;
721
- }
722
- else {
723
- if (!entityMetadata)
724
- throw new CustomRepositoryCannotInheritRepositoryError(customRepository);
725
- entityRepositoryInstance["manager"] = this;
726
- entityRepositoryInstance["metadata"] = entityMetadata;
727
- }
728
- return entityRepositoryInstance;
729
- }
730
- /**
731
- * Releases all resources used by entity manager.
732
- * This is used when entity manager is created with a single query runner,
733
- * and this single query runner needs to be released after job with entity manager is done.
734
- */
735
- async release() {
736
- if (!this.queryRunner)
737
- throw new NoNeedToReleaseEntityManagerError();
738
- return this.queryRunner.release();
739
- }
740
- }
741
- ;
742
- ({}); // @--end-of-file-for-module=taon-typeorm lib/typeorm/entity-manager/EntityManager.ts
743
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24tdHlwZW9ybS9wcm9qZWN0cy90YW9uLXR5cGVvcm0vc3JjL2xpYi90eXBlb3JtL2VudGl0eS1tYW5hZ2VyL0VudGl0eU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDbEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sa0RBQWtELENBQUE7QUFLMUcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNENBQTRDLENBQUE7QUFDOUYsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdFQUFnRSxDQUFBO0FBQ2xILE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLHFFQUFxRSxDQUFBO0FBQzVILE9BQU8sRUFBTSw0Q0FBNEMsRUFBTSw2QkFBNkIsRUFBTSwrQkFBK0IsRUFBTSxZQUFZLEdBQUcsTUFBTSxVQUFVLENBQUEsQ0FBQSxLQUFLO0FBQzNLLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUlyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQU81RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRW5ELE9BQU8s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QUE0QyxDQUNsRCxnQkFBZ0IsQ0FDbkIsQ0FDSjtZQUFDLHdCQUFnQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FDbkQ7WUFBQyx3QkFBZ0MsQ0FBQyxVQUFVLENBQUMsR0FBRyxjQUFjLENBQUE7UUFDbkUsQ0FBQztRQUVELE9BQU8sd0JBQXdCLENBQUE7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxpQ0FBaUMsRUFBRSxDQUFBO1FBRXBFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNyQyxDQUFDO0NBQ0o7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFGQUFxRiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIi4uL2RhdGEtc291cmNlL0RhdGFTb3VyY2VcIlxuaW1wb3J0IHsgRmluZE1hbnlPcHRpb25zIH0gZnJvbSBcIi4uL2ZpbmQtb3B0aW9ucy9GaW5kTWFueU9wdGlvbnNcIlxuaW1wb3J0IHsgRW50aXR5VGFyZ2V0IH0gZnJvbSBcIi4uL2NvbW1vbi9FbnRpdHlUYXJnZXRcIlxuaW1wb3J0IHsgT2JqZWN0VHlwZSB9IGZyb20gXCIuLi9jb21tb24vT2JqZWN0VHlwZVwiXG5pbXBvcnQgeyBFbnRpdHlOb3RGb3VuZEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0VudGl0eU5vdEZvdW5kRXJyb3JcIlxuaW1wb3J0IHsgUXVlcnlSdW5uZXJQcm92aWRlckFscmVhZHlSZWxlYXNlZEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL1F1ZXJ5UnVubmVyUHJvdmlkZXJBbHJlYWR5UmVsZWFzZWRFcnJvclwiXG5pbXBvcnQgeyBGaW5kT25lT3B0aW9ucyB9IGZyb20gXCIuLi9maW5kLW9wdGlvbnMvRmluZE9uZU9wdGlvbnNcIlxuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tIFwiLi4vY29tbW9uL0RlZXBQYXJ0aWFsXCJcbmltcG9ydCB7IFJlbW92ZU9wdGlvbnMgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZW1vdmVPcHRpb25zXCJcbmltcG9ydCB7IFNhdmVPcHRpb25zIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvU2F2ZU9wdGlvbnNcIlxuaW1wb3J0IHsgTm9OZWVkVG9SZWxlYXNlRW50aXR5TWFuYWdlckVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL05vTmVlZFRvUmVsZWFzZUVudGl0eU1hbmFnZXJFcnJvclwiXG4vKiAqL1xuLyogKi9cbiAgXG5pbXBvcnQgeyBUcmVlUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1RyZWVSZXBvc2l0b3J5XCJcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZXBvc2l0b3J5XCJcbmltcG9ydCB7IEZpbmRPcHRpb25zVXRpbHMgfSBmcm9tIFwiLi4vZmluZC1vcHRpb25zL0ZpbmRPcHRpb25zVXRpbHNcIlxuaW1wb3J0IHsgUGxhaW5PYmplY3RUb05ld0VudGl0eVRyYW5zZm9ybWVyIH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvdHJhbnNmb3JtZXIvUGxhaW5PYmplY3RUb05ld0VudGl0eVRyYW5zZm9ybWVyXCJcbmltcG9ydCB7IFBsYWluT2JqZWN0VG9EYXRhYmFzZUVudGl0eVRyYW5zZm9ybWVyIH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvdHJhbnNmb3JtZXIvUGxhaW5PYmplY3RUb0RhdGFiYXNlRW50aXR5VHJhbnNmb3JtZXJcIlxuaW1wb3J0IHsgICAgIEN1c3RvbVJlcG9zaXRvcnlDYW5ub3RJbmhlcml0UmVwb3NpdG9yeUVycm9yLCAgICAgQ3VzdG9tUmVwb3NpdG9yeU5vdEZvdW5kRXJyb3IsICAgICBUcmVlUmVwb3NpdG9yeU5vdFN1cHBvcnRlZEVycm9yLCAgICAgVHlwZU9STUVycm9yLCB9IGZyb20gXCIuLi9lcnJvclwiLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IEFic3RyYWN0UmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L0Fic3RyYWN0UmVwb3NpdG9yeVwiXG5pbXBvcnQgeyBRdWVyeVJ1bm5lciB9IGZyb20gXCIuLi9xdWVyeS1ydW5uZXIvUXVlcnlSdW5uZXJcIlxuaW1wb3J0IHsgU2VsZWN0UXVlcnlCdWlsZGVyIH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvU2VsZWN0UXVlcnlCdWlsZGVyXCJcbmltcG9ydCB7IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHkgfSBmcm9tIFwiLi4vcXVlcnktYnVpbGRlci9RdWVyeVBhcnRpYWxFbnRpdHlcIlxuaW1wb3J0IHsgRW50aXR5UGVyc2lzdEV4ZWN1dG9yIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL0VudGl0eVBlcnNpc3RFeGVjdXRvclwiXG5pbXBvcnQgeyBPYmplY3RJRCB9IGZyb20gXCIuLi9kcml2ZXIvbW9uZ29kYi90eXBpbmdzXCJcbmltcG9ydCB7IEluc2VydFJlc3VsdCB9IGZyb20gXCIuLi9xdWVyeS1idWlsZGVyL3Jlc3VsdC9JbnNlcnRSZXN1bHRcIlxuaW1wb3J0IHsgVXBkYXRlUmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvcmVzdWx0L1VwZGF0ZVJlc3VsdFwiXG5pbXBvcnQgeyBEZWxldGVSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnktYnVpbGRlci9yZXN1bHQvRGVsZXRlUmVzdWx0XCJcbmltcG9ydCB7IEZpbmRPcHRpb25zV2hlcmUgfSBmcm9tIFwiLi4vZmluZC1vcHRpb25zL0ZpbmRPcHRpb25zV2hlcmVcIlxuaW1wb3J0IHsgSXNvbGF0aW9uTGV2ZWwgfSBmcm9tIFwiLi4vZHJpdmVyL3R5cGVzL0lzb2xhdGlvbkxldmVsXCJcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSBcIi4uL3V0aWwvT2JqZWN0VXRpbHNcIlxuaW1wb3J0IHsgZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSB9IGZyb20gXCIuLi9nbG9iYWxzXCJcbmltcG9ydCB7IFVwc2VydE9wdGlvbnMgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9VcHNlcnRPcHRpb25zXCJcbmltcG9ydCB7IEluc3RhbmNlQ2hlY2tlciB9IGZyb20gXCIuLi91dGlsL0luc3RhbmNlQ2hlY2tlclwiXG5pbXBvcnQgeyBPYmplY3RMaXRlcmFsIH0gZnJvbSBcIi4uL2NvbW1vbi9PYmplY3RMaXRlcmFsXCJcblxuLyoqXG4gKiBFbnRpdHkgbWFuYWdlciBzdXBwb3NlZCB0byB3b3JrIHdpdGggYW55IGVudGl0eSwgYXV0b21hdGljYWxseSBmaW5kIGl0cyByZXBvc2l0b3J5IGFuZCBjYWxsIGl0cyBtZXRob2RzLFxuICogd2hhdGV2ZXIgZW50aXR5IHR5cGUgYXJlIHlvdSBwYXNzaW5nLlxuICovXG5leHBvcnQgY2xhc3MgRW50aXR5TWFuYWdlciB7XG4gICAgcmVhZG9ubHkgXCJAaW5zdGFuY2VvZlwiID0gU3ltYm9sLmZvcihcIkVudGl0eU1hbmFnZXJcIilcblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogQ29ubmVjdGlvbiB1c2VkIGJ5IHRoaXMgZW50aXR5IG1hbmFnZXIuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvbjogRGF0YVNvdXJjZVxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHF1ZXJ5IHJ1bm5lciB0byBiZSB1c2VkIGZvciBvcGVyYXRpb25zIGluIHRoaXMgZW50aXR5IG1hbmFnZXIuXG4gICAgICogVXNlZCBvbmx5IGluIG5vbi1nbG9iYWwgZW50aXR5IG1hbmFnZXIuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcXVlcnlSdW5uZXI/OiBRdWVyeVJ1bm5lclxuXG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBPbmNlIGNyZWF0ZWQgYW5kIHRoZW4gcmV1c2VkIGJ5IHJlcG9zaXRvcmllcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVwb3NpdG9yaWVzOiBSZXBvc2l0b3J5PGFueT5bXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBPbmNlIGNyZWF0ZWQgYW5kIHRoZW4gcmV1c2VkIGJ5IHJlcG9zaXRvcmllcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdHJlZVJlcG9zaXRvcmllczogVHJlZVJlcG9zaXRvcnk8YW55PltdID0gW11cblxuICAgIC8qKlxuICAgICAqIFBsYWluIHRvIG9iamVjdCB0cmFuc2Zvcm1lciB1c2VkIGluIGNyZWF0ZSBhbmQgbWVyZ2Ugb3BlcmF0aW9ucy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcGxhaW5PYmplY3RUb0VudGl0eVRyYW5zZm9ybWVyID1cbiAgICAgICAgbmV3IFBsYWluT2JqZWN0VG9OZXdFbnRpdHlUcmFuc2Zvcm1lcigpXG5cblxuXG5cblxuICAgIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IERhdGFTb3VyY2UsIHF1ZXJ5UnVubmVyPzogUXVlcnlSdW5uZXIpIHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvblxuICAgICAgICBpZiAocXVlcnlSdW5uZXIpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIgPSBxdWVyeVJ1bm5lclxuXG4gICAgICAgICAgICBPYmplY3RVdGlscy5hc3NpZ24odGhpcy5xdWVyeVJ1bm5lciwgeyBtYW5hZ2VyOiB0aGlzIH0pXG4gICAgICAgIH1cbiAgICB9XG5cblxuXG5cblxuICAgIC8qKlxuICAgICAqIFdyYXBzIGdpdmVuIGZ1bmN0aW9uIGV4ZWN1dGlvbiAoYW5kIGFsbCBvcGVyYXRpb25zIG1hZGUgdGhlcmUpIGluIGEgdHJhbnNhY3Rpb24uXG4gICAgICogQWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgbXVzdCBiZSBleGVjdXRlZCB1c2luZyBwcm92aWRlZCBlbnRpdHkgbWFuYWdlci5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2FjdGlvbjxUPihcbiAgICAgICAgcnVuSW5UcmFuc2FjdGlvbjogKGVudGl0eU1hbmFnZXI6IEVudGl0eU1hbmFnZXIpID0+IFByb21pc2U8VD4sXG4gICAgKTogUHJvbWlzZTxUPlxuXG4gICAgLyoqXG4gICAgICogV3JhcHMgZ2l2ZW4gZnVuY3Rpb24gZXhlY3V0aW9uIChhbmQgYWxsIG9wZXJhdGlvbnMgbWFkZSB0aGVyZSkgaW4gYSB0cmFuc2FjdGlvbi5cbiAgICAgKiBBbGwgZGF0YWJhc2Ugb3BlcmF0aW9ucyBtdXN0IGJlIGV4ZWN1dGVkIHVzaW5nIHByb3ZpZGVkIGVudGl0eSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zYWN0aW9uPFQ+KFxuICAgICAgICBpc29sYXRpb25MZXZlbDogSXNvbGF0aW9uTGV2ZWwsXG4gICAgICAgIHJ1bkluVHJhbnNhY3Rpb246IChlbnRpdHlNYW5hZ2VyOiBFbnRpdHlNYW5hZ2VyKSA9PiBQcm9taXNlPFQ+LFxuICAgICk6IFByb21pc2U8VD5cblxuICAgIC8qKlxuICAgICAqIFdyYXBzIGdpdmVuIGZ1bmN0aW9uIGV4ZWN1dGlvbiAoYW5kIGFsbCBvcGVyYXRpb25zIG1hZGUgdGhlcmUpIGluIGEgdHJhbnNhY3Rpb24uXG4gICAgICogQWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgbXVzdCBiZSBleGVjdXRlZCB1c2luZyBwcm92aWRlZCBlbnRpdHkgbWFuYWdlci5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2FjdGlvbjxUPihcbiAgICAgICAgaXNvbGF0aW9uT3JSdW5JblRyYW5zYWN0aW9uOlxuICAgICAgICAgICAgfCBJc29sYXRpb25MZXZlbFxuICAgICAgICAgICAgfCAoKGVudGl0eU1hbmFnZXI6IEVudGl0eU1hbmFnZXIpID0+IFByb21pc2U8VD4pLFxuICAgICAgICBydW5JblRyYW5zYWN0aW9uUGFyYW0/OiAoZW50aXR5TWFuYWdlcjogRW50aXR5TWFuYWdlcikgPT4gUHJvbWlzZTxUPixcbiAgICApOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgY29uc3QgaXNvbGF0aW9uID1cbiAgICAgICAgICAgIHR5cGVvZiBpc29sYXRpb25PclJ1bkluVHJhbnNhY3Rpb24gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICA/IGlzb2xhdGlvbk9yUnVuSW5UcmFuc2FjdGlvblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IHJ1bkluVHJhbnNhY3Rpb24gPVxuICAgICAgICAgICAgdHlwZW9mIGlzb2xhdGlvbk9yUnVuSW5UcmFuc2FjdGlvbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgPyBpc29sYXRpb25PclJ1bkluVHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAgICA6IHJ1bkluVHJhbnNhY3Rpb25QYXJhbVxuXG4gICAgICAgIGlmICghcnVuSW5UcmFuc2FjdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICBgVHJhbnNhY3Rpb24gbWV0aG9kIHJlcXVpcmVzIGNhbGxiYWNrIGluIHNlY29uZCBwYXJhbWV0ZXIgaWYgaXNvbGF0aW9uIGxldmVsIGlzIHN1cHBsaWVkLmAsXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5xdWVyeVJ1bm5lciAmJiB0aGlzLnF1ZXJ5UnVubmVyLmlzUmVsZWFzZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlSdW5uZXJQcm92aWRlckFscmVhZHlSZWxlYXNlZEVycm9yKClcblxuXG5cbiAgICAgICAgY29uc3QgcXVlcnlSdW5uZXIgPVxuICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lciB8fCB0aGlzLmNvbm5lY3Rpb24uY3JlYXRlUXVlcnlSdW5uZXIoKVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKGlzb2xhdGlvbilcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bkluVHJhbnNhY3Rpb24ocXVlcnlSdW5uZXIubWFuYWdlcilcbiAgICAgICAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbW1pdFRyYW5zYWN0aW9uKClcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpXG4gICAgICAgICAgICB9IGNhdGNoIChyb2xsYmFja0Vycm9yKSB7fVxuICAgICAgICAgICAgdGhyb3cgZXJyXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucXVlcnlSdW5uZXIpXG5cbiAgICAgICAgICAgICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yZWxlYXNlKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHJhdyBTUUwgcXVlcnkgYW5kIHJldHVybnMgcmF3IGRhdGFiYXNlIHJlc3VsdHMuXG4gICAgICovXG4gICAgYXN5bmMgcXVlcnkocXVlcnk6IHN0cmluZywgcGFyYW1ldGVycz86IGFueVtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5xdWVyeShxdWVyeSwgcGFyYW1ldGVycywgdGhpcy5xdWVyeVJ1bm5lcilcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHF1ZXJ5IGJ1aWxkZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBhIFNRTCBxdWVyeS5cbiAgICAgKi9cbiAgICBjcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgYWxpYXM6IHN0cmluZyxcbiAgICAgICAgcXVlcnlSdW5uZXI/OiBRdWVyeVJ1bm5lcixcbiAgICApOiBTZWxlY3RRdWVyeUJ1aWxkZXI8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBxdWVyeSBidWlsZGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBTUUwgcXVlcnkuXG4gICAgICovXG4gICAgY3JlYXRlUXVlcnlCdWlsZGVyKHF1ZXJ5UnVubmVyPzogUXVlcnlSdW5uZXIpOiBTZWxlY3RRdWVyeUJ1aWxkZXI8YW55PlxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBxdWVyeSBidWlsZGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBTUUwgcXVlcnkuXG4gICAgICovXG4gICAgY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzcz86IEVudGl0eVRhcmdldDxFbnRpdHk+IHwgUXVlcnlSdW5uZXIsXG4gICAgICAgIGFsaWFzPzogc3RyaW5nLFxuICAgICAgICBxdWVyeVJ1bm5lcj86IFF1ZXJ5UnVubmVyLFxuICAgICk6IFNlbGVjdFF1ZXJ5QnVpbGRlcjxFbnRpdHk+IHtcbiAgICAgICAgaWYgKGFsaWFzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmNyZWF0ZVF1ZXJ5QnVpbGRlcihcbiAgICAgICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgICAgICAgICBhbGlhcyxcbiAgICAgICAgICAgICAgICBxdWVyeVJ1bm5lciB8fCB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5jcmVhdGVRdWVyeUJ1aWxkZXIoXG4gICAgICAgICAgICAgICAgKGVudGl0eUNsYXNzIGFzIFF1ZXJ5UnVubmVyIHwgdW5kZWZpbmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVJ1bm5lciB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGVudGl0eSBoYXMgYW4gaWQuXG4gICAgICovXG4gICAgaGFzSWQoZW50aXR5OiBhbnkpOiBib29sZWFuXG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgZW50aXR5IG9mIGdpdmVuIHNjaGVtYSBuYW1lIGhhcyBhbiBpZC5cbiAgICAgKi9cbiAgICBoYXNJZCh0YXJnZXQ6IEZ1bmN0aW9uIHwgc3RyaW5nLCBlbnRpdHk6IGFueSk6IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBlbnRpdHkgaGFzIGFuIGlkIGJ5IGl0cyBGdW5jdGlvbiB0eXBlIG9yIHNjaGVtYSBuYW1lLlxuICAgICAqL1xuICAgIGhhc0lkKHRhcmdldE9yRW50aXR5OiBhbnkgfCBGdW5jdGlvbiB8IHN0cmluZywgbWF5YmVFbnRpdHk/OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyB0YXJnZXRPckVudGl0eSA6IHRhcmdldE9yRW50aXR5LmNvbnN0cnVjdG9yXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyBtYXliZUVudGl0eSA6IHRhcmdldE9yRW50aXR5XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKHRhcmdldClcbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhLmhhc0lkKGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGVudGl0eSBtaXhlZCBpZC5cbiAgICAgKi9cbiAgICBnZXRJZChlbnRpdHk6IGFueSk6IGFueVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBlbnRpdHkgbWl4ZWQgaWQuXG4gICAgICovXG4gICAgZ2V0SWQodGFyZ2V0OiBFbnRpdHlUYXJnZXQ8YW55PiwgZW50aXR5OiBhbnkpOiBhbnlcblxuICAgIC8qKlxuICAgICAqIEdldHMgZW50aXR5IG1peGVkIGlkLlxuICAgICAqL1xuICAgIGdldElkKHRhcmdldE9yRW50aXR5OiBhbnkgfCBFbnRpdHlUYXJnZXQ8YW55PiwgbWF5YmVFbnRpdHk/OiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA9PT0gMiA/IHRhcmdldE9yRW50aXR5IDogdGFyZ2V0T3JFbnRpdHkuY29uc3RydWN0b3JcbiAgICAgICAgY29uc3QgZW50aXR5ID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMiA/IG1heWJlRW50aXR5IDogdGFyZ2V0T3JFbnRpdHlcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEodGFyZ2V0KVxuICAgICAgICByZXR1cm4gbWV0YWRhdGEuZ2V0RW50aXR5SWRNaXhlZE1hcChlbnRpdHkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBlbnRpdHkgaW5zdGFuY2UgYW5kIGNvcGllcyBhbGwgZW50aXR5IHByb3BlcnRpZXMgZnJvbSB0aGlzIG9iamVjdCBpbnRvIGEgbmV3IGVudGl0eS5cbiAgICAgKiBOb3RlIHRoYXQgaXQgY29waWVzIG9ubHkgcHJvcGVydGllcyB0aGF0IHByZXNlbnQgaW4gZW50aXR5IHNjaGVtYS5cbiAgICAgKi9cbiAgICBjcmVhdGU8RW50aXR5PihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBwbGFpbk9iamVjdD86IERlZXBQYXJ0aWFsPEVudGl0eT4sXG4gICAgKTogRW50aXR5XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0aWVzIGFuZCBjb3BpZXMgYWxsIGVudGl0eSBwcm9wZXJ0aWVzIGZyb20gZ2l2ZW4gb2JqZWN0cyBpbnRvIHRoZWlyIG5ldyBlbnRpdGllcy5cbiAgICAgKiBOb3RlIHRoYXQgaXQgY29waWVzIG9ubHkgcHJvcGVydGllcyB0aGF0IHByZXNlbnQgaW4gZW50aXR5IHNjaGVtYS5cbiAgICAgKi9cbiAgICBjcmVhdGU8RW50aXR5PihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBwbGFpbk9iamVjdHM/OiBEZWVwUGFydGlhbDxFbnRpdHk+W10sXG4gICAgKTogRW50aXR5W11cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgZW50aXR5IGluc3RhbmNlIG9yIGluc3RhbmNlcy5cbiAgICAgKiBDYW4gY29weSBwcm9wZXJ0aWVzIGZyb20gdGhlIGdpdmVuIG9iamVjdCBpbnRvIG5ldyBlbnRpdGllcy5cbiAgICAgKi9cbiAgICBjcmVhdGU8RW50aXR5PihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBwbGFpbk9iamVjdE9yT2JqZWN0cz86IERlZXBQYXJ0aWFsPEVudGl0eT4gfCBEZWVwUGFydGlhbDxFbnRpdHk+W10sXG4gICAgKTogRW50aXR5IHwgRW50aXR5W10ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcblxuICAgICAgICBpZiAoIXBsYWluT2JqZWN0T3JPYmplY3RzKSByZXR1cm4gbWV0YWRhdGEuY3JlYXRlKHRoaXMucXVlcnlSdW5uZXIpXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGxhaW5PYmplY3RPck9iamVjdHMpKVxuICAgICAgICAgICAgcmV0dXJuIChwbGFpbk9iamVjdE9yT2JqZWN0cyBhcyBEZWVwUGFydGlhbDxFbnRpdHk+W10pLm1hcChcbiAgICAgICAgICAgICAgICAocGxhaW5FbnRpdHlMaWtlKSA9PiB0aGlzLmNyZWF0ZShlbnRpdHlDbGFzcywgcGxhaW5FbnRpdHlMaWtlKSxcbiAgICAgICAgICAgIClcblxuICAgICAgICBjb25zdCBtZXJnZUludG9FbnRpdHkgPSBtZXRhZGF0YS5jcmVhdGUodGhpcy5xdWVyeVJ1bm5lcilcbiAgICAgICAgdGhpcy5wbGFpbk9iamVjdFRvRW50aXR5VHJhbnNmb3JtZXIudHJhbnNmb3JtKFxuICAgICAgICAgICAgbWVyZ2VJbnRvRW50aXR5LFxuICAgICAgICAgICAgcGxhaW5PYmplY3RPck9iamVjdHMsXG4gICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIG1lcmdlSW50b0VudGl0eVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0d28gZW50aXRpZXMgaW50byBvbmUgbmV3IGVudGl0eS5cbiAgICAgKi9cbiAgICBtZXJnZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBtZXJnZUludG9FbnRpdHk6IEVudGl0eSxcbiAgICAgICAgLi4uZW50aXR5TGlrZXM6IERlZXBQYXJ0aWFsPEVudGl0eT5bXVxuICAgICk6IEVudGl0eSB7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG4gICAgICAgIGVudGl0eUxpa2VzLmZvckVhY2goKG9iamVjdCkgPT5cbiAgICAgICAgICAgIHRoaXMucGxhaW5PYmplY3RUb0VudGl0eVRyYW5zZm9ybWVyLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICBtZXJnZUludG9FbnRpdHksXG4gICAgICAgICAgICAgICAgb2JqZWN0LFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gbWVyZ2VJbnRvRW50aXR5XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBlbnRpdHkgZnJvbSB0aGUgZ2l2ZW4gcGxhaW4gamF2YXNjcmlwdCBvYmplY3QuIElmIGVudGl0eSBhbHJlYWR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZSwgdGhlblxuICAgICAqIGl0IGxvYWRzIGl0IChhbmQgZXZlcnl0aGluZyByZWxhdGVkIHRvIGl0KSwgcmVwbGFjZXMgYWxsIHZhbHVlcyB3aXRoIHRoZSBuZXcgb25lcyBmcm9tIHRoZSBnaXZlbiBvYmplY3RcbiAgICAgKiBhbmQgcmV0dXJucyB0aGlzIG5ldyBlbnRpdHkuIFRoaXMgbmV3IGVudGl0eSBpcyBhY3R1YWxseSBhIGxvYWRlZCBmcm9tIHRoZSBkYiBlbnRpdHkgd2l0aCBhbGwgcHJvcGVydGllc1xuICAgICAqIHJlcGxhY2VkIGZyb20gdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgYXN5bmMgcHJlbG9hZDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHlMaWtlOiBEZWVwUGFydGlhbDxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8RW50aXR5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICBjb25zdCBwbGFpbk9iamVjdFRvRGF0YWJhc2VFbnRpdHlUcmFuc2Zvcm1lciA9XG4gICAgICAgICAgICBuZXcgUGxhaW5PYmplY3RUb0RhdGFiYXNlRW50aXR5VHJhbnNmb3JtZXIodGhpcy5jb25uZWN0aW9uLm1hbmFnZXIpXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRW50aXR5ID1cbiAgICAgICAgICAgIGF3YWl0IHBsYWluT2JqZWN0VG9EYXRhYmFzZUVudGl0eVRyYW5zZm9ybWVyLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICBlbnRpdHlMaWtlLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICAgICAgKVxuICAgICAgICBpZiAodHJhbnNmb3JtZWRFbnRpdHkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZShcbiAgICAgICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBhbnksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRFbnRpdHkgYXMgRW50aXR5LFxuICAgICAgICAgICAgICAgIGVudGl0eUxpa2UsXG4gICAgICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGFsbCBnaXZlbiBlbnRpdGllcyBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogSWYgZW50aXRpZXMgZG8gbm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZSB0aGVuIGluc2VydHMsIG90aGVyd2lzZSB1cGRhdGVzLlxuICAgICAqL1xuICAgIHNhdmU8RW50aXR5PihlbnRpdGllczogRW50aXR5W10sIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5W10+XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIElmIGVudGl0aWVzIGRvIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgdGhlbiBpbnNlcnRzLCBvdGhlcndpc2UgdXBkYXRlcy5cbiAgICAgKi9cbiAgICBzYXZlPEVudGl0eT4oZW50aXR5OiBFbnRpdHksIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYWxsIGdpdmVuIGVudGl0aWVzIGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBJZiBlbnRpdGllcyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdGllczogVFtdLFxuICAgICAgICBvcHRpb25zOiBTYXZlT3B0aW9ucyAmIHsgcmVsb2FkOiBmYWxzZSB9LFxuICAgICk6IFByb21pc2U8VFtdPlxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYWxsIGdpdmVuIGVudGl0aWVzIGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBJZiBlbnRpdGllcyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdGllczogVFtdLFxuICAgICAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTwoVCAmIEVudGl0eSlbXT5cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGEgZ2l2ZW4gZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBJZiBlbnRpdHkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6IFQsXG4gICAgICAgIG9wdGlvbnM6IFNhdmVPcHRpb25zICYgeyByZWxvYWQ6IGZhbHNlIH0sXG4gICAgKTogUHJvbWlzZTxUPlxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYSBnaXZlbiBlbnRpdHkgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIElmIGVudGl0eSBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgdGhlbiBpbnNlcnRzLCBvdGhlcndpc2UgdXBkYXRlcy5cbiAgICAgKi9cbiAgICBzYXZlPEVudGl0eSwgVCBleHRlbmRzIERlZXBQYXJ0aWFsPEVudGl0eT4+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0eTogVCxcbiAgICAgICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VCAmIEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGEgZ2l2ZW4gZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBzYXZlPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWwsIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IChUIHwgVFtdKSB8IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBtYXliZUVudGl0eU9yT3B0aW9ucz86IFQgfCBUW10sXG4gICAgICAgIG1heWJlT3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VCB8IFRbXT4ge1xuXG4gICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICh0eXBlb2YgdGFyZ2V0T3JFbnRpdHkgPT09IFwiZnVuY3Rpb25cIiB8fFxuICAgICAgICAgICAgICAgIEluc3RhbmNlQ2hlY2tlci5pc0VudGl0eVNjaGVtYSh0YXJnZXRPckVudGl0eSkgfHxcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGFyZ2V0T3JFbnRpdHkgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgPyAodGFyZ2V0T3JFbnRpdHkgYXMgRnVuY3Rpb24gfCBzdHJpbmcpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgZW50aXR5OiBUIHwgVFtdID0gdGFyZ2V0XG4gICAgICAgICAgICA/IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBUIHwgVFtdKVxuICAgICAgICAgICAgOiAodGFyZ2V0T3JFbnRpdHkgYXMgVCB8IFRbXSlcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRhcmdldFxuICAgICAgICAgICAgPyBtYXliZU9wdGlvbnNcbiAgICAgICAgICAgIDogKG1heWJlRW50aXR5T3JPcHRpb25zIGFzIFNhdmVPcHRpb25zKVxuXG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0KSkgdGFyZ2V0ID0gdGFyZ2V0Lm9wdGlvbnMubmFtZVxuXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW50aXR5KSAmJiBlbnRpdHkubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRpdHkpXG5cblxuICAgICAgICByZXR1cm4gbmV3IEVudGl0eVBlcnNpc3RFeGVjdXRvcihcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIsXG4gICAgICAgICAgICBcInNhdmVcIixcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXR5IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIHJlbW92ZTxFbnRpdHk+KGVudGl0eTogRW50aXR5LCBvcHRpb25zPzogUmVtb3ZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGVudGl0eSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICByZW1vdmU8RW50aXR5PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6IEVudGl0eSxcbiAgICAgICAgb3B0aW9ucz86IFJlbW92ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxFbnRpdHk+XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXR5IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIHJlbW92ZTxFbnRpdHk+KGVudGl0eTogRW50aXR5W10sIG9wdGlvbnM/OiBSZW1vdmVPcHRpb25zKTogUHJvbWlzZTxFbnRpdHk+XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXR5IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIHJlbW92ZTxFbnRpdHk+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0eTogRW50aXR5W10sXG4gICAgICAgIG9wdGlvbnM/OiBSZW1vdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8RW50aXR5W10+XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXR5IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIHJlbW92ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IChFbnRpdHkgfCBFbnRpdHlbXSkgfCBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgbWF5YmVFbnRpdHlPck9wdGlvbnM/OiBFbnRpdHkgfCBFbnRpdHlbXSxcbiAgICAgICAgbWF5YmVPcHRpb25zPzogUmVtb3ZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEVudGl0eSB8IEVudGl0eVtdPiB7XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAodHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcImZ1bmN0aW9uXCIgfHxcbiAgICAgICAgICAgICAgICBJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0T3JFbnRpdHkpIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgID8gKHRhcmdldE9yRW50aXR5IGFzIEZ1bmN0aW9uIHwgc3RyaW5nKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eTogRW50aXR5IHwgRW50aXR5W10gPSB0YXJnZXRcbiAgICAgICAgICAgID8gKG1heWJlRW50aXR5T3JPcHRpb25zIGFzIEVudGl0eSB8IEVudGl0eVtdKVxuICAgICAgICAgICAgOiAodGFyZ2V0T3JFbnRpdHkgYXMgRW50aXR5IHwgRW50aXR5W10pXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0YXJnZXRcbiAgICAgICAgICAgID8gbWF5YmVPcHRpb25zXG4gICAgICAgICAgICA6IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBTYXZlT3B0aW9ucylcblxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudGl0eSkgJiYgZW50aXR5Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KVxuXG5cbiAgICAgICAgcmV0dXJuIG5ldyBFbnRpdHlQZXJzaXN0RXhlY3V0b3IoXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgXCJyZW1vdmVcIixcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWNvcmRzIHRoZSBkZWxldGUgZGF0ZSBvZiBhbGwgZ2l2ZW4gZW50aXRpZXMuXG4gICAgICovXG4gICAgc29mdFJlbW92ZTxFbnRpdHk+KFxuICAgICAgICBlbnRpdGllczogRW50aXR5W10sXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPlxuXG4gICAgLyoqXG4gICAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgYSBnaXZlbiBlbnRpdHkuXG4gICAgICovXG4gICAgc29mdFJlbW92ZTxFbnRpdHk+KGVudGl0eTogRW50aXR5LCBvcHRpb25zPzogU2F2ZU9wdGlvbnMpOiBQcm9taXNlPEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGFsbCBnaXZlbiBlbnRpdGllcy5cbiAgICAgKi9cbiAgICBzb2Z0UmVtb3ZlPEVudGl0eSwgVCBleHRlbmRzIERlZXBQYXJ0aWFsPEVudGl0eT4+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0aWVzOiBUW10sXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFRbXT5cblxuICAgIC8qKlxuICAgICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGEgZ2l2ZW4gZW50aXR5LlxuICAgICAqL1xuICAgIHNvZnRSZW1vdmU8RW50aXR5LCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXR5OiBULFxuICAgICAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxUPlxuXG4gICAgLyoqXG4gICAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2Ygb25lIG9yIG1hbnkgZ2l2ZW4gZW50aXRpZXMuXG4gICAgICovXG4gICAgc29mdFJlbW92ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsLCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiAoVCB8IFRbXSkgfCBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgbWF5YmVFbnRpdHlPck9wdGlvbnM/OiBUIHwgVFtdLFxuICAgICAgICBtYXliZU9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFQgfCBUW10+IHtcblxuICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAodHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcImZ1bmN0aW9uXCIgfHxcbiAgICAgICAgICAgICAgICBJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0T3JFbnRpdHkpIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgID8gKHRhcmdldE9yRW50aXR5IGFzIEZ1bmN0aW9uIHwgc3RyaW5nKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eTogVCB8IFRbXSA9IHRhcmdldFxuICAgICAgICAgICAgPyAobWF5YmVFbnRpdHlPck9wdGlvbnMgYXMgVCB8IFRbXSlcbiAgICAgICAgICAgIDogKHRhcmdldE9yRW50aXR5IGFzIFQgfCBUW10pXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0YXJnZXRcbiAgICAgICAgICAgID8gbWF5YmVPcHRpb25zXG4gICAgICAgICAgICA6IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBTYXZlT3B0aW9ucylcblxuICAgICAgICBpZiAoSW5zdGFuY2VDaGVja2VyLmlzRW50aXR5U2NoZW1hKHRhcmdldCkpIHRhcmdldCA9IHRhcmdldC5vcHRpb25zLm5hbWVcblxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudGl0eSkgJiYgZW50aXR5Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KVxuXG5cbiAgICAgICAgcmV0dXJuIG5ldyBFbnRpdHlQZXJzaXN0RXhlY3V0b3IoXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgXCJzb2Z0LXJlbW92ZVwiLFxuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gZW50aXR5KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY292ZXJzIGFsbCBnaXZlbiBlbnRpdGllcy5cbiAgICAgKi9cbiAgICByZWNvdmVyPEVudGl0eT4oXG4gICAgICAgIGVudGl0aWVzOiBFbnRpdHlbXSxcbiAgICAgICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8RW50aXR5W10+XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyBhIGdpdmVuIGVudGl0eS5cbiAgICAgKi9cbiAgICByZWNvdmVyPEVudGl0eT4oZW50aXR5OiBFbnRpdHksIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgYWxsIGdpdmVuIGVudGl0aWVzLlxuICAgICAqL1xuICAgIHJlY292ZXI8RW50aXR5LCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXRpZXM6IFRbXSxcbiAgICAgICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VFtdPlxuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgYSBnaXZlbiBlbnRpdHkuXG4gICAgICovXG4gICAgcmVjb3ZlcjxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6IFQsXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFQ+XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyBvbmUgb3IgbWFueSBnaXZlbiBlbnRpdGllcy5cbiAgICAgKi9cbiAgICByZWNvdmVyPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWwsIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IChUIHwgVFtdKSB8IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBtYXliZUVudGl0eU9yT3B0aW9ucz86IFQgfCBUW10sXG4gICAgICAgIG1heWJlT3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VCB8IFRbXT4ge1xuXG4gICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICh0eXBlb2YgdGFyZ2V0T3JFbnRpdHkgPT09IFwiZnVuY3Rpb25cIiB8fFxuICAgICAgICAgICAgICAgIEluc3RhbmNlQ2hlY2tlci5pc0VudGl0eVNjaGVtYSh0YXJnZXRPckVudGl0eSkgfHxcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGFyZ2V0T3JFbnRpdHkgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgPyAodGFyZ2V0T3JFbnRpdHkgYXMgRnVuY3Rpb24gfCBzdHJpbmcpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgZW50aXR5OiBUIHwgVFtdID0gdGFyZ2V0XG4gICAgICAgICAgICA/IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBUIHwgVFtdKVxuICAgICAgICAgICAgOiAodGFyZ2V0T3JFbnRpdHkgYXMgVCB8IFRbXSlcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRhcmdldFxuICAgICAgICAgICAgPyBtYXliZU9wdGlvbnNcbiAgICAgICAgICAgIDogKG1heWJlRW50aXR5T3JPcHRpb25zIGFzIFNhdmVPcHRpb25zKVxuXG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0KSkgdGFyZ2V0ID0gdGFyZ2V0Lm9wdGlvbnMubmFtZVxuXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW50aXR5KSAmJiBlbnRpdHkubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRpdHkpXG5cblxuICAgICAgICByZXR1cm4gbmV3IEVudGl0eVBlcnNpc3RFeGVjdXRvcihcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIsXG4gICAgICAgICAgICBcInJlY292ZXJcIixcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIGEgZ2l2ZW4gZW50aXR5IGludG8gdGhlIGRhdGFiYXNlLlxuICAgICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBJTlNFUlQgcXVlcnkuXG4gICAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZSwgc28gcXVlcnkgd2lsbCBmYWlsIGlmIGR1cGxpY2F0ZSBlbnRpdHkgaXMgYmVpbmcgaW5zZXJ0ZWQuXG4gICAgICogWW91IGNhbiBleGVjdXRlIGJ1bGsgaW5zZXJ0cyB1c2luZyB0aGlzIG1ldGhvZC5cbiAgICAgKi9cbiAgICBhc3luYyBpbnNlcnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldDogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0eTpcbiAgICAgICAgICAgIHwgUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+XG4gICAgICAgICAgICB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PltdLFxuICAgICk6IFByb21pc2U8SW5zZXJ0UmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAuaW5zZXJ0KClcbiAgICAgICAgICAgIC5pbnRvKHRhcmdldClcbiAgICAgICAgICAgIC52YWx1ZXMoZW50aXR5KVxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgIH1cblxuICAgIGFzeW5jIHVwc2VydDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXR5T3JFbnRpdGllczpcbiAgICAgICAgICAgIHwgUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+XG4gICAgICAgICAgICB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PltdLFxuICAgICAgICBjb25mbGljdFBhdGhzT3JPcHRpb25zOiBzdHJpbmdbXSB8IFVwc2VydE9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPEluc2VydFJlc3VsdD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YSh0YXJnZXQpXG5cbiAgICAgICAgbGV0IG9wdGlvbnM6IFVwc2VydE9wdGlvbnM8RW50aXR5PlxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZsaWN0UGF0aHNPck9wdGlvbnMpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGNvbmZsaWN0UGF0aHM6IGNvbmZsaWN0UGF0aHNPck9wdGlvbnMsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zID0gY29uZmxpY3RQYXRoc09yT3B0aW9uc1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVudGl0aWVzOiBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT5bXVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbnRpdHlPckVudGl0aWVzKSkge1xuICAgICAgICAgICAgZW50aXRpZXMgPSBbZW50aXR5T3JFbnRpdGllc11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVudGl0aWVzID0gZW50aXR5T3JFbnRpdGllc1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29uZmxpY3RDb2x1bW5zID0gbWV0YWRhdGEubWFwUHJvcGVydHlQYXRoc1RvQ29sdW1ucyhcbiAgICAgICAgICAgIG9wdGlvbnMuY29uZmxpY3RQYXRocyxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IG92ZXJ3cml0ZUNvbHVtbnMgPSBtZXRhZGF0YS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgICAgIChjb2wpID0+XG4gICAgICAgICAgICAgICAgIWNvbmZsaWN0Q29sdW1ucy5pbmNsdWRlcyhjb2wpICYmXG4gICAgICAgICAgICAgICAgZW50aXRpZXMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgKGVudGl0eSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjb2wuZ2V0RW50aXR5VmFsdWUoZW50aXR5KSAhPT0gXCJ1bmRlZmluZWRcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgIC5pbnNlcnQoKVxuICAgICAgICAgICAgLmludG8odGFyZ2V0KVxuICAgICAgICAgICAgLnZhbHVlcyhlbnRpdGllcylcbiAgICAgICAgICAgIC5vclVwZGF0ZShcbiAgICAgICAgICAgICAgICBbLi4uY29uZmxpY3RDb2x1bW5zLCAuLi5vdmVyd3JpdGVDb2x1bW5zXS5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChjb2wpID0+IGNvbC5kYXRhYmFzZU5hbWUsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb25mbGljdENvbHVtbnMubWFwKChjb2wpID0+IGNvbC5kYXRhYmFzZU5hbWUpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc2tpcFVwZGF0ZUlmTm9WYWx1ZXNDaGFuZ2VkOlxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5za2lwVXBkYXRlSWZOb1ZhbHVlc0NoYW5nZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGVudGl0eSBwYXJ0aWFsbHkuIEVudGl0eSBjYW4gYmUgZm91bmQgYnkgYSBnaXZlbiBjb25kaXRpb24ocykuXG4gICAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IFVQREFURSBxdWVyeS5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIENvbmRpdGlvbihzKSBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICovXG4gICAgdXBkYXRlPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICB0YXJnZXQ6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBjcml0ZXJpYTpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8IHN0cmluZ1tdXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBudW1iZXJbXVxuICAgICAgICAgICAgfCBEYXRlXG4gICAgICAgICAgICB8IERhdGVbXVxuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgICAgICAgIHwgYW55LFxuICAgICAgICBwYXJ0aWFsRW50aXR5OiBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT4sXG4gICAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IFwiXCIgfHxcbiAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGNyaXRlcmlhKSAmJiBjcml0ZXJpYS5sZW5ndGggPT09IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBFbXB0eSBjcml0ZXJpYShzKSBhcmUgbm90IGFsbG93ZWQgZm9yIHRoZSB1cGRhdGUgbWV0aG9kLmAsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBjcml0ZXJpYSA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAudXBkYXRlKHRhcmdldClcbiAgICAgICAgICAgICAgICAuc2V0KHBhcnRpYWxFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlSW5JZHMoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAudXBkYXRlKHRhcmdldClcbiAgICAgICAgICAgICAgICAuc2V0KHBhcnRpYWxFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlKGNyaXRlcmlhKVxuICAgICAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgZW50aXRpZXMgYnkgYSBnaXZlbiBjb25kaXRpb24ocykuXG4gICAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IERFTEVURSBxdWVyeS5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIENvbmRpdGlvbihzKSBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICovXG4gICAgZGVsZXRlPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGNyaXRlcmlhOlxuICAgICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICAgIHwgc3RyaW5nW11cbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICB8IG51bWJlcltdXG4gICAgICAgICAgICB8IERhdGVcbiAgICAgICAgICAgIHwgRGF0ZVtdXG4gICAgICAgICAgICB8IE9iamVjdElEXG4gICAgICAgICAgICB8IE9iamVjdElEW11cbiAgICAgICAgICAgIHwgYW55LFxuICAgICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IG51bGwgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSBcIlwiIHx8XG4gICAgICAgICAgICAoQXJyYXkuaXNBcnJheShjcml0ZXJpYSkgJiYgY3JpdGVyaWEubGVuZ3RoID09PSAwKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICAgICAgICBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRW1wdHkgY3JpdGVyaWEocykgYXJlIG5vdCBhbGxvd2VkIGZvciB0aGUgZGVsZXRlIG1ldGhvZC5gLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgY3JpdGVyaWEgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICAgIHR5cGVvZiBjcml0ZXJpYSA9PT0gXCJudW1iZXJcIiB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGNyaXRlcmlhKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAgICAgLmZyb20odGFyZ2V0T3JFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlSW5JZHMoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmUoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgZW50aXRpZXMgYnkgYSBnaXZlbiBjb25kaXRpb24ocykuXG4gICAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IERFTEVURSBxdWVyeS5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIENvbmRpdGlvbihzKSBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICovXG4gICAgc29mdERlbGV0ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBjcml0ZXJpYTpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8IHN0cmluZ1tdXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBudW1iZXJbXVxuICAgICAgICAgICAgfCBEYXRlXG4gICAgICAgICAgICB8IERhdGVbXVxuICAgICAgICAgICAgfCBPYmplY3RJRFxuICAgICAgICAgICAgfCBPYmplY3RJRFtdXG4gICAgICAgICAgICB8IGFueSxcbiAgICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSBudWxsIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gXCJcIiB8fFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpICYmIGNyaXRlcmlhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEVtcHR5IGNyaXRlcmlhKHMpIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhlIGRlbGV0ZSBtZXRob2QuYCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgICAgICB0eXBlb2YgY3JpdGVyaWEgPT09IFwibnVtYmVyXCIgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjcml0ZXJpYSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5zb2Z0RGVsZXRlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmVJbklkcyhjcml0ZXJpYSlcbiAgICAgICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5zb2Z0RGVsZXRlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmUoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZXMgZW50aXRpZXMgYnkgYSBnaXZlbiBjb25kaXRpb24ocykuXG4gICAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IERFTEVURSBxdWVyeS5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIENvbmRpdGlvbihzKSBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICovXG4gICAgcmVzdG9yZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBjcml0ZXJpYTpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8IHN0cmluZ1tdXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBudW1iZXJbXVxuICAgICAgICAgICAgfCBEYXRlXG4gICAgICAgICAgICB8IERhdGVbXVxuICAgICAgICAgICAgfCBPYmplY3RJRFxuICAgICAgICAgICAgfCBPYmplY3RJRFtdXG4gICAgICAgICAgICB8IGFueSxcbiAgICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSBudWxsIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gXCJcIiB8fFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpICYmIGNyaXRlcmlhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEVtcHR5IGNyaXRlcmlhKHMpIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhlIGRlbGV0ZSBtZXRob2QuYCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgICAgICB0eXBlb2YgY3JpdGVyaWEgPT09IFwibnVtYmVyXCIgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjcml0ZXJpYSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5yZXN0b3JlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmVJbklkcyhjcml0ZXJpYSlcbiAgICAgICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5yZXN0b3JlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmUoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ291bnRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gb3B0aW9ucy5cbiAgICAgKiBVc2VmdWwgZm9yIHBhZ2luYXRpb24uXG4gICAgICovXG4gICAgY291bnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgb3B0aW9ucz86IEZpbmRNYW55T3B0aW9uczxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoXG4gICAgICAgICAgICBlbnRpdHlDbGFzcyxcbiAgICAgICAgICAgIEZpbmRPcHRpb25zVXRpbHMuZXh0cmFjdEZpbmRNYW55T3B0aW9uc0FsaWFzKG9wdGlvbnMpIHx8XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEubmFtZSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKG9wdGlvbnMgfHwge30pXG4gICAgICAgICAgICAuZ2V0Q291bnQoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAgICogVXNlZnVsIGZvciBwYWdpbmF0aW9uLlxuICAgICAqL1xuICAgIGNvdW50Qnk8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICAgICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoZW50aXR5Q2xhc3MsIG1ldGFkYXRhLm5hbWUpXG4gICAgICAgICAgICAuc2V0RmluZE9wdGlvbnMoeyB3aGVyZSB9KVxuICAgICAgICAgICAgLmdldENvdW50KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIG9wdGlvbnM/OiBGaW5kTWFueU9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihcbiAgICAgICAgICAgIGVudGl0eUNsYXNzIGFzIGFueSxcbiAgICAgICAgICAgIEZpbmRPcHRpb25zVXRpbHMuZXh0cmFjdEZpbmRNYW55T3B0aW9uc0FsaWFzKG9wdGlvbnMpIHx8XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEubmFtZSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKG9wdGlvbnMgfHwge30pXG4gICAgICAgICAgICAuZ2V0TWFueSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBmaW5kIG9wdGlvbnMuXG4gICAgICovXG4gICAgYXN5bmMgZmluZEJ5PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIHdoZXJlOiBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4gfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT5bXSxcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihcbiAgICAgICAgICAgIGVudGl0eUNsYXNzIGFzIGFueSxcbiAgICAgICAgICAgIG1ldGFkYXRhLm5hbWUsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zZXRGaW5kT3B0aW9ucyh7IHdoZXJlOiB3aGVyZSB9KVxuICAgICAgICAgICAgLmdldE1hbnkoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgICAqIEFsc28gY291bnRzIGFsbCBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMsXG4gICAgICogYnV0IGlnbm9yZXMgcGFnaW5hdGlvbiBzZXR0aW5ncyAoZnJvbSBhbmQgdGFrZSBvcHRpb25zKS5cbiAgICAgKi9cbiAgICBmaW5kQW5kQ291bnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgb3B0aW9ucz86IEZpbmRNYW55T3B0aW9uczxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8W0VudGl0eVtdLCBudW1iZXJdPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihcbiAgICAgICAgICAgIGVudGl0eUNsYXNzIGFzIGFueSxcbiAgICAgICAgICAgIEZpbmRPcHRpb25zVXRpbHMuZXh0cmFjdEZpbmRNYW55T3B0aW9uc0FsaWFzKG9wdGlvbnMpIHx8XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEubmFtZSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKG9wdGlvbnMgfHwge30pXG4gICAgICAgICAgICAuZ2V0TWFueUFuZENvdW50KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIFdIRVJFIGNvbmRpdGlvbnMuXG4gICAgICogQWxzbyBjb3VudHMgYWxsIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gY29uZGl0aW9ucyxcbiAgICAgKiBidXQgaWdub3JlcyBwYWdpbmF0aW9uIHNldHRpbmdzIChmcm9tIGFuZCB0YWtlIG9wdGlvbnMpLlxuICAgICAqL1xuICAgIGZpbmRBbmRDb3VudEJ5PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIHdoZXJlOiBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4gfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT5bXSxcbiAgICApOiBQcm9taXNlPFtFbnRpdHlbXSwgbnVtYmVyXT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oXG4gICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBhbnksXG4gICAgICAgICAgICBtZXRhZGF0YS5uYW1lLFxuICAgICAgICApXG4gICAgICAgICAgICAuc2V0RmluZE9wdGlvbnMoeyB3aGVyZSB9KVxuICAgICAgICAgICAgLmdldE1hbnlBbmRDb3VudCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZW50aXRpZXMgd2l0aCBpZHMuXG4gICAgICogT3B0aW9uYWxseSBmaW5kIG9wdGlvbnMgb3IgY29uZGl0aW9ucyBjYW4gYmUgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBgZmluZEJ5YCBtZXRob2QgaW5zdGVhZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBJbmAgb3BlcmF0b3IsIGZvciBleGFtcGxlOlxuICAgICAqXG4gICAgICogLmZpbmRCeSh7XG4gICAgICogICAgIGlkOiBJbihbMSwgMiwgM10pXG4gICAgICogfSlcbiAgICAgKi9cbiAgICBhc3luYyBmaW5kQnlJZHM8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgaWRzOiBhbnlbXSxcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPiB7XG5cbiAgICAgICAgaWYgKCFpZHMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKVxuXG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihcbiAgICAgICAgICAgIGVudGl0eUNsYXNzIGFzIGFueSxcbiAgICAgICAgICAgIG1ldGFkYXRhLm5hbWUsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5hbmRXaGVyZUluSWRzKGlkcylcbiAgICAgICAgICAgIC5nZXRNYW55KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBmaXJzdCBlbnRpdHkgYnkgYSBnaXZlbiBmaW5kIG9wdGlvbnMuXG4gICAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmV0dXJucyBudWxsLlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRPbmU8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgb3B0aW9uczogRmluZE9uZU9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPEVudGl0eSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG5cblxuICAgICAgICBsZXQgYWxpYXM6IHN0cmluZyA9IG1ldGFkYXRhLm5hbWVcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5qb2luKSB7XG4gICAgICAgICAgICBhbGlhcyA9IG9wdGlvbnMuam9pbi5hbGlhc1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLndoZXJlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgc2VsZWN0aW9uIGNvbmRpdGlvbnMgaW4gb3JkZXIgdG8gZmluZCBhIHNpbmdsZSByb3cuYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oZW50aXR5Q2xhc3MsIGFsaWFzKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIHRha2U6IDEsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmdldE9uZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiB3aGVyZSBjb25kaXRpb24uXG4gICAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmV0dXJucyBudWxsLlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRPbmVCeTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICAgKTogUHJvbWlzZTxFbnRpdHkgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oZW50aXR5Q2xhc3MsIG1ldGFkYXRhLm5hbWUpXG4gICAgICAgICAgICAuc2V0RmluZE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIHdoZXJlLFxuICAgICAgICAgICAgICAgIHRha2U6IDEsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmdldE9uZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiBpZC5cbiAgICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZXR1cm5zIG51bGwuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGZpbmRPbmVCeWAgbWV0aG9kIGluc3RlYWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSW5gIG9wZXJhdG9yLCBmb3IgZXhhbXBsZTpcbiAgICAgKlxuICAgICAqIC5maW5kT25lQnkoe1xuICAgICAqICAgICBpZDogMSAvLyB3aGVyZSBcImlkXCIgaXMgeW91ciBwcmltYXJ5IGNvbHVtbiBuYW1lXG4gICAgICogfSlcbiAgICAgKi9cbiAgICBhc3luYyBmaW5kT25lQnlJZDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBpZDogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZSB8IE9iamVjdElELFxuICAgICk6IFByb21pc2U8RW50aXR5IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcblxuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+KGVudGl0eUNsYXNzLCBtZXRhZGF0YS5uYW1lKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICB0YWtlOiAxLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aGVyZUluSWRzKG1ldGFkYXRhLmVuc3VyZUVudGl0eUlkTWFwKGlkKSlcbiAgICAgICAgICAgIC5nZXRPbmUoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGZpcnN0IGVudGl0eSBieSBhIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZWplY3RzIHdpdGggZXJyb3IuXG4gICAgICovXG4gICAgYXN5bmMgZmluZE9uZU9yRmFpbDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBvcHRpb25zOiBGaW5kT25lT3B0aW9uczxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRPbmU8RW50aXR5PihlbnRpdHlDbGFzcyBhcyBhbnksIG9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEVudGl0eU5vdEZvdW5kRXJyb3IoZW50aXR5Q2xhc3MsIG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpXG4gICAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiB3aGVyZSBjb25kaXRpb24uXG4gICAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmVqZWN0cyB3aXRoIGVycm9yLlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRPbmVCeU9yRmFpbDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICAgKTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZE9uZUJ5PEVudGl0eT4oZW50aXR5Q2xhc3MgYXMgYW55LCB3aGVyZSkudGhlbihcbiAgICAgICAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRW50aXR5Tm90Rm91bmRFcnJvcihlbnRpdHlDbGFzcywgd2hlcmUpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpXG4gICAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBnaXZlbiB0YWJsZSAodHJ1bmNhdGVzL2Ryb3BzIGl0KS5cbiAgICAgKlxuICAgICAqIE5vdGU6IHRoaXMgbWV0aG9kIHVzZXMgVFJVTkNBVEUgYW5kIG1heSBub3Qgd29yayBhcyB5b3UgZXhwZWN0IGluIHRyYW5zYWN0aW9ucyBvbiBzb21lIHBsYXRmb3Jtcy5cbiAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81OTcyNzM4LzkyNTE1MVxuICAgICAqL1xuICAgIGFzeW5jIGNsZWFyPEVudGl0eT4oZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICBjb25zdCBxdWVyeVJ1bm5lciA9XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyIHx8IHRoaXMuY29ubmVjdGlvbi5jcmVhdGVRdWVyeVJ1bm5lcigpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnlSdW5uZXIuY2xlYXJUYWJsZShtZXRhZGF0YS50YWJsZVBhdGgpIC8vIGF3YWl0IGlzIG5lZWRlZCBoZXJlIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGZpbmFsbHlcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5xdWVyeVJ1bm5lcikgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmNyZW1lbnRzIHNvbWUgY29sdW1uIGJ5IHByb3ZpZGVkIHZhbHVlIG9mIHRoZSBlbnRpdGllcyBtYXRjaGVkIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAgICovXG4gICAgYXN5bmMgaW5jcmVtZW50PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGNvbmRpdGlvbnM6IGFueSxcbiAgICAgICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICAgICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG1ldGFkYXRhLmZpbmRDb2x1bW5XaXRoUHJvcGVydHlQYXRoKHByb3BlcnR5UGF0aClcbiAgICAgICAgaWYgKCFjb2x1bW4pXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgIGBDb2x1bW4gJHtwcm9wZXJ0eVBhdGh9IHdhcyBub3QgZm91bmQgaW4gJHttZXRhZGF0YS50YXJnZXROYW1lfSBlbnRpdHkuYCxcbiAgICAgICAgICAgIClcblxuICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKHZhbHVlKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKGBWYWx1ZSBcIiR7dmFsdWV9XCIgaXMgbm90IGEgbnVtYmVyLmApXG5cblxuICAgICAgICBjb25zdCB2YWx1ZXM6IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PiA9IHByb3BlcnR5UGF0aFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnJlZHVjZVJpZ2h0KFxuICAgICAgICAgICAgICAgICh2YWx1ZSwga2V5KSA9PiAoeyBba2V5XTogdmFsdWUgfSBhcyBhbnkpLFxuICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIuZXNjYXBlKGNvbHVtbi5kYXRhYmFzZU5hbWUpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgKyBcIiArXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+KGVudGl0eUNsYXNzIGFzIGFueSwgXCJlbnRpdHlcIilcbiAgICAgICAgICAgIC51cGRhdGUoZW50aXR5Q2xhc3MpXG4gICAgICAgICAgICAuc2V0KHZhbHVlcylcbiAgICAgICAgICAgIC53aGVyZShjb25kaXRpb25zKVxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY3JlbWVudHMgc29tZSBjb2x1bW4gYnkgcHJvdmlkZWQgdmFsdWUgb2YgdGhlIGVudGl0aWVzIG1hdGNoZWQgZ2l2ZW4gY29uZGl0aW9ucy5cbiAgICAgKi9cbiAgICBhc3luYyBkZWNyZW1lbnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgY29uZGl0aW9uczogYW55LFxuICAgICAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgICAgICAgdmFsdWU6IG51bWJlciB8IHN0cmluZyxcbiAgICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgY29uc3QgY29sdW1uID0gbWV0YWRhdGEuZmluZENvbHVtbldpdGhQcm9wZXJ0eVBhdGgocHJvcGVydHlQYXRoKVxuICAgICAgICBpZiAoIWNvbHVtbilcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgYENvbHVtbiAke3Byb3BlcnR5UGF0aH0gd2FzIG5vdCBmb3VuZCBpbiAke21ldGFkYXRhLnRhcmdldE5hbWV9IGVudGl0eS5gLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgIGlmIChpc05hTihOdW1iZXIodmFsdWUpKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlT1JNRXJyb3IoYFZhbHVlIFwiJHt2YWx1ZX1cIiBpcyBub3QgYSBudW1iZXIuYClcblxuXG4gICAgICAgIGNvbnN0IHZhbHVlczogUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+ID0gcHJvcGVydHlQYXRoXG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAucmVkdWNlUmlnaHQoXG4gICAgICAgICAgICAgICAgKHZhbHVlLCBrZXkpID0+ICh7IFtrZXldOiB2YWx1ZSB9IGFzIGFueSksXG4gICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmRyaXZlci5lc2NhcGUoY29sdW1uLmRhdGFiYXNlTmFtZSkgK1xuICAgICAgICAgICAgICAgICAgICBcIiAtIFwiICtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oZW50aXR5Q2xhc3MgYXMgYW55LCBcImVudGl0eVwiKVxuICAgICAgICAgICAgLnVwZGF0ZShlbnRpdHlDbGFzcylcbiAgICAgICAgICAgIC5zZXQodmFsdWVzKVxuICAgICAgICAgICAgLndoZXJlKGNvbmRpdGlvbnMpXG4gICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyByZXBvc2l0b3J5IGZvciB0aGUgZ2l2ZW4gZW50aXR5IGNsYXNzIG9yIG5hbWUuXG4gICAgICogSWYgc2luZ2xlIGRhdGFiYXNlIGNvbm5lY3Rpb24gbW9kZSBpcyB1c2VkLCB0aGVuIHJlcG9zaXRvcnkgaXMgb2J0YWluZWQgZnJvbSB0aGVcbiAgICAgKiByZXBvc2l0b3J5IGFnZ3JlZ2F0b3IsIHdoZXJlIGVhY2ggcmVwb3NpdG9yeSBpcyBpbmRpdmlkdWFsbHkgY3JlYXRlZCBmb3IgdGhpcyBlbnRpdHkgbWFuYWdlci5cbiAgICAgKiBXaGVuIHNpbmdsZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIG5vdCB1c2VkLCByZXBvc2l0b3J5IGlzIGJlaW5nIG9idGFpbmVkIGZyb20gdGhlIGNvbm5lY3Rpb24uXG4gICAgICovXG4gICAgZ2V0UmVwb3NpdG9yeTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICApOiBSZXBvc2l0b3J5PEVudGl0eT4ge1xuXG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLnJlcG9zaXRvcmllcy5maW5kKFxuICAgICAgICAgICAgKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkudGFyZ2V0ID09PSB0YXJnZXQsXG4gICAgICAgIClcbiAgICAgICAgaWYgKHJlcG9zaXRvcnkpIHJldHVybiByZXBvc2l0b3J5XG5cblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwibW9uZ29kYlwiKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgICAgICByZXR1cm4gKHZvaWQgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuZXdSZXBvc2l0b3J5ID0gbmV3IFJlcG9zaXRvcnk8YW55PihcbiAgICAgICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgdGhpcy5yZXBvc2l0b3JpZXMucHVzaChuZXdSZXBvc2l0b3J5KVxuICAgICAgICAgICAgcmV0dXJuIG5ld1JlcG9zaXRvcnlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdHJlZSByZXBvc2l0b3J5IGZvciB0aGUgZ2l2ZW4gZW50aXR5IGNsYXNzIG9yIG5hbWUuXG4gICAgICogSWYgc2luZ2xlIGRhdGFiYXNlIGNvbm5lY3Rpb24gbW9kZSBpcyB1c2VkLCB0aGVuIHJlcG9zaXRvcnkgaXMgb2J0YWluZWQgZnJvbSB0aGVcbiAgICAgKiByZXBvc2l0b3J5IGFnZ3JlZ2F0b3IsIHdoZXJlIGVhY2ggcmVwb3NpdG9yeSBpcyBpbmRpdmlkdWFsbHkgY3JlYXRlZCBmb3IgdGhpcyBlbnRpdHkgbWFuYWdlci5cbiAgICAgKiBXaGVuIHNpbmdsZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIG5vdCB1c2VkLCByZXBvc2l0b3J5IGlzIGJlaW5nIG9idGFpbmVkIGZyb20gdGhlIGNvbm5lY3Rpb24uXG4gICAgICovXG4gICAgZ2V0VHJlZVJlcG9zaXRvcnk8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldDogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgKTogVHJlZVJlcG9zaXRvcnk8RW50aXR5PiB7XG5cbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5kcml2ZXIudHJlZVN1cHBvcnQgPT09IGZhbHNlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFRyZWVSZXBvc2l0b3J5Tm90U3VwcG9ydGVkRXJyb3IodGhpcy5jb25uZWN0aW9uLmRyaXZlcilcblxuXG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLnRyZWVSZXBvc2l0b3JpZXMuZmluZChcbiAgICAgICAgICAgIChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5LnRhcmdldCA9PT0gdGFyZ2V0LFxuICAgICAgICApXG4gICAgICAgIGlmIChyZXBvc2l0b3J5KSByZXR1cm4gcmVwb3NpdG9yeVxuXG5cbiAgICAgICAgY29uc3QgbmV3UmVwb3NpdG9yeSA9IG5ldyBUcmVlUmVwb3NpdG9yeSh0YXJnZXQsIHRoaXMsIHRoaXMucXVlcnlSdW5uZXIpXG4gICAgICAgIHRoaXMudHJlZVJlcG9zaXRvcmllcy5wdXNoKG5ld1JlcG9zaXRvcnkpXG4gICAgICAgIHJldHVybiBuZXdSZXBvc2l0b3J5XG4gICAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZXBvc2l0b3J5IGluc3RhbmNlIG91dCBvZiBhIGdpdmVuIFJlcG9zaXRvcnkgYW5kXG4gICAgICogc2V0cyBjdXJyZW50IEVudGl0eU1hbmFnZXIgaW5zdGFuY2UgdG8gaXQuIFVzZWQgdG8gd29yayB3aXRoIGN1c3RvbSByZXBvc2l0b3JpZXNcbiAgICAgKiBpbiB0cmFuc2FjdGlvbnMuXG4gICAgICovXG4gICAgd2l0aFJlcG9zaXRvcnk8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbCwgUiBleHRlbmRzIFJlcG9zaXRvcnk8YW55Pj4oXG4gICAgICAgIHJlcG9zaXRvcnk6IFIgJiBSZXBvc2l0b3J5PEVudGl0eT4sXG4gICAgKTogUiB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnlDb25zdHJ1Y3RvciA9XG4gICAgICAgICAgICByZXBvc2l0b3J5LmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBSZXBvc2l0b3J5XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0LCBtYW5hZ2VyLCBxdWVyeVJ1bm5lciwgLi4ub3RoZXJSZXBvc2l0b3J5UHJvcGVydGllcyB9ID1cbiAgICAgICAgICAgIHJlcG9zaXRvcnlcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICBuZXcgcmVwb3NpdG9yeUNvbnN0cnVjdG9yKHJlcG9zaXRvcnkudGFyZ2V0LCB0aGlzKSBhcyBSLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLm90aGVyUmVwb3NpdG9yeVByb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBjdXN0b20gZW50aXR5IHJlcG9zaXRvcnkgbWFya2VkIHdpdGggQEVudGl0eVJlcG9zaXRvcnkgZGVjb3JhdG9yLlxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIFJlcG9zaXRvcnkuZXh0ZW5kIHRvIGNyZWF0ZSBjdXN0b20gcmVwb3NpdG9yaWVzXG4gICAgICovXG4gICAgZ2V0Q3VzdG9tUmVwb3NpdG9yeTxUPihjdXN0b21SZXBvc2l0b3J5OiBPYmplY3RUeXBlPFQ+KTogVCB7XG4gICAgICAgIGNvbnN0IGVudGl0eVJlcG9zaXRvcnlNZXRhZGF0YUFyZ3MgPVxuICAgICAgICAgICAgZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSgpLmVudGl0eVJlcG9zaXRvcmllcy5maW5kKChyZXBvc2l0b3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS50YXJnZXQgPT09XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgY3VzdG9tUmVwb3NpdG9yeSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGN1c3RvbVJlcG9zaXRvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKGN1c3RvbVJlcG9zaXRvcnkgYXMgYW55KS5jb25zdHJ1Y3RvcilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICBpZiAoIWVudGl0eVJlcG9zaXRvcnlNZXRhZGF0YUFyZ3MpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tUmVwb3NpdG9yeU5vdEZvdW5kRXJyb3IoY3VzdG9tUmVwb3NpdG9yeSlcblxuICAgICAgICBjb25zdCBlbnRpdHlNZXRhZGF0YSA9IGVudGl0eVJlcG9zaXRvcnlNZXRhZGF0YUFyZ3MuZW50aXR5XG4gICAgICAgICAgICA/IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlSZXBvc2l0b3J5TWV0YWRhdGFBcmdzLmVudGl0eSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZSA9XG4gICAgICAgICAgICBuZXcgKGVudGl0eVJlcG9zaXRvcnlNZXRhZGF0YUFyZ3MudGFyZ2V0IGFzIGFueSkoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgIClcblxuXG5cbiAgICAgICAgaWYgKGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZSBpbnN0YW5jZW9mIEFic3RyYWN0UmVwb3NpdG9yeSkge1xuICAgICAgICAgICAgaWYgKCEoZW50aXR5UmVwb3NpdG9yeUluc3RhbmNlIGFzIGFueSlbXCJtYW5hZ2VyXCJdKVxuICAgICAgICAgICAgICAgIChlbnRpdHlSZXBvc2l0b3J5SW5zdGFuY2UgYXMgYW55KVtcIm1hbmFnZXJcIl0gPSB0aGlzXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDdXN0b21SZXBvc2l0b3J5Q2Fubm90SW5oZXJpdFJlcG9zaXRvcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tUmVwb3NpdG9yeSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA7KGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZSBhcyBhbnkpW1wibWFuYWdlclwiXSA9IHRoaXNcbiAgICAgICAgICAgIDsoZW50aXR5UmVwb3NpdG9yeUluc3RhbmNlIGFzIGFueSlbXCJtZXRhZGF0YVwiXSA9IGVudGl0eU1ldGFkYXRhXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW50aXR5UmVwb3NpdG9yeUluc3RhbmNlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsZWFzZXMgYWxsIHJlc291cmNlcyB1c2VkIGJ5IGVudGl0eSBtYW5hZ2VyLlxuICAgICAqIFRoaXMgaXMgdXNlZCB3aGVuIGVudGl0eSBtYW5hZ2VyIGlzIGNyZWF0ZWQgd2l0aCBhIHNpbmdsZSBxdWVyeSBydW5uZXIsXG4gICAgICogYW5kIHRoaXMgc2luZ2xlIHF1ZXJ5IHJ1bm5lciBuZWVkcyB0byBiZSByZWxlYXNlZCBhZnRlciBqb2Igd2l0aCBlbnRpdHkgbWFuYWdlciBpcyBkb25lLlxuICAgICAqL1xuICAgIGFzeW5jIHJlbGVhc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5xdWVyeVJ1bm5lcikgdGhyb3cgbmV3IE5vTmVlZFRvUmVsZWFzZUVudGl0eU1hbmFnZXJFcnJvcigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlSdW5uZXIucmVsZWFzZSgpXG4gICAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi10eXBlb3JtIGxpYi90eXBlb3JtL2VudGl0eS1tYW5hZ2VyL0VudGl0eU1hbmFnZXIudHMiXX0=