velocious 1.0.568 → 1.0.570

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 (152) hide show
  1. package/README.md +30 -0
  2. package/build/configuration.js +36 -0
  3. package/build/database/drivers/base.js +244 -93
  4. package/build/database/drivers/mssql/index.js +10 -7
  5. package/build/database/drivers/mysql/index.js +10 -5
  6. package/build/database/drivers/pgsql/index.js +4 -4
  7. package/build/database/drivers/sqlite/base.js +2 -2
  8. package/build/database/drivers/sqlite/connection-sql-js.js +62 -2
  9. package/build/database/drivers/sqlite/index.web.js +74 -0
  10. package/build/database/operation-connection.js +121 -0
  11. package/build/database/operation-lease.js +47 -0
  12. package/build/database/operation.js +150 -0
  13. package/build/database/pool/base.js +26 -1
  14. package/build/database/pool/single-multi-use.js +49 -0
  15. package/build/database/query/model-class-query.js +38 -7
  16. package/build/database/query/preloader/belongs-to.js +3 -2
  17. package/build/database/query/preloader/has-many.js +4 -3
  18. package/build/database/query/preloader/has-one.js +2 -1
  19. package/build/database/query/preloader/query-for-model.js +17 -0
  20. package/build/database/query/query-data.js +12 -3
  21. package/build/database/query/with-count.js +5 -3
  22. package/build/database/record/acts-as-list.js +11 -8
  23. package/build/database/record/attachments/store.js +15 -11
  24. package/build/database/record/auditing.js +12 -9
  25. package/build/database/record/counter-cache-magnitude.js +5 -3
  26. package/build/database/record/index.js +95 -14
  27. package/build/database/record/instance-relationships/belongs-to.js +4 -2
  28. package/build/database/record/instance-relationships/has-many.js +7 -5
  29. package/build/database/record/instance-relationships/has-one.js +4 -2
  30. package/build/database/record/validators/uniqueness.js +3 -2
  31. package/build/frontend-models/websocket-publishers.js +2 -2
  32. package/build/src/configuration.d.ts +12 -0
  33. package/build/src/configuration.d.ts.map +1 -1
  34. package/build/src/configuration.js +35 -1
  35. package/build/src/database/drivers/base.d.ts +96 -23
  36. package/build/src/database/drivers/base.d.ts.map +1 -1
  37. package/build/src/database/drivers/base.js +230 -90
  38. package/build/src/database/drivers/mssql/index.d.ts +4 -1
  39. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  40. package/build/src/database/drivers/mssql/index.js +11 -8
  41. package/build/src/database/drivers/mysql/index.d.ts +2 -1
  42. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  43. package/build/src/database/drivers/mysql/index.js +10 -6
  44. package/build/src/database/drivers/pgsql/index.d.ts +2 -1
  45. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  46. package/build/src/database/drivers/pgsql/index.js +5 -5
  47. package/build/src/database/drivers/sqlite/base.d.ts +1 -1
  48. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  49. package/build/src/database/drivers/sqlite/base.js +3 -3
  50. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +20 -0
  51. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
  52. package/build/src/database/drivers/sqlite/connection-sql-js.js +56 -3
  53. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  54. package/build/src/database/drivers/sqlite/index.web.js +64 -1
  55. package/build/src/database/operation-connection.d.ts +67 -0
  56. package/build/src/database/operation-connection.d.ts.map +1 -0
  57. package/build/src/database/operation-connection.js +102 -0
  58. package/build/src/database/operation-lease.d.ts +27 -0
  59. package/build/src/database/operation-lease.d.ts.map +1 -0
  60. package/build/src/database/operation-lease.js +44 -0
  61. package/build/src/database/operation.d.ts +85 -0
  62. package/build/src/database/operation.d.ts.map +1 -0
  63. package/build/src/database/operation.js +132 -0
  64. package/build/src/database/pool/base.d.ts +14 -0
  65. package/build/src/database/pool/base.d.ts.map +1 -1
  66. package/build/src/database/pool/base.js +24 -2
  67. package/build/src/database/pool/single-multi-use.d.ts +1 -0
  68. package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
  69. package/build/src/database/pool/single-multi-use.js +49 -1
  70. package/build/src/database/query/model-class-query.d.ts +14 -0
  71. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  72. package/build/src/database/query/model-class-query.js +32 -8
  73. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  74. package/build/src/database/query/preloader/belongs-to.js +4 -3
  75. package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
  76. package/build/src/database/query/preloader/has-many.js +5 -4
  77. package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
  78. package/build/src/database/query/preloader/has-one.js +3 -2
  79. package/build/src/database/query/preloader/query-for-model.d.ts +10 -0
  80. package/build/src/database/query/preloader/query-for-model.d.ts.map +1 -0
  81. package/build/src/database/query/preloader/query-for-model.js +16 -0
  82. package/build/src/database/query/query-data.d.ts.map +1 -1
  83. package/build/src/database/query/query-data.js +13 -4
  84. package/build/src/database/query/with-count.d.ts.map +1 -1
  85. package/build/src/database/query/with-count.js +6 -4
  86. package/build/src/database/record/acts-as-list.js +12 -9
  87. package/build/src/database/record/attachments/attachment-record.d.ts +9 -0
  88. package/build/src/database/record/attachments/attachment-record.d.ts.map +1 -1
  89. package/build/src/database/record/attachments/store.d.ts +4 -2
  90. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  91. package/build/src/database/record/attachments/store.js +16 -12
  92. package/build/src/database/record/auditing.d.ts.map +1 -1
  93. package/build/src/database/record/auditing.js +13 -10
  94. package/build/src/database/record/counter-cache-magnitude.js +6 -4
  95. package/build/src/database/record/index.d.ts +42 -2
  96. package/build/src/database/record/index.d.ts.map +1 -1
  97. package/build/src/database/record/index.js +87 -15
  98. package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
  99. package/build/src/database/record/instance-relationships/belongs-to.js +4 -3
  100. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  101. package/build/src/database/record/instance-relationships/has-many.js +7 -5
  102. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  103. package/build/src/database/record/instance-relationships/has-one.js +4 -3
  104. package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
  105. package/build/src/database/record/validators/uniqueness.js +4 -3
  106. package/build/src/frontend-models/websocket-publishers.js +3 -3
  107. package/build/src/sync/server-sequence-allocator.d.ts +16 -4
  108. package/build/src/sync/server-sequence-allocator.d.ts.map +1 -1
  109. package/build/src/sync/server-sequence-allocator.js +37 -11
  110. package/build/src/sync/sync-client.d.ts.map +1 -1
  111. package/build/src/sync/sync-client.js +7 -3
  112. package/build/src/sync/sync-publisher.d.ts +2 -1
  113. package/build/src/sync/sync-publisher.d.ts.map +1 -1
  114. package/build/src/sync/sync-publisher.js +11 -6
  115. package/build/sync/server-sequence-allocator.js +43 -10
  116. package/build/sync/sync-client.js +6 -2
  117. package/build/sync/sync-publisher.js +10 -5
  118. package/build/tsconfig.tsbuildinfo +1 -1
  119. package/package.json +1 -1
  120. package/src/configuration.js +36 -0
  121. package/src/database/drivers/base.js +244 -93
  122. package/src/database/drivers/mssql/index.js +10 -7
  123. package/src/database/drivers/mysql/index.js +10 -5
  124. package/src/database/drivers/pgsql/index.js +4 -4
  125. package/src/database/drivers/sqlite/base.js +2 -2
  126. package/src/database/drivers/sqlite/connection-sql-js.js +62 -2
  127. package/src/database/drivers/sqlite/index.web.js +74 -0
  128. package/src/database/operation-connection.js +121 -0
  129. package/src/database/operation-lease.js +47 -0
  130. package/src/database/operation.js +150 -0
  131. package/src/database/pool/base.js +26 -1
  132. package/src/database/pool/single-multi-use.js +49 -0
  133. package/src/database/query/model-class-query.js +38 -7
  134. package/src/database/query/preloader/belongs-to.js +3 -2
  135. package/src/database/query/preloader/has-many.js +4 -3
  136. package/src/database/query/preloader/has-one.js +2 -1
  137. package/src/database/query/preloader/query-for-model.js +17 -0
  138. package/src/database/query/query-data.js +12 -3
  139. package/src/database/query/with-count.js +5 -3
  140. package/src/database/record/acts-as-list.js +11 -8
  141. package/src/database/record/attachments/store.js +15 -11
  142. package/src/database/record/auditing.js +12 -9
  143. package/src/database/record/counter-cache-magnitude.js +5 -3
  144. package/src/database/record/index.js +95 -14
  145. package/src/database/record/instance-relationships/belongs-to.js +4 -2
  146. package/src/database/record/instance-relationships/has-many.js +7 -5
  147. package/src/database/record/instance-relationships/has-one.js +4 -2
  148. package/src/database/record/validators/uniqueness.js +3 -2
  149. package/src/frontend-models/websocket-publishers.js +2 -2
  150. package/src/sync/server-sequence-allocator.js +43 -10
  151. package/src/sync/sync-client.js +6 -2
  152. package/src/sync/sync-publisher.js +10 -5
@@ -45,20 +45,42 @@ export default class ServerSequenceAllocator {
45
45
  * parallel `next()` calls - including calls from other allocator instances
46
46
  * sharing the same table and connection - cannot interleave their insert
47
47
  * and last-insert-id reads and hand out duplicate sequences.
48
+ * @param {{connection?: import("../database/drivers/base.js").default}} [options] - Explicit record-owned connection.
48
49
  * @returns {Promise<number>} Next sequence value.
49
50
  */
50
- async next() {
51
+ async next({ connection } = {}) {
51
52
  const queueKey = `${this.databaseIdentifier}::${this.tableName}`;
52
53
  const previousAllocation = allocationQueues.get(queueKey) ?? Promise.resolve();
53
- const allocation = previousAllocation.then(() => this._allocateNext());
54
+ const allocation = previousAllocation.then(() => this._allocateNext(connection));
54
55
  allocationQueues.set(queueKey, allocation.then(() => undefined, () => undefined));
55
56
  return await allocation;
56
57
  }
58
+ /**
59
+ * Allocates for a record while preserving allocator routing and operation ownership.
60
+ * @param {import("../database/record/index.js").default} record - Record receiving the sequence.
61
+ * @returns {Promise<number>} Next sequence value.
62
+ */
63
+ async _nextForRecord(record) {
64
+ const operation = record.databaseOperation();
65
+ if (!operation)
66
+ return await this.next();
67
+ const ModelClass = record.getModelClass();
68
+ if (this._getConfiguration() !== ModelClass._getConfiguration()) {
69
+ throw new Error("Server sequence allocator belongs to another Velocious configuration");
70
+ }
71
+ const modelDatabaseIdentifier = ModelClass.getDatabaseIdentifier();
72
+ if (this.databaseIdentifier !== modelDatabaseIdentifier) {
73
+ throw new Error(`Server sequence allocator uses database ${JSON.stringify(this.databaseIdentifier)}, not operation model database ${JSON.stringify(modelDatabaseIdentifier)}`);
74
+ }
75
+ const operationScope = operation.forModel(ModelClass);
76
+ return await this.next({ connection: operationScope.driver });
77
+ }
57
78
  /**
58
79
  * Ensures the backing table exists.
80
+ * @param {import("../database/drivers/base.js").default} [connection] - Explicit record-owned connection.
59
81
  * @returns {Promise<void>} Resolves when ready.
60
82
  */
61
- async ensureReady() {
83
+ async ensureReady(connection) {
62
84
  if (this._isReady)
63
85
  return;
64
86
  if (this._usesMemoryStorage()) {
@@ -77,7 +99,7 @@ export default class ServerSequenceAllocator {
77
99
  // transaction; otherwise the next allocation re-verifies the table.
78
100
  if (!created || !db.insideTransaction())
79
101
  this._isReady = true;
80
- });
102
+ }, connection);
81
103
  try {
82
104
  await this._readyPromise;
83
105
  }
@@ -88,10 +110,11 @@ export default class ServerSequenceAllocator {
88
110
  }
89
111
  /**
90
112
  * Allocates one sequence value after queueing.
113
+ * @param {import("../database/drivers/base.js").default} [connection] - Explicit record-owned connection.
91
114
  * @returns {Promise<number>} Allocated sequence value.
92
115
  */
93
- async _allocateNext() {
94
- await this.ensureReady();
116
+ async _allocateNext(connection) {
117
+ await this.ensureReady(connection);
95
118
  if (this._usesMemoryStorage()) {
96
119
  return ++this._memorySequence;
97
120
  }
@@ -112,7 +135,7 @@ export default class ServerSequenceAllocator {
112
135
  if (insertedId !== undefined && insertedId !== null)
113
136
  return Number(insertedId);
114
137
  return Number(await db.lastInsertID());
115
- });
138
+ }, connection);
116
139
  }
117
140
  /**
118
141
  * Builds the row payload inserted per allocation.
@@ -144,9 +167,12 @@ export default class ServerSequenceAllocator {
144
167
  * Runs a callback with a database connection.
145
168
  * @template Result
146
169
  * @param {(db: import("../database/drivers/base.js").default) => Promise<Result>} callback - Database callback.
170
+ * @param {import("../database/drivers/base.js").default} [connection] - Explicit record-owned connection.
147
171
  * @returns {Promise<Result>} Callback result.
148
172
  */
149
- async _withDb(callback) {
173
+ async _withDb(callback, connection) {
174
+ if (connection)
175
+ return await callback(connection);
150
176
  return await this._getConfiguration().ensureConnections({ databaseIdentifiers: [this.databaseIdentifier], name: "Server sequence allocator" }, async (dbs) => {
151
177
  const db = dbs[this.databaseIdentifier];
152
178
  if (!db)
@@ -201,11 +227,11 @@ export function withServerSequence(ModelClass, { allocator, column = "serverSequ
201
227
  if (typeof prototype[advanceMethodName] != "function") {
202
228
  /**
203
229
  * Assigns the next server-side sequence.
204
- * @this {Record<string, ?>}
230
+ * @this {import("../database/record/index.js").default & Record<string, ?>}
205
231
  * @returns {Promise<void>}
206
232
  */
207
233
  prototype[advanceMethodName] = async function advanceServerSequenceThroughAllocator() {
208
- this[setterMethodName](await allocator.next());
234
+ this[setterMethodName](await allocator._nextForRecord(this));
209
235
  };
210
236
  }
211
237
  ModelClass.beforeCreate(async (record) => {
@@ -217,4 +243,4 @@ export function withServerSequence(ModelClass, { allocator, column = "serverSequ
217
243
  });
218
244
  return ModelClass;
219
245
  }
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXNlcXVlbmNlLWFsbG9jYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zeW5jL3NlcnZlci1zZXF1ZW5jZS1hbGxvY2F0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sU0FBUyxNQUFNLGlDQUFpQyxDQUFBO0FBRXZEOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7QUFFbEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUMxQzs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsR0FBRyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsR0FBRyw0QkFBNEIsRUFBQyxHQUFHLEVBQUU7UUFDcEgsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFBO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUNoRSxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMs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QUksT0FBTyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxVQUFVLElBQUksT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDdEcsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsZ0JBQWdCLFFBQVEsYUFBYSxpQkFBaUIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7SUFDbkksQ0FBQztJQUVELElBQUksT0FBTyxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUN0RDs7OztXQUlHO1FBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxVQUFVLHFDQUFxQztZQUNqRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hELENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUN2Qyw4RUFBOEU7UUFDOUUsTUFBTSxhQUFhLEdBQUcsZ0NBQWdDLENBQUMsRUFBQyxnQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBRWxGLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQUUsT0FBTTtRQUUxQyxNQUFNLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUE7SUFDMUMsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBDb25maWd1cmF0aW9uIGZyb20gXCIuLi9jb25maWd1cmF0aW9uLmpzXCJcbmltcG9ydCBUYWJsZURhdGEgZnJvbSBcIi4uL2RhdGFiYXNlL3RhYmxlLWRhdGEvaW5kZXguanNcIlxuXG4vKipcbiAqIEFsbG9jYXRpb24gcXVldWVzIHBlciBkYXRhYmFzZSt0YWJsZSwgc2VyaWFsaXppbmcgaW5zZXJ0L2xhc3QtaW5zZXJ0LWlkXG4gKiBwYWlycyBhY3Jvc3MgYWxsIGFsbG9jYXRvciBpbnN0YW5jZXMgaW4gdGhpcyBwcm9jZXNzLlxuICogQHR5cGUge01hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+fVxuICovXG5jb25zdCBhbGxvY2F0aW9uUXVldWVzID0gbmV3IE1hcCgpXG5cbi8qKlxuICogQWxsb2NhdGVzIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBzZXJ2ZXIgc3luYyBzZXF1ZW5jZXMgZnJvbSBhblxuICogQVVUT19JTkNSRU1FTlQgaWQgdGFibGU6IGV2ZXJ5IGFsbG9jYXRpb24gaW5zZXJ0cyBhIHJvdyBhbmQgcmV0dXJucyB0aGVcbiAqIGRyaXZlcidzIGxhc3QtaW5zZXJ0IGlkLCBzbyBzZXF1ZW5jZXMgc3RheSB1bmlxdWUgYW5kIGluY3JlYXNpbmcgYWNyb3NzXG4gKiBwcm9jZXNzZXMgc2hhcmluZyB0aGUgc2FtZSBkYXRhYmFzZS5cbiAqXG4gKiBCYWNrZWQgYnkgYW4gYXV0by1jcmVhdGVkIGB2ZWxvY2lvdXNfc2VydmVyX3NlcXVlbmNlc2AgdGFibGUgb24gdGhlXG4gKiBjb25maWd1cmVkIGRhdGFiYXNlLCB3aXRoIGEgcHJvY2Vzcy1sb2NhbCBtZW1vcnkgY291bnRlciBmYWxsYmFjayB3aGVuIG5vXG4gKiBkYXRhYmFzZSBpcyBjb25maWd1cmVkIChtaXJyb3JpbmcgdGhlIHN5bmMgc2NvcGUgc3RvcmUpLiBBcHBzIHdpdGggYW5cbiAqIGV4aXN0aW5nIHNlcXVlbmNlIHRhYmxlIChmb3IgZXhhbXBsZSBhIGJhcmUgYGlkYC1vbmx5IEFVVE9fSU5DUkVNRU5UIHRhYmxlKVxuICogcG9pbnQgYHRhYmxlTmFtZWAgYXQgaXQgYW5kIHBhc3MgYGluc2VydERhdGE6IHt9YCB0byBpbnNlcnQgZW1wdHkgcm93cy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VydmVyU2VxdWVuY2VBbGxvY2F0b3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHNlcnZlciBzZXF1ZW5jZSBhbGxvY2F0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gW2FyZ3MuY29uZmlndXJhdGlvbl0gLSBDb25maWd1cmF0aW9uIG93bmluZyB0aGUgZGF0YWJhc2UuIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIHJlc29sdmVkIGxhemlseSBwZXIgYWxsb2NhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmRhdGFiYXNlSWRlbnRpZmllcl0gLSBEYXRhYmFzZSBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+fSBbYXJncy5pbnNlcnREYXRhXSAtIFJvdyBwYXlsb2FkIGluc2VydGVkIHBlciBhbGxvY2F0aW9uLiBEZWZhdWx0cyB0byBge2NyZWF0ZWRfYXQ6IG5ldyBEYXRlKCl9YCBtYXRjaGluZyB0aGUgYXV0by1jcmVhdGVkIHRhYmxlOyBwYXNzIGB7fWAgZm9yIGJhcmUgaWQtb25seSB0YWJsZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy50YWJsZU5hbWVdIC0gU2VxdWVuY2UgdGFibGUgbmFtZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCBkYXRhYmFzZUlkZW50aWZpZXIgPSBcImRlZmF1bHRcIiwgaW5zZXJ0RGF0YSwgdGFibGVOYW1lID0gXCJ2ZWxvY2lvdXNfc2VydmVyX3NlcXVlbmNlc1wifSA9IHt9KSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMuZGF0YWJhc2VJZGVudGlmaWVyID0gZGF0YWJhc2VJZGVudGlmaWVyXG4gICAgdGhpcy5pbnNlcnREYXRhID0gaW5zZXJ0RGF0YVxuICAgIHRoaXMudGFibGVOYW1lID0gdGFibGVOYW1lXG4gICAgdGhpcy5fbWVtb3J5U2VxdWVuY2UgPSAwXG4gICAgdGhpcy5faXNSZWFkeSA9IGZhbHNlXG4gICAgLyoqIEB0eXBlIHtQcm9taXNlPHZvaWQ+IHwgbnVsbH0gKi9cbiAgICB0aGlzLl9yZWFkeVByb21pc2UgPSBudWxsXG4gIH1cblxuICAvKipcbiAgICogQWxsb2NhdGVzIHRoZSBuZXh0IG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBzZXF1ZW5jZS5cbiAgICpcbiAgICogQWxsb2NhdGlvbnMgc2VyaWFsaXplIHRocm91Z2ggYSBtb2R1bGUtbGV2ZWwgcXVldWUgcGVyIGRhdGFiYXNlK3RhYmxlIHNvXG4gICAqIHBhcmFsbGVsIGBuZXh0KClgIGNhbGxzIC0gaW5jbHVkaW5nIGNhbGxzIGZyb20gb3RoZXIgYWxsb2NhdG9yIGluc3RhbmNlc1xuICAgKiBzaGFyaW5nIHRoZSBzYW1lIHRhYmxlIGFuZCBjb25uZWN0aW9uIC0gY2Fubm90IGludGVybGVhdmUgdGhlaXIgaW5zZXJ0XG4gICAqIGFuZCBsYXN0LWluc2VydC1pZCByZWFkcyBhbmQgaGFuZCBvdXQgZHVwbGljYXRlIHNlcXVlbmNlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gTmV4dCBzZXF1ZW5jZSB2YWx1ZS5cbiAgICovXG4gIGFzeW5jIG5leHQoKSB7XG4gICAgY29uc3QgcXVldWVLZXkgPSBgJHt0aGlzLmRhdGFiYXNlSWRlbnRpZmllcn06OiR7dGhpcy50YWJsZU5hbWV9YFxuICAgIGNvbnN0IHByZXZpb3VzQWxsb2NhdGlvbiA9IGFsbG9jYXRpb25RdWV1ZXMuZ2V0KHF1ZXVlS2V5KSA/PyBQcm9taXNlLnJlc29sdmUoKVxuICAgIGNvbnN0IGFsbG9jYXRpb24gPSBwcmV2aW91c0FsbG9jYXRpb24udGhlbigoKSA9PiB0aGlzLl9hbGxvY2F0ZU5leHQoKSlcblxuICAgIGFsbG9jYXRpb25RdWV1ZXMuc2V0KHF1ZXVlS2V5LCBhbGxvY2F0aW9uLnRoZW4oKCkgPT4gdW5kZWZpbmVkLCAoKSA9PiB1bmRlZmluZWQpKVxuXG4gICAgcmV0dXJuIGF3YWl0IGFsbG9jYXRpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoZSBiYWNraW5nIHRhYmxlIGV4aXN0cy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IFJlc29sdmVzIHdoZW4gcmVhZHkuXG4gICAqL1xuICBhc3luYyBlbnN1cmVSZWFkeSgpIHtcbiAgICBpZiAodGhpcy5faXNSZWFkeSkgcmV0dXJuXG5cbiAgICBpZiAodGhpcy5fdXNlc01lbW9yeVN0b3JhZ2UoKSkge1xuICAgICAgdGhpcy5faXNSZWFkeSA9IHRydWVcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLl9yZWFkeVByb21pc2UpIHJldHVybiBhd2FpdCB0aGlzLl9yZWFkeVByb21pc2VcblxuICAgIHRoaXMuX3JlYWR5UHJvbWlzZSA9IHRoaXMuX3dpdGhEYihhc3luYyAoZGIpID0+IHtcbiAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCB0aGlzLl9lbnN1cmVTZXF1ZW5jZXNUYWJsZShkYilcblxuICAgICAgLy8gRERMIGpvaW5zIGFueSB0cmFuc2FjdGlvbiBhbHJlYWR5IG9wZW4gb24gdGhpcyBjb25uZWN0aW9uICh0aGUgbWl4aW4nc1xuICAgICAgLy8gYmVmb3JlQ3JlYXRlIGFsbG9jYXRpb24gYWx3YXlzIHJ1bnMgaW5zaWRlIHRoZSByZWNvcmQgc2F2ZSB0cmFuc2FjdGlvbiksXG4gICAgICAvLyBhbmQgb24gdHJhbnNhY3Rpb25hbC1EREwgZGF0YWJhc2VzIChNU1NRTCwgUG9zdGdyZVNRTCwgU1FMaXRlKSBhIHJvbGxiYWNrXG4gICAgICAvLyBvZiB0aGF0IG91dGVyIHRyYW5zYWN0aW9uIHJlbW92ZXMgdGhlIGp1c3QtY3JlYXRlZCB0YWJsZSBhZ2Fpbi4gT25seVxuICAgICAgLy8gY2FjaGUgcmVhZGluZXNzIHdoZW4gdGhlIHRhYmxlIHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYW4gYWN0aXZlXG4gICAgICAvLyB0cmFuc2FjdGlvbjsgb3RoZXJ3aXNlIHRoZSBuZXh0IGFsbG9jYXRpb24gcmUtdmVyaWZpZXMgdGhlIHRhYmxlLlxuICAgICAgaWYgKCFjcmVhdGVkIHx8ICFkYi5pbnNpZGVUcmFuc2FjdGlvbigpKSB0aGlzLl9pc1JlYWR5ID0gdHJ1ZVxuICAgIH0pXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fcmVhZHlQcm9taXNlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICghdGhpcy5faXNSZWFkeSkgdGhpcy5fcmVhZHlQcm9taXNlID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvY2F0ZXMgb25lIHNlcXVlbmNlIHZhbHVlIGFmdGVyIHF1ZXVlaW5nLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBBbGxvY2F0ZWQgc2VxdWVuY2UgdmFsdWUuXG4gICAqL1xuICBhc3luYyBfYWxsb2NhdGVOZXh0KCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlUmVhZHkoKVxuXG4gICAgaWYgKHRoaXMuX3VzZXNNZW1vcnlTdG9yYWdlKCkpIHtcbiAgICAgIHJldHVybiArK3RoaXMuX21lbW9yeVNlcXVlbmNlXG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dpdGhEYihhc3luYyAoZGIpID0+IHtcbiAgICAgIC8vIFRoZSBhbGxvY2F0ZWQgaWQgbXVzdCBiZSByZXR1cm5lZCBieSB0aGUgaW5zZXJ0IHN0YXRlbWVudCBpdHNlbGYgKE9VVFBVVFxuICAgICAgLy8gSU5TRVJURUQvUkVUVVJOSU5HKSwgbGlrZSB0aGUgcmVjb3JkIGNyZWF0ZSBwYXRoIGRvZXM6IE1TU1FMJ3NcbiAgICAgIC8vIFNDT1BFX0lERU5USVRZKCkgb25seSBzZWVzIGluc2VydHMgZnJvbSB0aGUgc2FtZSBiYXRjaC9zY29wZSwgc28gcmVhZGluZ1xuICAgICAgLy8gdGhlIGxhc3QtaW5zZXJ0IGlkIGFzIGEgc2VwYXJhdGUgcXVlcnkgYWx3YXlzIHJldHVybnMgTlVMTCB0aGVyZS4gRHJpdmVyc1xuICAgICAgLy8gd2l0aG91dCBpbnNlcnQtcmV0dXJuaW5nIHN1cHBvcnQgKG9sZGVyIFNRTGl0ZSkga2VlcCB0aGUgcmVsaWFibGVcbiAgICAgIC8vIGNvbm5lY3Rpb24tc2NvcGVkIGxhc3QtaW5zZXJ0LWlkIGZhbGxiYWNrLlxuICAgICAgY29uc3QgaW5zZXJ0U3FsID0gZGIuaW5zZXJ0U3FsKHtcbiAgICAgICAgZGF0YTogdGhpcy5faW5zZXJ0UGF5bG9hZCgpLFxuICAgICAgICByZXR1cm5MYXN0SW5zZXJ0ZWRDb2x1bW5OYW1lczogW1wiaWRcIl0sXG4gICAgICAgIHRhYmxlTmFtZTogdGhpcy50YWJsZU5hbWVcbiAgICAgIH0pXG4gICAgICBjb25zdCBpbnNlcnRSZXN1bHQgPSBhd2FpdCBkYi5xdWVyeShpbnNlcnRTcWwpXG4gICAgICBjb25zdCBpbnNlcnRlZElkID0gQXJyYXkuaXNBcnJheShpbnNlcnRSZXN1bHQpID8gaW5zZXJ0UmVzdWx0WzBdPy5pZCA6IHVuZGVmaW5lZFxuXG4gICAgICBpZiAoaW5zZXJ0ZWRJZCAhPT0gdW5kZWZpbmVkICYmIGluc2VydGVkSWQgIT09IG51bGwpIHJldHVybiBOdW1iZXIoaW5zZXJ0ZWRJZClcblxuICAgICAgcmV0dXJuIE51bWJlcihhd2FpdCBkYi5sYXN0SW5zZXJ0SUQoKSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgcm93IHBheWxvYWQgaW5zZXJ0ZWQgcGVyIGFsbG9jYXRpb24uXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gSW5zZXJ0IHBheWxvYWQuXG4gICAqL1xuICBfaW5zZXJ0UGF5bG9hZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnREYXRhID8/IHtjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBjb25maWd1cmF0aW9uIG93bmluZyB0aGUgc2VxdWVuY2UgdGFibGUuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IFJlc29sdmVkIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBfZ2V0Q29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uID8/IENvbmZpZ3VyYXRpb24uY3VycmVudCgpXG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYWxsb2NhdG9yIHJ1bnMgd2l0aG91dCBhIGNvbmZpZ3VyZWQgZGF0YWJhc2UuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIG1lbW9yeSBzdG9yYWdlIGlzIHVzZWQuXG4gICAqL1xuICBfdXNlc01lbW9yeVN0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAhdGhpcy5fZ2V0Q29uZmlndXJhdGlvbigpLmdldERhdGFiYXNlQ29uZmlndXJhdGlvbigpW3RoaXMuZGF0YWJhc2VJZGVudGlmaWVyXVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhIGNhbGxiYWNrIHdpdGggYSBkYXRhYmFzZSBjb25uZWN0aW9uLlxuICAgKiBAdGVtcGxhdGUgUmVzdWx0XG4gICAqIEBwYXJhbSB7KGRiOiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdCkgPT4gUHJvbWlzZTxSZXN1bHQ+fSBjYWxsYmFjayAtIERhdGFiYXNlIGNhbGxiYWNrLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ+fSBDYWxsYmFjayByZXN1bHQuXG4gICAqL1xuICBhc3luYyBfd2l0aERiKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2dldENvbmZpZ3VyYXRpb24oKS5lbnN1cmVDb25uZWN0aW9ucyh7ZGF0YWJhc2VJZGVudGlmaWVyczogW3RoaXMuZGF0YWJhc2VJZGVudGlmaWVyXSwgbmFtZTogXCJTZXJ2ZXIgc2VxdWVuY2UgYWxsb2NhdG9yXCJ9LCBhc3luYyAoZGJzKSA9PiB7XG4gICAgICBjb25zdCBkYiA9IGRic1t0aGlzLmRhdGFiYXNlSWRlbnRpZmllcl1cblxuICAgICAgaWYgKCFkYikgdGhyb3cgbmV3IEVycm9yKGBObyBkYXRhYmFzZSBjb25uZWN0aW9uIGF2YWlsYWJsZSBmb3IgaWRlbnRpZmllcjogJHt0aGlzLmRhdGFiYXNlSWRlbnRpZmllcn1gKVxuXG4gICAgICByZXR1cm4gYXdhaXQgY2FsbGJhY2soZGIpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoZSBzZXF1ZW5jZXMgdGFibGUgZXhpc3RzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBkYiAtIERhdGFiYXNlIGNvbm5lY3Rpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIHRoZSB0YWJsZSBoYWQgdG8gYmUgY3JlYXRlZC5cbiAgICovXG4gIGFzeW5jIF9lbnN1cmVTZXF1ZW5jZXNUYWJsZShkYikge1xuICAgIGlmIChhd2FpdCBkYi50YWJsZUV4aXN0cyh0aGlzLnRhYmxlTmFtZSkpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgdGFibGUgPSBuZXcgVGFibGVEYXRhKHRoaXMudGFibGVOYW1lLCB7aWZOb3RFeGlzdHM6IHRydWV9KVxuXG4gICAgdGFibGUuYmlnaW50KFwiaWRcIiwge2F1dG9JbmNyZW1lbnQ6IHRydWUsIG51bGw6IGZhbHNlLCBwcmltYXJ5S2V5OiB0cnVlfSlcbiAgICB0YWJsZS5kYXRldGltZShcImNyZWF0ZWRfYXRcIiwge251bGw6IGZhbHNlfSlcblxuICAgIGF3YWl0IGRiLmNyZWF0ZVRhYmxlKHRhYmxlKVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG4vKipcbiAqIFdpcmVzIHNlcnZlciBzZXF1ZW5jaW5nIG9udG8gYSBzeW5jIG1vZGVsIGNsYXNzOiByZWdpc3RlcnMgYSBiZWZvcmVDcmVhdGVcbiAqIGxpZmVjeWNsZSBjYWxsYmFjayBhc3NpZ25pbmcgdGhlIG5leHQgc2VxdWVuY2Ugd2hlbiB0aGUgcmVjb3JkIGhhcyBub25lLCBhbmRcbiAqIGRlZmluZXMgYW4gYGFkdmFuY2U8Q29sdW1uPigpYCBpbnN0YW5jZSBtZXRob2QgKHdoZW4gdGhlIG1vZGVsIGRvZXMgbm90XG4gKiBhbHJlYWR5IGRlZmluZSBvbmUpIHRoYXQgcmUtc2VxdWVuY2VzIHRoZSByZWNvcmQgdGhyb3VnaCB0aGUgYWxsb2NhdG9yLlxuICpcbiAqIFRoZSBzZXF1ZW5jZSBpcyBhbHdheXMgd3JpdHRlbiB0aHJvdWdoIHRoZSBtb2RlbCdzIGdlbmVyYXRlZCB0eXBlZCBzZXR0ZXJcbiAqIChmb3IgZXhhbXBsZSBgc2V0U2VydmVyU2VxdWVuY2VgKSwgc28gdGhlIG1vZGVsIG11c3QgZXhwb3NlIHRoZSBnZW5lcmF0ZWRcbiAqIGBzZXQ8Q29sdW1uPmAvYGhhczxDb2x1bW4+YCBhY2Nlc3NvcnMgZm9yIHRoZSBjb2x1bW4uXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gVE1vZGVsQ2xhc3NcbiAqIEBwYXJhbSB7VE1vZGVsQ2xhc3N9IE1vZGVsQ2xhc3MgLSBTeW5jIG1vZGVsIGNsYXNzIHRvIHNlcXVlbmNlLlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICogQHBhcmFtIHtTZXJ2ZXJTZXF1ZW5jZUFsbG9jYXRvcn0gYXJncy5hbGxvY2F0b3IgLSBBbGxvY2F0b3IgcHJvdmlkaW5nIHNlcXVlbmNlIHZhbHVlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5jb2x1bW5dIC0gU2VxdWVuY2UgYXR0cmlidXRlIG5hbWUuXG4gKiBAcmV0dXJucyB7VE1vZGVsQ2xhc3N9IFRoZSBnaXZlbiBtb2RlbCBjbGFzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTZXJ2ZXJTZXF1ZW5jZShNb2RlbENsYXNzLCB7YWxsb2NhdG9yLCBjb2x1bW4gPSBcInNlcnZlclNlcXVlbmNlXCJ9KSB7XG4gIGlmICghKGFsbG9jYXRvciBpbnN0YW5jZW9mIFNlcnZlclNlcXVlbmNlQWxsb2NhdG9yKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgd2l0aFNlcnZlclNlcXVlbmNlIHJlcXVpcmVzIGEgU2VydmVyU2VxdWVuY2VBbGxvY2F0b3IsIGdvdDogJHtTdHJpbmcoYWxsb2NhdG9yKX1gKVxuICB9XG5cbiAgY29uc3QgdXBwZXJDb2x1bW4gPSBgJHtjb2x1bW4uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtjb2x1bW4uc2xpY2UoMSl9YFxuICBjb25zdCBhZHZhbmNlTWV0aG9kTmFtZSA9IGBhZHZhbmNlJHt1cHBlckNvbHVtbn1gXG4gIGNvbnN0IGhhc01ldGhvZE5hbWUgPSBgaGFzJHt1cHBlckNvbHVtbn1gXG4gIGNvbnN0IHNldHRlck1ldGhvZE5hbWUgPSBgc2V0JHt1cHBlckNvbHVtbn1gXG5cbiAgLy8gTmFycm93cyB0aGUgcHJvdG90eXBlIHRvIGR5bmFtaWMgbWV0aG9kIGFjY2VzcyBmb3IgdGhlIGNvbmZpZ3VyZWQgY29sdW1uIG5hbWUuXG4gIGNvbnN0IHByb3RvdHlwZSA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovIChNb2RlbENsYXNzLnByb3RvdHlwZSlcblxuICBpZiAodHlwZW9mIHByb3RvdHlwZVtzZXR0ZXJNZXRob2ROYW1lXSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHByb3RvdHlwZVtoYXNNZXRob2ROYW1lXSAhPSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHdpdGhTZXJ2ZXJTZXF1ZW5jZSByZXF1aXJlcyBnZW5lcmF0ZWQgJHtzZXR0ZXJNZXRob2ROYW1lfSBhbmQgJHtoYXNNZXRob2ROYW1lfSBhY2Nlc3NvcnMgb24gJHtNb2RlbENsYXNzLm5hbWV9YClcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJvdG90eXBlW2FkdmFuY2VNZXRob2ROYW1lXSAhPSBcImZ1bmN0aW9uXCIpIHtcbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIHRoZSBuZXh0IHNlcnZlci1zaWRlIHNlcXVlbmNlLlxuICAgICAqIEB0aGlzIHtSZWNvcmQ8c3RyaW5nLCA/Pn1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICBwcm90b3R5cGVbYWR2YW5jZU1ldGhvZE5hbWVdID0gYXN5bmMgZnVuY3Rpb24gYWR2YW5jZVNlcnZlclNlcXVlbmNlVGhyb3VnaEFsbG9jYXRvcigpIHtcbiAgICAgIHRoaXNbc2V0dGVyTWV0aG9kTmFtZV0oYXdhaXQgYWxsb2NhdG9yLm5leHQoKSlcbiAgICB9XG4gIH1cblxuICBNb2RlbENsYXNzLmJlZm9yZUNyZWF0ZShhc3luYyAocmVjb3JkKSA9PiB7XG4gICAgLy8gTmFycm93cyB0aGUgcmVjb3JkIHRvIGR5bmFtaWMgbWV0aG9kIGFjY2VzcyBmb3IgdGhlIGNvbmZpZ3VyZWQgY29sdW1uIG5hbWUuXG4gICAgY29uc3QgZHluYW1pY1JlY29yZCA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovICgvKiogQHR5cGUgez99ICovIChyZWNvcmQpKVxuXG4gICAgaWYgKGR5bmFtaWNSZWNvcmRbaGFzTWV0aG9kTmFtZV0oKSkgcmV0dXJuXG5cbiAgICBhd2FpdCBkeW5hbWljUmVjb3JkW2FkdmFuY2VNZXRob2ROYW1lXSgpXG4gIH0pXG5cbiAgcmV0dXJuIE1vZGVsQ2xhc3Ncbn1cbiJdfQ==
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXNlcXVlbmNlLWFsbG9jYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zeW5jL3NlcnZlci1zZXF1ZW5jZS1hbGxvY2F0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sU0FBUyxNQUFNLGlDQUFpQyxDQUFBO0FBRXZEOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7QUFFbEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUMxQzs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsR0FBRyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsR0FBRyw0QkFBNEIsRUFBQyxHQUFHLEVBQUU7UUFDcEgsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFBO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLFVBQVUsRUFBQyxHQUFHLEVBQUU7UUFDMUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ2hFLE1BQU0sa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsR0FB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LElBQUksVUFBVSxJQUFJLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ3RHLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLGdCQUFnQixRQUFRLGFBQWEsaUJBQWlCLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ25JLENBQUM7SUFFRCxJQUFJLE9BQU8sU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDdEQ7Ozs7V0FJRztRQUNILFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssVUFBVSxxQ0FBcUM7WUFDakYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDOUQsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3ZDLDhFQUE4RTtRQUM5RSxNQUFNLGFBQWEsR0FBRyxnQ0FBZ0MsQ0FBQyxFQUFDLGdCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFFbEYsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFBRSxPQUFNO1FBRTFDLE1BQU0sYUFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQTtJQUMxQyxDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IENvbmZpZ3VyYXRpb24gZnJvbSBcIi4uL2NvbmZpZ3VyYXRpb24uanNcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vZGF0YWJhc2UvdGFibGUtZGF0YS9pbmRleC5qc1wiXG5cbi8qKlxuICogQWxsb2NhdGlvbiBxdWV1ZXMgcGVyIGRhdGFiYXNlK3RhYmxlLCBzZXJpYWxpemluZyBpbnNlcnQvbGFzdC1pbnNlcnQtaWRcbiAqIHBhaXJzIGFjcm9zcyBhbGwgYWxsb2NhdG9yIGluc3RhbmNlcyBpbiB0aGlzIHByb2Nlc3MuXG4gKiBAdHlwZSB7TWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj59XG4gKi9cbmNvbnN0IGFsbG9jYXRpb25RdWV1ZXMgPSBuZXcgTWFwKClcblxuLyoqXG4gKiBBbGxvY2F0ZXMgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIHNlcnZlciBzeW5jIHNlcXVlbmNlcyBmcm9tIGFuXG4gKiBBVVRPX0lOQ1JFTUVOVCBpZCB0YWJsZTogZXZlcnkgYWxsb2NhdGlvbiBpbnNlcnRzIGEgcm93IGFuZCByZXR1cm5zIHRoZVxuICogZHJpdmVyJ3MgbGFzdC1pbnNlcnQgaWQsIHNvIHNlcXVlbmNlcyBzdGF5IHVuaXF1ZSBhbmQgaW5jcmVhc2luZyBhY3Jvc3NcbiAqIHByb2Nlc3NlcyBzaGFyaW5nIHRoZSBzYW1lIGRhdGFiYXNlLlxuICpcbiAqIEJhY2tlZCBieSBhbiBhdXRvLWNyZWF0ZWQgYHZlbG9jaW91c19zZXJ2ZXJfc2VxdWVuY2VzYCB0YWJsZSBvbiB0aGVcbiAqIGNvbmZpZ3VyZWQgZGF0YWJhc2UsIHdpdGggYSBwcm9jZXNzLWxvY2FsIG1lbW9yeSBjb3VudGVyIGZhbGxiYWNrIHdoZW4gbm9cbiAqIGRhdGFiYXNlIGlzIGNvbmZpZ3VyZWQgKG1pcnJvcmluZyB0aGUgc3luYyBzY29wZSBzdG9yZSkuIEFwcHMgd2l0aCBhblxuICogZXhpc3Rpbmcgc2VxdWVuY2UgdGFibGUgKGZvciBleGFtcGxlIGEgYmFyZSBgaWRgLW9ubHkgQVVUT19JTkNSRU1FTlQgdGFibGUpXG4gKiBwb2ludCBgdGFibGVOYW1lYCBhdCBpdCBhbmQgcGFzcyBgaW5zZXJ0RGF0YToge31gIHRvIGluc2VydCBlbXB0eSByb3dzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXJ2ZXJTZXF1ZW5jZUFsbG9jYXRvciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2VydmVyIHNlcXVlbmNlIGFsbG9jYXRvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IFthcmdzXSAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBbYXJncy5jb25maWd1cmF0aW9uXSAtIENvbmZpZ3VyYXRpb24gb3duaW5nIHRoZSBkYXRhYmFzZS4gRGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgcmVzb2x2ZWQgbGF6aWx5IHBlciBhbGxvY2F0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuZGF0YWJhc2VJZGVudGlmaWVyXSAtIERhdGFiYXNlIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgPz59IFthcmdzLmluc2VydERhdGFdIC0gUm93IHBheWxvYWQgaW5zZXJ0ZWQgcGVyIGFsbG9jYXRpb24uIERlZmF1bHRzIHRvIGB7Y3JlYXRlZF9hdDogbmV3IERhdGUoKX1gIG1hdGNoaW5nIHRoZSBhdXRvLWNyZWF0ZWQgdGFibGU7IHBhc3MgYHt9YCBmb3IgYmFyZSBpZC1vbmx5IHRhYmxlcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnRhYmxlTmFtZV0gLSBTZXF1ZW5jZSB0YWJsZSBuYW1lLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIGRhdGFiYXNlSWRlbnRpZmllciA9IFwiZGVmYXVsdFwiLCBpbnNlcnREYXRhLCB0YWJsZU5hbWUgPSBcInZlbG9jaW91c19zZXJ2ZXJfc2VxdWVuY2VzXCJ9ID0ge30pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5kYXRhYmFzZUlkZW50aWZpZXIgPSBkYXRhYmFzZUlkZW50aWZpZXJcbiAgICB0aGlzLmluc2VydERhdGEgPSBpbnNlcnREYXRhXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWVcbiAgICB0aGlzLl9tZW1vcnlTZXF1ZW5jZSA9IDBcbiAgICB0aGlzLl9pc1JlYWR5ID0gZmFsc2VcbiAgICAvKiogQHR5cGUge1Byb21pc2U8dm9pZD4gfCBudWxsfSAqL1xuICAgIHRoaXMuX3JlYWR5UHJvbWlzZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvY2F0ZXMgdGhlIG5leHQgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIHNlcXVlbmNlLlxuICAgKlxuICAgKiBBbGxvY2F0aW9ucyBzZXJpYWxpemUgdGhyb3VnaCBhIG1vZHVsZS1sZXZlbCBxdWV1ZSBwZXIgZGF0YWJhc2UrdGFibGUgc29cbiAgICogcGFyYWxsZWwgYG5leHQoKWAgY2FsbHMgLSBpbmNsdWRpbmcgY2FsbHMgZnJvbSBvdGhlciBhbGxvY2F0b3IgaW5zdGFuY2VzXG4gICAqIHNoYXJpbmcgdGhlIHNhbWUgdGFibGUgYW5kIGNvbm5lY3Rpb24gLSBjYW5ub3QgaW50ZXJsZWF2ZSB0aGVpciBpbnNlcnRcbiAgICogYW5kIGxhc3QtaW5zZXJ0LWlkIHJlYWRzIGFuZCBoYW5kIG91dCBkdXBsaWNhdGUgc2VxdWVuY2VzLlxuICAgKiBAcGFyYW0ge3tjb25uZWN0aW9uPzogaW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9fSBbb3B0aW9uc10gLSBFeHBsaWNpdCByZWNvcmQtb3duZWQgY29ubmVjdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gTmV4dCBzZXF1ZW5jZSB2YWx1ZS5cbiAgICovXG4gIGFzeW5jIG5leHQoe2Nvbm5lY3Rpb259ID0ge30pIHtcbiAgICBjb25zdCBxdWV1ZUtleSA9IGAke3RoaXMuZGF0YWJhc2VJZGVudGlmaWVyfTo6JHt0aGlzLnRhYmxlTmFtZX1gXG4gICAgY29uc3QgcHJldmlvdXNBbGxvY2F0aW9uID0gYWxsb2NhdGlvblF1ZXVlcy5nZXQocXVldWVLZXkpID8/IFByb21pc2UucmVzb2x2ZSgpXG4gICAgY29uc3QgYWxsb2NhdGlvbiA9IHByZXZpb3VzQWxsb2NhdGlvbi50aGVuKCgpID0+IHRoaXMuX2FsbG9jYXRlTmV4dChjb25uZWN0aW9uKSlcblxuICAgIGFsbG9jYXRpb25RdWV1ZXMuc2V0KHF1ZXVlS2V5LCBhbGxvY2F0aW9uLnRoZW4oKCkgPT4gdW5kZWZpbmVkLCAoKSA9PiB1bmRlZmluZWQpKVxuXG4gICAgcmV0dXJuIGF3YWl0IGFsbG9jYXRpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvY2F0ZXMgZm9yIGEgcmVjb3JkIHdoaWxlIHByZXNlcnZpbmcgYWxsb2NhdG9yIHJvdXRpbmcgYW5kIG9wZXJhdGlvbiBvd25lcnNoaXAuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IHJlY29yZCAtIFJlY29yZCByZWNlaXZpbmcgdGhlIHNlcXVlbmNlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBOZXh0IHNlcXVlbmNlIHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgX25leHRGb3JSZWNvcmQocmVjb3JkKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gcmVjb3JkLmRhdGFiYXNlT3BlcmF0aW9uKClcblxuICAgIGlmICghb3BlcmF0aW9uKSByZXR1cm4gYXdhaXQgdGhpcy5uZXh0KClcblxuICAgIGNvbnN0IE1vZGVsQ2xhc3MgPSByZWNvcmQuZ2V0TW9kZWxDbGFzcygpXG5cbiAgICBpZiAodGhpcy5fZ2V0Q29uZmlndXJhdGlvbigpICE9PSBNb2RlbENsYXNzLl9nZXRDb25maWd1cmF0aW9uKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNlcnZlciBzZXF1ZW5jZSBhbGxvY2F0b3IgYmVsb25ncyB0byBhbm90aGVyIFZlbG9jaW91cyBjb25maWd1cmF0aW9uXCIpXG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWxEYXRhYmFzZUlkZW50aWZpZXIgPSBNb2RlbENsYXNzLmdldERhdGFiYXNlSWRlbnRpZmllcigpXG5cbiAgICBpZiAodGhpcy5kYXRhYmFzZUlkZW50aWZpZXIgIT09IG1vZGVsRGF0YWJhc2VJZGVudGlmaWVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlcnZlciBzZXF1ZW5jZSBhbGxvY2F0b3IgdXNlcyBkYXRhYmFzZSAke0pTT04uc3RyaW5naWZ5KHRoaXMuZGF0YWJhc2VJZGVudGlmaWVyKX0sIG5vdCBvcGVyYXRpb24gbW9kZWwgZGF0YWJhc2UgJHtKU09OLnN0cmluZ2lmeShtb2RlbERhdGFiYXNlSWRlbnRpZmllcil9YClcbiAgICB9XG5cbiAgICBjb25zdCBvcGVyYXRpb25TY29wZSA9IG9wZXJhdGlvbi5mb3JNb2RlbChNb2RlbENsYXNzKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubmV4dCh7Y29ubmVjdGlvbjogb3BlcmF0aW9uU2NvcGUuZHJpdmVyfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoZSBiYWNraW5nIHRhYmxlIGV4aXN0cy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gW2Nvbm5lY3Rpb25dIC0gRXhwbGljaXQgcmVjb3JkLW93bmVkIGNvbm5lY3Rpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBSZXNvbHZlcyB3aGVuIHJlYWR5LlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlUmVhZHkoY29ubmVjdGlvbikge1xuICAgIGlmICh0aGlzLl9pc1JlYWR5KSByZXR1cm5cblxuICAgIGlmICh0aGlzLl91c2VzTWVtb3J5U3RvcmFnZSgpKSB7XG4gICAgICB0aGlzLl9pc1JlYWR5ID0gdHJ1ZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3JlYWR5UHJvbWlzZSkgcmV0dXJuIGF3YWl0IHRoaXMuX3JlYWR5UHJvbWlzZVxuXG4gICAgdGhpcy5fcmVhZHlQcm9taXNlID0gdGhpcy5fd2l0aERiKGFzeW5jIChkYikgPT4ge1xuICAgICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IHRoaXMuX2Vuc3VyZVNlcXVlbmNlc1RhYmxlKGRiKVxuXG4gICAgICAvLyBEREwgam9pbnMgYW55IHRyYW5zYWN0aW9uIGFscmVhZHkgb3BlbiBvbiB0aGlzIGNvbm5lY3Rpb24gKHRoZSBtaXhpbidzXG4gICAgICAvLyBiZWZvcmVDcmVhdGUgYWxsb2NhdGlvbiBhbHdheXMgcnVucyBpbnNpZGUgdGhlIHJlY29yZCBzYXZlIHRyYW5zYWN0aW9uKSxcbiAgICAgIC8vIGFuZCBvbiB0cmFuc2FjdGlvbmFsLURETCBkYXRhYmFzZXMgKE1TU1FMLCBQb3N0Z3JlU1FMLCBTUUxpdGUpIGEgcm9sbGJhY2tcbiAgICAgIC8vIG9mIHRoYXQgb3V0ZXIgdHJhbnNhY3Rpb24gcmVtb3ZlcyB0aGUganVzdC1jcmVhdGVkIHRhYmxlIGFnYWluLiBPbmx5XG4gICAgICAvLyBjYWNoZSByZWFkaW5lc3Mgd2hlbiB0aGUgdGFibGUgd2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhbiBhY3RpdmVcbiAgICAgIC8vIHRyYW5zYWN0aW9uOyBvdGhlcndpc2UgdGhlIG5leHQgYWxsb2NhdGlvbiByZS12ZXJpZmllcyB0aGUgdGFibGUuXG4gICAgICBpZiAoIWNyZWF0ZWQgfHwgIWRiLmluc2lkZVRyYW5zYWN0aW9uKCkpIHRoaXMuX2lzUmVhZHkgPSB0cnVlXG4gICAgfSwgY29ubmVjdGlvbilcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWFkeVByb21pc2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKCF0aGlzLl9pc1JlYWR5KSB0aGlzLl9yZWFkeVByb21pc2UgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRlcyBvbmUgc2VxdWVuY2UgdmFsdWUgYWZ0ZXIgcXVldWVpbmcuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IFtjb25uZWN0aW9uXSAtIEV4cGxpY2l0IHJlY29yZC1vd25lZCBjb25uZWN0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fSBBbGxvY2F0ZWQgc2VxdWVuY2UgdmFsdWUuXG4gICAqL1xuICBhc3luYyBfYWxsb2NhdGVOZXh0KGNvbm5lY3Rpb24pIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVJlYWR5KGNvbm5lY3Rpb24pXG5cbiAgICBpZiAodGhpcy5fdXNlc01lbW9yeVN0b3JhZ2UoKSkge1xuICAgICAgcmV0dXJuICsrdGhpcy5fbWVtb3J5U2VxdWVuY2VcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2l0aERiKGFzeW5jIChkYikgPT4ge1xuICAgICAgLy8gVGhlIGFsbG9jYXRlZCBpZCBtdXN0IGJlIHJldHVybmVkIGJ5IHRoZSBpbnNlcnQgc3RhdGVtZW50IGl0c2VsZiAoT1VUUFVUXG4gICAgICAvLyBJTlNFUlRFRC9SRVRVUk5JTkcpLCBsaWtlIHRoZSByZWNvcmQgY3JlYXRlIHBhdGggZG9lczogTVNTUUwnc1xuICAgICAgLy8gU0NPUEVfSURFTlRJVFkoKSBvbmx5IHNlZXMgaW5zZXJ0cyBmcm9tIHRoZSBzYW1lIGJhdGNoL3Njb3BlLCBzbyByZWFkaW5nXG4gICAgICAvLyB0aGUgbGFzdC1pbnNlcnQgaWQgYXMgYSBzZXBhcmF0ZSBxdWVyeSBhbHdheXMgcmV0dXJucyBOVUxMIHRoZXJlLiBEcml2ZXJzXG4gICAgICAvLyB3aXRob3V0IGluc2VydC1yZXR1cm5pbmcgc3VwcG9ydCAob2xkZXIgU1FMaXRlKSBrZWVwIHRoZSByZWxpYWJsZVxuICAgICAgLy8gY29ubmVjdGlvbi1zY29wZWQgbGFzdC1pbnNlcnQtaWQgZmFsbGJhY2suXG4gICAgICBjb25zdCBpbnNlcnRTcWwgPSBkYi5pbnNlcnRTcWwoe1xuICAgICAgICBkYXRhOiB0aGlzLl9pbnNlcnRQYXlsb2FkKCksXG4gICAgICAgIHJldHVybkxhc3RJbnNlcnRlZENvbHVtbk5hbWVzOiBbXCJpZFwiXSxcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZVxuICAgICAgfSlcbiAgICAgIGNvbnN0IGluc2VydFJlc3VsdCA9IGF3YWl0IGRiLnF1ZXJ5KGluc2VydFNxbClcbiAgICAgIGNvbnN0IGluc2VydGVkSWQgPSBBcnJheS5pc0FycmF5KGluc2VydFJlc3VsdCkgPyBpbnNlcnRSZXN1bHRbMF0/LmlkIDogdW5kZWZpbmVkXG5cbiAgICAgIGlmIChpbnNlcnRlZElkICE9PSB1bmRlZmluZWQgJiYgaW5zZXJ0ZWRJZCAhPT0gbnVsbCkgcmV0dXJuIE51bWJlcihpbnNlcnRlZElkKVxuXG4gICAgICByZXR1cm4gTnVtYmVyKGF3YWl0IGRiLmxhc3RJbnNlcnRJRCgpKVxuICAgIH0sIGNvbm5lY3Rpb24pXG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSByb3cgcGF5bG9hZCBpbnNlcnRlZCBwZXIgYWxsb2NhdGlvbi5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSBJbnNlcnQgcGF5bG9hZC5cbiAgICovXG4gIF9pbnNlcnRQYXlsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLmluc2VydERhdGEgPz8ge2NyZWF0ZWRfYXQ6IG5ldyBEYXRlKCl9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGNvbmZpZ3VyYXRpb24gb3duaW5nIHRoZSBzZXF1ZW5jZSB0YWJsZS5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gUmVzb2x2ZWQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIF9nZXRDb25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24gPz8gQ29uZmlndXJhdGlvbi5jdXJyZW50KClcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhbGxvY2F0b3IgcnVucyB3aXRob3V0IGEgY29uZmlndXJlZCBkYXRhYmFzZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgbWVtb3J5IHN0b3JhZ2UgaXMgdXNlZC5cbiAgICovXG4gIF91c2VzTWVtb3J5U3RvcmFnZSgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuICF0aGlzLl9nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGF0YWJhc2VDb25maWd1cmF0aW9uKClbdGhpcy5kYXRhYmFzZUlkZW50aWZpZXJdXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGEgY2FsbGJhY2sgd2l0aCBhIGRhdGFiYXNlIGNvbm5lY3Rpb24uXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHRcbiAgICogQHBhcmFtIHsoZGI6IGltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0KSA9PiBQcm9taXNlPFJlc3VsdD59IGNhbGxiYWNrIC0gRGF0YWJhc2UgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IFtjb25uZWN0aW9uXSAtIEV4cGxpY2l0IHJlY29yZC1vd25lZCBjb25uZWN0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ+fSBDYWxsYmFjayByZXN1bHQuXG4gICAqL1xuICBhc3luYyBfd2l0aERiKGNhbGxiYWNrLCBjb25uZWN0aW9uKSB7XG4gICAgaWYgKGNvbm5lY3Rpb24pIHJldHVybiBhd2FpdCBjYWxsYmFjayhjb25uZWN0aW9uKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2dldENvbmZpZ3VyYXRpb24oKS5lbnN1cmVDb25uZWN0aW9ucyh7ZGF0YWJhc2VJZGVudGlmaWVyczogW3RoaXMuZGF0YWJhc2VJZGVudGlmaWVyXSwgbmFtZTogXCJTZXJ2ZXIgc2VxdWVuY2UgYWxsb2NhdG9yXCJ9LCBhc3luYyAoZGJzKSA9PiB7XG4gICAgICBjb25zdCBkYiA9IGRic1t0aGlzLmRhdGFiYXNlSWRlbnRpZmllcl1cblxuICAgICAgaWYgKCFkYikgdGhyb3cgbmV3IEVycm9yKGBObyBkYXRhYmFzZSBjb25uZWN0aW9uIGF2YWlsYWJsZSBmb3IgaWRlbnRpZmllcjogJHt0aGlzLmRhdGFiYXNlSWRlbnRpZmllcn1gKVxuXG4gICAgICByZXR1cm4gYXdhaXQgY2FsbGJhY2soZGIpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoZSBzZXF1ZW5jZXMgdGFibGUgZXhpc3RzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBkYiAtIERhdGFiYXNlIGNvbm5lY3Rpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIHRoZSB0YWJsZSBoYWQgdG8gYmUgY3JlYXRlZC5cbiAgICovXG4gIGFzeW5jIF9lbnN1cmVTZXF1ZW5jZXNUYWJsZShkYikge1xuICAgIGlmIChhd2FpdCBkYi50YWJsZUV4aXN0cyh0aGlzLnRhYmxlTmFtZSkpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgdGFibGUgPSBuZXcgVGFibGVEYXRhKHRoaXMudGFibGVOYW1lLCB7aWZOb3RFeGlzdHM6IHRydWV9KVxuXG4gICAgdGFibGUuYmlnaW50KFwiaWRcIiwge2F1dG9JbmNyZW1lbnQ6IHRydWUsIG51bGw6IGZhbHNlLCBwcmltYXJ5S2V5OiB0cnVlfSlcbiAgICB0YWJsZS5kYXRldGltZShcImNyZWF0ZWRfYXRcIiwge251bGw6IGZhbHNlfSlcblxuICAgIGF3YWl0IGRiLmNyZWF0ZVRhYmxlKHRhYmxlKVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG4vKipcbiAqIFdpcmVzIHNlcnZlciBzZXF1ZW5jaW5nIG9udG8gYSBzeW5jIG1vZGVsIGNsYXNzOiByZWdpc3RlcnMgYSBiZWZvcmVDcmVhdGVcbiAqIGxpZmVjeWNsZSBjYWxsYmFjayBhc3NpZ25pbmcgdGhlIG5leHQgc2VxdWVuY2Ugd2hlbiB0aGUgcmVjb3JkIGhhcyBub25lLCBhbmRcbiAqIGRlZmluZXMgYW4gYGFkdmFuY2U8Q29sdW1uPigpYCBpbnN0YW5jZSBtZXRob2QgKHdoZW4gdGhlIG1vZGVsIGRvZXMgbm90XG4gKiBhbHJlYWR5IGRlZmluZSBvbmUpIHRoYXQgcmUtc2VxdWVuY2VzIHRoZSByZWNvcmQgdGhyb3VnaCB0aGUgYWxsb2NhdG9yLlxuICpcbiAqIFRoZSBzZXF1ZW5jZSBpcyBhbHdheXMgd3JpdHRlbiB0aHJvdWdoIHRoZSBtb2RlbCdzIGdlbmVyYXRlZCB0eXBlZCBzZXR0ZXJcbiAqIChmb3IgZXhhbXBsZSBgc2V0U2VydmVyU2VxdWVuY2VgKSwgc28gdGhlIG1vZGVsIG11c3QgZXhwb3NlIHRoZSBnZW5lcmF0ZWRcbiAqIGBzZXQ8Q29sdW1uPmAvYGhhczxDb2x1bW4+YCBhY2Nlc3NvcnMgZm9yIHRoZSBjb2x1bW4uXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gVE1vZGVsQ2xhc3NcbiAqIEBwYXJhbSB7VE1vZGVsQ2xhc3N9IE1vZGVsQ2xhc3MgLSBTeW5jIG1vZGVsIGNsYXNzIHRvIHNlcXVlbmNlLlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICogQHBhcmFtIHtTZXJ2ZXJTZXF1ZW5jZUFsbG9jYXRvcn0gYXJncy5hbGxvY2F0b3IgLSBBbGxvY2F0b3IgcHJvdmlkaW5nIHNlcXVlbmNlIHZhbHVlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5jb2x1bW5dIC0gU2VxdWVuY2UgYXR0cmlidXRlIG5hbWUuXG4gKiBAcmV0dXJucyB7VE1vZGVsQ2xhc3N9IFRoZSBnaXZlbiBtb2RlbCBjbGFzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTZXJ2ZXJTZXF1ZW5jZShNb2RlbENsYXNzLCB7YWxsb2NhdG9yLCBjb2x1bW4gPSBcInNlcnZlclNlcXVlbmNlXCJ9KSB7XG4gIGlmICghKGFsbG9jYXRvciBpbnN0YW5jZW9mIFNlcnZlclNlcXVlbmNlQWxsb2NhdG9yKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgd2l0aFNlcnZlclNlcXVlbmNlIHJlcXVpcmVzIGEgU2VydmVyU2VxdWVuY2VBbGxvY2F0b3IsIGdvdDogJHtTdHJpbmcoYWxsb2NhdG9yKX1gKVxuICB9XG5cbiAgY29uc3QgdXBwZXJDb2x1bW4gPSBgJHtjb2x1bW4uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtjb2x1bW4uc2xpY2UoMSl9YFxuICBjb25zdCBhZHZhbmNlTWV0aG9kTmFtZSA9IGBhZHZhbmNlJHt1cHBlckNvbHVtbn1gXG4gIGNvbnN0IGhhc01ldGhvZE5hbWUgPSBgaGFzJHt1cHBlckNvbHVtbn1gXG4gIGNvbnN0IHNldHRlck1ldGhvZE5hbWUgPSBgc2V0JHt1cHBlckNvbHVtbn1gXG5cbiAgLy8gTmFycm93cyB0aGUgcHJvdG90eXBlIHRvIGR5bmFtaWMgbWV0aG9kIGFjY2VzcyBmb3IgdGhlIGNvbmZpZ3VyZWQgY29sdW1uIG5hbWUuXG4gIGNvbnN0IHByb3RvdHlwZSA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovIChNb2RlbENsYXNzLnByb3RvdHlwZSlcblxuICBpZiAodHlwZW9mIHByb3RvdHlwZVtzZXR0ZXJNZXRob2ROYW1lXSAhPSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIHByb3RvdHlwZVtoYXNNZXRob2ROYW1lXSAhPSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHdpdGhTZXJ2ZXJTZXF1ZW5jZSByZXF1aXJlcyBnZW5lcmF0ZWQgJHtzZXR0ZXJNZXRob2ROYW1lfSBhbmQgJHtoYXNNZXRob2ROYW1lfSBhY2Nlc3NvcnMgb24gJHtNb2RlbENsYXNzLm5hbWV9YClcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJvdG90eXBlW2FkdmFuY2VNZXRob2ROYW1lXSAhPSBcImZ1bmN0aW9uXCIpIHtcbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIHRoZSBuZXh0IHNlcnZlci1zaWRlIHNlcXVlbmNlLlxuICAgICAqIEB0aGlzIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCAmIFJlY29yZDxzdHJpbmcsID8+fVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgICAqL1xuICAgIHByb3RvdHlwZVthZHZhbmNlTWV0aG9kTmFtZV0gPSBhc3luYyBmdW5jdGlvbiBhZHZhbmNlU2VydmVyU2VxdWVuY2VUaHJvdWdoQWxsb2NhdG9yKCkge1xuICAgICAgdGhpc1tzZXR0ZXJNZXRob2ROYW1lXShhd2FpdCBhbGxvY2F0b3IuX25leHRGb3JSZWNvcmQodGhpcykpXG4gICAgfVxuICB9XG5cbiAgTW9kZWxDbGFzcy5iZWZvcmVDcmVhdGUoYXN5bmMgKHJlY29yZCkgPT4ge1xuICAgIC8vIE5hcnJvd3MgdGhlIHJlY29yZCB0byBkeW5hbWljIG1ldGhvZCBhY2Nlc3MgZm9yIHRoZSBjb25maWd1cmVkIGNvbHVtbiBuYW1lLlxuICAgIGNvbnN0IGR5bmFtaWNSZWNvcmQgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsID8+fSAqLyAoLyoqIEB0eXBlIHs/fSAqLyAocmVjb3JkKSlcblxuICAgIGlmIChkeW5hbWljUmVjb3JkW2hhc01ldGhvZE5hbWVdKCkpIHJldHVyblxuXG4gICAgYXdhaXQgZHluYW1pY1JlY29yZFthZHZhbmNlTWV0aG9kTmFtZV0oKVxuICB9KVxuXG4gIHJldHVybiBNb2RlbENsYXNzXG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client.js"],"names":[],"mappings":"AAy6BA;;;;;GAKG;AACH,2CAHW,aAAa,GACX,UAAU,CAYtB;AAED;;;;GAIG;AACH,4BAHW,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,GACzD,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,wBAAwB,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,OAAO,4BAA4B,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAC,CAAC,CAIzJ;AAj6BD;;;;;;;;;;;GAWG;AACH;IAuSE;;;OAGG;IACH,kBAFa,UAAU,CAItB;IAED;;;;;;OAMG;IACH,yCAJW,aAAa,YACb,IAAI,CAAC,OAAO,wBAAwB,EAAE,iBAAiB,EAAE,eAAe,CAAC,GACvE,UAAU,CAItB;IAvTD;;;;;;;;;;OAUG;IACH,sBAFW,OAAO,wBAAwB,EAAE,iBAAiB,EA0E5D;IAvCC,gEAAgE;IAChE,QADW,OAAO,wBAAwB,EAAE,gBAAgB,CAe3D;IACD,sBAAoC;IACpC,wCAAwC;IACxC,iBADW,kBAAkB,GAAG,IAAI,CACT;IAC3B,sMAAsM;IACtM,iBADW,OAAO,wBAAwB,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,CACzD;IAChC,mCAAmC;IACnC,4BADW,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CACO;IACtC,4DAA4D;IAC5D,iBADW,YAAY,GAAG,aAAa,GAAG,cAAc,CACnB;IACrC,6DAA6D;IAC7D,aADW,OAAO,uBAAuB,EAAE,OAAO,GAAG,IAAI,CACpB;IACrC,mCAAmC;IACnC,kBADW,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CACH;IAC5B,6FAA6F;IAC7F,sBADW,MAAM,CAAC,MAAM,EAAE,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,GAAG,IAAI,CACzD;IAChC,2IAA2I;IAC3I,mBADW,KAAK,CAAC;QAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,YAAY,EAAE,aAAa,GAAG,aAAa,GAAG,cAAc,CAAC;QAAC,UAAU,EAAE,OAAC,CAAA;KAAC,CAAC,CAC5G;IAC3B,8BAA8B;IAC9B,qBADW,OAAO,CAAC,MAAM,CAAC,CACc;IACxC,8BAA8B;IAC9B,gFAAgF;IAChF,SADW,MAAM,GAAG;QAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,OAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAC,GAAG,IAAI,CACzD;IACnB,kBAAqB;IAGvB;;;;;;;OAOG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAkBzB;IAED;;;OAGG;IACH,QAFa,IAAI,CAShB;IAED;;;;;;;OAOG;IACH,oDAHW;QAAC,cAAc,EAAE,OAAO,wBAAwB,EAAE,wBAAwB,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,GAC/F,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAoBlD;IAED;;;;;;;;;;;;OAYG;IACH,uDAHW;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,cAAc,EAAE,OAAO,wBAAwB,EAAE,wBAAwB,CAAA;KAAC,GACrH,CAAC,MAAM,EAAE,OAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAmCxC;IAED;;;;;;;;OAQG;IACH,8BAHW,KAAK,GACH,OAAO,CAAC,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,UAFa,MAAM,GAAG;QAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,OAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAC,CAMtE;IAED;;;;OAIG;IACH,sBAHW,OAAC,GACC,OAAO,CAInB;IAED;;;;;;;OAOG;IACH,6BAHW,OAAC,GACC,OAAO,CAInB;IAED;;;;;;;;;;;;OAYG;IACH,gBAJa,CAAC,YACH,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAClB,OAAO,CAAC,CAAC,CAAC,CAUtB;IAED;;;;;;OAMG;IACH,wBAHW,OAAC,GACC,MAAM,IAAI,CAMtB;IAED;;;OAGG;IACH,cAFa,IAAI,CAIhB;IAqBD;;;;;;OAMG;IACH,YALW,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,mBAEnE;QAA4F,UAAU,eAAnF,OAAO,4BAA4B,EAAE,gBAAgB,KAAK,IAAI;KACjF,GAAU,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,wBAAwB,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,OAAO,4BAA4B,EAAE,iBAAiB,GAAG,IAAI,CAAA;KAAC,CAAC,CAezJ;IAED;;;;OAIG;IACH,cAHW,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;;OAKG;IACH,sBAHG;QAA4F,UAAU,eAAnF,OAAO,4BAA4B,EAAE,gBAAgB,KAAK,IAAI;KACjF,GAAU,OAAO,CAAC,OAAO,4BAA4B,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAmElF;IAED;;;;;;;OAOG;IACH,6BAHW;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,GACf,CAAC,IAAI,EAAE,OAAO,4BAA4B,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,4BAA4B,EAAE,qBAAqB,CAAC,CAelJ;IAED;;;;;;;;;;OAUG;IACH,kBAFa,OAAO,wBAAwB,EAAE,0BAA0B,GAAG,IAAI,CAgB9E;IAED;;;;;OAKG;IACH,4BAHW,OAAC,GACC,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;;;;;;;OAUG;IACH,sBAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;;;OAIG;IACH,uBAFa,OAAO,CAAC,IAAI,CAAC,CAWzB;IAED;;;;;;OAMG;IACH,wBAFa,OAAO,CAAC,IAAI,CAAC,CASzB;IAED;;;;;;;;OAQG;IACH,aAFa,OAAO,CAAC,OAAO,wBAAwB,EAAE,mBAAmB,CAAC,CAIzE;IAED;;;;;;;;;OASG;IACH,0BAFa,MAAM,EAAE,CAIpB;IAED;;;;;;;;;OASG;IACH,kBAFa,OAAO,CAAC,MAAM,CAAC,CAI3B;IAED;;;OAGG;IACH,uBAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,kBAFa,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAIpD;IAED;;;;OAIG;IACH,0BAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,kBAFa,kBAAkB,CAM9B;IAED;;;;;OAKG;IACH,oCAHW;QAAC,QAAQ,EAAE,OAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAC,GACxD,OAAO,CAAC,OAAC,CAAC,CAgBtB;IAED;;;;OAIG;IACH,iBAFa,OAAO,CAAC,IAAI,CAAC,CAazB;IAED;;;;OAIG;IACH,kBAFa,IAAI,CAUhB;IAED;;;OAGG;IACH,0BAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,mBAHW,KAAK,GACH,IAAI,CAShB;IAED;;;OAGG;IACH,YAFa,OAAO,CAAC,OAAO,CAAC,CAM5B;IAED;;;OAGG;IACH,cAFa,OAAO,uBAAuB,EAAE,OAAO,CAMnD;IAED;;;;OAIG;IACH,4BAHW,OAAC,GACC,OAAO,wBAAwB,EAAE,wBAAwB,CAerE;IAED;;;;;;OAMG;IACH,uDAHW;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAC,CAAC;QAAC,cAAc,EAAE,OAAO,wBAAwB,EAAE,wBAAwB,CAAA;KAAC,GAChI,MAAM,CAQlB;IAED;;;OAGG;IACH,uBAFa,MAAM,CAAC,MAAM,EAAE,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,CAiBnF;CACF;0BApyByB,qBAAqB;+BAQhB,2BAA2B;mBANvC,cAAc"}