@thinkhive/sdk 4.2.2 → 4.2.4

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.
@@ -89,28 +89,38 @@ exports.conversationEval = {
89
89
  */
90
90
  function aggregateWorst(turnResults) {
91
91
  if (turnResults.length === 0)
92
- return { passed: false, score: 0 };
93
- const worstScore = Math.min(...turnResults.map(t => t.score));
94
- const passed = turnResults.every(t => t.passed);
92
+ return typeof turnResults[0] === 'number' ? 0 : { passed: false, score: 0 };
93
+ // Simple number array: return the minimum
94
+ if (typeof turnResults[0] === 'number') {
95
+ return Math.min(...turnResults);
96
+ }
97
+ const results = turnResults;
98
+ const worstScore = Math.min(...results.map(t => t.score));
99
+ const passed = results.every(t => t.passed);
95
100
  return { passed, score: worstScore };
96
101
  }
97
102
  /**
98
103
  * Calculate average aggregation
99
104
  *
100
- * @param turnResults - Array of turn evaluation results
101
- * @returns Aggregated result using average logic
105
+ * Accepts TurnEvaluation[] or simple number[]:
106
+ * - aggregateAverage(turnResults) — returns {passed, score}
107
+ * - aggregateAverage([0.6, 0.8]) — returns 0.7
102
108
  *
103
- * @example
104
- * ```typescript
105
- * const result = aggregateAverage(turnResults);
106
- * ```
109
+ * @param turnResults - Array of turn evaluation results or numbers
110
+ * @returns Aggregated result
107
111
  */
108
112
  function aggregateAverage(turnResults) {
109
113
  if (turnResults.length === 0)
110
- return { passed: false, score: 0 };
111
- const avgScore = turnResults.reduce((sum, t) => sum + t.score, 0) / turnResults.length;
112
- const passedCount = turnResults.filter(t => t.passed).length;
113
- const passed = passedCount > turnResults.length / 2;
114
+ return typeof turnResults[0] === 'number' ? 0 : { passed: false, score: 0 };
115
+ // Simple number array: return the mean
116
+ if (typeof turnResults[0] === 'number') {
117
+ const scores = turnResults;
118
+ return scores.reduce((sum, s) => sum + s, 0) / scores.length;
119
+ }
120
+ const results = turnResults;
121
+ const avgScore = results.reduce((sum, t) => sum + t.score, 0) / results.length;
122
+ const passedCount = results.filter(t => t.passed).length;
123
+ const passed = passedCount > results.length / 2;
114
124
  return { passed, score: avgScore };
115
125
  }
116
126
  /**
@@ -187,13 +197,16 @@ function aggregateMajority(turnResults) {
187
197
  * @returns Aggregation function
188
198
  */
189
199
  function getAggregator(method) {
200
+ // Wrap overloaded functions to match the expected signature
201
+ const wrapWorst = (t) => aggregateWorst(t);
202
+ const wrapAverage = (t) => aggregateAverage(t);
190
203
  switch (method) {
191
- case 'worst': return aggregateWorst;
192
- case 'average': return aggregateAverage;
204
+ case 'worst': return wrapWorst;
205
+ case 'average': return wrapAverage;
193
206
  case 'weighted': return aggregateWeighted;
194
207
  case 'final_turn': return aggregateFinalTurn;
195
208
  case 'majority': return aggregateMajority;
196
- default: return aggregateAverage;
209
+ default: return wrapAverage;
197
210
  }
198
211
  }
199
212
  /**
@@ -232,4 +245,4 @@ function analyzeConversationTrend(result) {
232
245
  direction = 'stable';
233
246
  return { direction, firstHalfAvg, secondHalfAvg };
234
247
  }
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWV2YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2NvbnZlcnNhdGlvbi1ldmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUE0SUgsd0NBT0M7QUFhRCw0Q0FRQztBQWNELDhDQW1CQztBQWNELGdEQUtDO0FBY0QsOENBUUM7QUFRRCxzQ0FXQztBQVNELGtEQUtDO0FBUUQsNERBeUJDO0FBbFRELDJDQUFvRDtBQXVEcEQsK0VBQStFO0FBQy9FLCtCQUErQjtBQUMvQiwrRUFBK0U7QUFFL0U7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHO0lBQzlCOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQWlCO1FBQ3RDLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsdUNBQXVDLFNBQVMsRUFBRSxFQUNsRCxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQW9DO1FBQ2pELE9BQU8sSUFBQSwyQkFBa0IsRUFBeUIsNkJBQTZCLEVBQUU7WUFDL0UsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixPQUFPLElBQUEsMkJBQWtCLEVBQ3ZCLHdDQUF3QyxFQUN4QyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDO0FBRUYsK0VBQStFO0FBQy9FLG1CQUFtQjtBQUNuQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixjQUFjLENBQUMsV0FBNkI7SUFDMUQsSUFBSSxXQUFXLENB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QU0sSUFBSSxHQUFHLGFBQWEsR0FBRyxZQUFZLENBQUM7SUFDMUMsSUFBSSxTQUErQyxDQUFDO0lBRXBELElBQUksSUFBSSxHQUFHLENBQUM7UUFBRSxTQUFTLEdBQUcsV0FBVyxDQUFDO1NBQ2pDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUFFLFNBQVMsR0FBRyxXQUFXLENBQUM7O1FBQ3ZDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gQ29udmVyc2F0aW9uIEV2YWx1YXRpb24gQVBJXG4gKlxuICogQVBJIGZvciBtdWx0aS10dXJuIGNvbnZlcnNhdGlvbiBldmFsdWF0aW9uXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBBZ2dyZWdhdGVNZXRob2QgPSAnd29yc3QnIHwgJ2F2ZXJhZ2UnIHwgJ3dlaWdodGVkJyB8ICdmaW5hbF90dXJuJyB8ICdtYWpvcml0eSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblRyYWNlIHtcbiAgaWQ6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHR1cm5OdW1iZXI6IG51bWJlcjtcbiAgdXNlck1lc3NhZ2U6IHN0cmluZztcbiAgYWdlbnRSZXNwb25zZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUdXJuRXZhbHVhdGlvbiB7XG4gIHRyYWNlSWQ6IHN0cmluZztcbiAgdHVybk51bWJlcjogbnVtYmVyO1xuICBwYXNzZWQ6IGJvb2xlYW47XG4gIHNjb3JlOiBudW1iZXI7XG4gIHJlYXNvbmluZzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbkV2YWxSZXN1bHQge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgY3JpdGVyaW9uSWQ6IHN0cmluZztcbiAgdHVybkNvdW50OiBudW1iZXI7XG4gIHR1cm5SZXN1bHRzOiBUdXJuRXZhbHVhdGlvbltdO1xuICBhZ2dyZWdhdGVQYXNzZWQ6IGJvb2xlYW47XG4gIGFnZ3JlZ2F0ZVNjb3JlOiBudW1iZXI7XG4gIGFnZ3JlZ2F0ZU1ldGhvZDogQWdncmVnYXRlTWV0aG9kO1xuICByZWFzb25pbmc6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZUNvbnZlcnNhdGlvbk9wdGlvbnMge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgY3JpdGVyaW9uSWQ6IHN0cmluZztcbiAgb3B0aW9ucz86IHtcbiAgICBhZ2dyZWdhdGVNZXRob2Q/OiBBZ2dyZWdhdGVNZXRob2Q7XG4gICAgbWluVHVybnM/OiBudW1iZXI7XG4gICAgbWF4VHVybnM/OiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRpb25NZXRob2RJbmZvIHtcbiAgaWQ6IEFnZ3JlZ2F0ZU1ldGhvZDtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB1c2VDYXNlOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTlZFUlNBVElPTiBFVkFMIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb252ZXJzYXRpb24gRXZhbHVhdGlvbiBBUEkgY2xpZW50IGZvciBtdWx0aS10dXJuIGV2YWx1YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnNhdGlvbkV2YWwgPSB7XG4gIC8qKlxuICAgKiBHZXQgdHJhY2VzIGZvciBhIGNvbnZlcnNhdGlvbiBzZXNzaW9uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdHJhY2VzID0gYXdhaXQgY29udmVyc2F0aW9uRXZhbC5nZXRTZXNzaW9uVHJhY2VzKCdzZXNzaW9uXzEyMycpO1xuICAgKiBjb25zb2xlLmxvZyhgQ29udmVyc2F0aW9uIGhhcyAke3RyYWNlcy5sZW5ndGh9IHR1cm5zYCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0U2Vzc2lvblRyYWNlcyhzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvblRyYWNlW10+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFNlc3Npb25UcmFjZVtdPihcbiAgICAgIGAvY29udmVyc2F0aW9uLWV2YWwvdHJhY2VzP3Nlc3Npb25JZD0ke3Nlc3Npb25JZH1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAnbm9uZScgfVxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJ1biBjb252ZXJzYXRpb24tbGV2ZWwgZXZhbHVhdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnZlcnNhdGlvbkV2YWwuZXZhbHVhdGUoe1xuICAgKiAgIHNlc3Npb25JZDogJ3Nlc3Npb25fMTIzJyxcbiAgICogICBjcml0ZXJpb25JZDogJ2NyaXRlcmlvbl80NTYnLFxuICAgKiAgIG9wdGlvbnM6IHtcbiAgICogICAgIGFnZ3JlZ2F0ZU1ldGhvZDogJ2F2ZXJhZ2UnLFxuICAgKiAgICAgbWluVHVybnM6IDIsXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGNvbnNvbGUubG9nKGBDb252ZXJzYXRpb24gc2NvcmU6ICR7cmVzdWx0LmFnZ3JlZ2F0ZVNjb3JlfWApO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGV2YWx1YXRlKG9wdGlvbnM6IEV2YWx1YXRlQ29udmVyc2F0aW9uT3B0aW9ucyk6IFByb21pc2U8Q29udmVyc2F0aW9uRXZhbFJlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8Q29udmVyc2F0aW9uRXZhbFJlc3VsdD4oJy9jb252ZXJzYXRpb24tZXZhbC9ldmFsdWF0ZScsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGF2YWlsYWJsZSBhZ2dyZWdhdGlvbiBtZXRob2RzIHdpdGggZGVzY3JpcHRpb25zXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbWV0aG9kcyA9IGF3YWl0IGNvbnZlcnNhdGlvbkV2YWwuZ2V0QWdncmVnYXRpb25NZXRob2RzKCk7XG4gICAqIGZvciAoY29uc3QgbWV0aG9kIG9mIG1ldGhvZHMpIHtcbiAgICogICBjb25zb2xlLmxvZyhgJHttZXRob2QubmFtZX06ICR7bWV0aG9kLmRlc2NyaXB0aW9ufWApO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0QWdncmVnYXRpb25NZXRob2RzKCk6IFByb21pc2U8QWdncmVnYXRpb25NZXRob2RJbmZvW10+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPEFnZ3JlZ2F0aW9uTWV0aG9kSW5mb1tdPihcbiAgICAgICcvY29udmVyc2F0aW9uLWV2YWwvYWdncmVnYXRpb24tbWV0aG9kcycsXG4gICAgICB7IGFwaVZlcnNpb246ICdub25lJyB9XG4gICAgKTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDYWxjdWxhdGUgd29yc3QtdHVybiBhZ2dyZWdhdGlvblxuICpcbiAqIEBwYXJhbSB0dXJuUmVzdWx0cyAtIEFycmF5IG9mIHR1cm4gZXZhbHVhdGlvbiByZXN1bHRzXG4gKiBAcmV0dXJucyBBZ2dyZWdhdGVkIHJlc3VsdCB1c2luZyB3b3JzdCB0dXJuIGxvZ2ljXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc3VsdCA9IGFnZ3JlZ2F0ZVdvcnN0KHR1cm5SZXN1bHRzKTtcbiAqIC8vIEZhaWxzIGlmIGFueSB0dXJuIGZhaWxzXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZVdvcnN0KHR1cm5SZXN1bHRzOiBUdXJuRXZhbHVhdGlvbltdKTogeyBwYXNzZWQ6IGJvb2xlYW47IHNjb3JlOiBudW1iZXIgfSB7XG4gIGlmICh0dXJuUmVzdWx0cy5sZW5ndGggPT09IDApIHJldHVybiB7IHBhc3NlZDogZmFsc2UsIHNjb3JlOiAwIH07XG5cbiAgY29uc3Qgd29yc3RTY29yZSA9IE1hdGgubWluKC4uLnR1cm5SZXN1bHRzLm1hcCh0ID0+IHQuc2NvcmUpKTtcbiAgY29uc3QgcGFzc2VkID0gdHVyblJlc3VsdHMuZXZlcnkodCA9PiB0LnBhc3NlZCk7XG5cbiAgcmV0dXJuIHsgcGFzc2VkLCBzY29yZTogd29yc3RTY29yZSB9O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBhdmVyYWdlIGFnZ3JlZ2F0aW9uXG4gKlxuICogQHBhcmFtIHR1cm5SZXN1bHRzIC0gQXJyYXkgb2YgdHVybiBldmFsdWF0aW9uIHJlc3VsdHNcbiAqIEByZXR1cm5zIEFnZ3JlZ2F0ZWQgcmVzdWx0IHVzaW5nIGF2ZXJhZ2UgbG9naWNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVzdWx0ID0gYWdncmVnYXRlQXZlcmFnZSh0dXJuUmVzdWx0cyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZUF2ZXJhZ2UodHVyblJlc3VsdHM6IFR1cm5FdmFsdWF0aW9uW10pOiB7IHBhc3NlZDogYm9vbGVhbjsgc2NvcmU6IG51bWJlciB9IHtcbiAgaWYgKHR1cm5SZXN1bHRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgcGFzc2VkOiBmYWxzZSwgc2NvcmU6IDAgfTtcblxuICBjb25zdCBhdmdTY29yZSA9IHR1cm5SZXN1bHRzLnJlZHVjZSgoc3VtLCB0KSA9PiBzdW0gKyB0LnNjb3JlLCAwKSAvIHR1cm5SZXN1bHRzLmxlbmd0aDtcbiAgY29uc3QgcGFzc2VkQ291bnQgPSB0dXJuUmVzdWx0cy5maWx0ZXIodCA9PiB0LnBhc3NlZCkubGVuZ3RoO1xuICBjb25zdCBwYXNzZWQgPSBwYXNzZWRDb3VudCA+IHR1cm5SZXN1bHRzLmxlbmd0aCAvIDI7XG5cbiAgcmV0dXJuIHsgcGFzc2VkLCBzY29yZTogYXZnU2NvcmUgfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgd2VpZ2h0ZWQgYXZlcmFnZSBhZ2dyZWdhdGlvbiAobGF0ZXIgdHVybnMgd2VpZ2h0ZWQgbW9yZSlcbiAqXG4gKiBAcGFyYW0gdHVyblJlc3VsdHMgLSBBcnJheSBvZiB0dXJuIGV2YWx1YXRpb24gcmVzdWx0c1xuICogQHJldHVybnMgQWdncmVnYXRlZCByZXN1bHQgdXNpbmcgd2VpZ2h0ZWQgYXZlcmFnZSBsb2dpY1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXN1bHQgPSBhZ2dyZWdhdGVXZWlnaHRlZCh0dXJuUmVzdWx0cyk7XG4gKiAvLyBMYXRlciB0dXJucyBoYXZlIGhpZ2hlciB3ZWlnaHRcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWdncmVnYXRlV2VpZ2h0ZWQodHVyblJlc3VsdHM6IFR1cm5FdmFsdWF0aW9uW10pOiB7IHBhc3NlZDogYm9vbGVhbjsgc2NvcmU6IG51bWJlciB9IHtcbiAgaWYgKHR1cm5SZXN1bHRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgcGFzc2VkOiBmYWxzZSwgc2NvcmU6IDAgfTtcblxuICAvLyBMaW5lYXIgd2VpZ2h0czogMSwgMiwgMywgLi4uXG4gIGxldCB3ZWlnaHRlZFN1bSA9IDA7XG4gIGxldCB3ZWlnaHRUb3RhbCA9IDA7XG4gIGxldCB3ZWlnaHRlZFBhc3NTdW0gPSAwO1xuXG4gIHR1cm5SZXN1bHRzLmZvckVhY2goKHR1cm4sIGluZGV4KSA9PiB7XG4gICAgY29uc3Qgd2VpZ2h0ID0gaW5kZXggKyAxO1xuICAgIHdlaWdodGVkU3VtICs9IHR1cm4uc2NvcmUgKiB3ZWlnaHQ7XG4gICAgd2VpZ2h0ZWRQYXNzU3VtICs9ICh0dXJuLnBhc3NlZCA/IDEgOiAwKSAqIHdlaWdodDtcbiAgICB3ZWlnaHRUb3RhbCArPSB3ZWlnaHQ7XG4gIH0pO1xuXG4gIGNvbnN0IGF2Z1Njb3JlID0gd2VpZ2h0ZWRTdW0gLyB3ZWlnaHRUb3RhbDtcbiAgY29uc3QgcGFzc2VkID0gKHdlaWdodGVkUGFzc1N1bSAvIHdlaWdodFRvdGFsKSA+IDAuNTtcblxuICByZXR1cm4geyBwYXNzZWQsIHNjb3JlOiBhdmdTY29yZSB9O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBmaW5hbC10dXJuIGFnZ3JlZ2F0aW9uXG4gKlxuICogQHBhcmFtIHR1cm5SZXN1bHRzIC0gQXJyYXkgb2YgdHVybiBldmFsdWF0aW9uIHJlc3VsdHNcbiAqIEByZXR1cm5zIEFnZ3JlZ2F0ZWQgcmVzdWx0IHVzaW5nIG9ubHkgdGhlIGZpbmFsIHR1cm5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVzdWx0ID0gYWdncmVnYXRlRmluYWxUdXJuKHR1cm5SZXN1bHRzKTtcbiAqIC8vIE9ubHkgZmluYWwgdHVybiBtYXR0ZXJzXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZUZpbmFsVHVybih0dXJuUmVzdWx0czogVHVybkV2YWx1YXRpb25bXSk6IHsgcGFzc2VkOiBib29sZWFuOyBzY29yZTogbnVtYmVyIH0ge1xuICBpZiAodHVyblJlc3VsdHMubGVuZ3RoID09PSAwKSByZXR1cm4geyBwYXNzZWQ6IGZhbHNlLCBzY29yZTogMCB9O1xuXG4gIGNvbnN0IGZpbmFsVHVybiA9IHR1cm5SZXN1bHRzW3R1cm5SZXN1bHRzLmxlbmd0aCAtIDFdO1xuICByZXR1cm4geyBwYXNzZWQ6IGZpbmFsVHVybi5wYXNzZWQsIHNjb3JlOiBmaW5hbFR1cm4uc2NvcmUgfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgbWFqb3JpdHkgdm90ZSBhZ2dyZWdhdGlvblxuICpcbiAqIEBwYXJhbSB0dXJuUmVzdWx0cyAtIEFycmF5IG9mIHR1cm4gZXZhbHVhdGlvbiByZXN1bHRzXG4gKiBAcmV0dXJucyBBZ2dyZWdhdGVkIHJlc3VsdCB1c2luZyBtYWpvcml0eSB2b3RlIGxvZ2ljXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc3VsdCA9IGFnZ3JlZ2F0ZU1ham9yaXR5KHR1cm5SZXN1bHRzKTtcbiAqIC8vIFBhc3NlcyBpZiBtYWpvcml0eSBvZiB0dXJucyBwYXNzXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZU1ham9yaXR5KHR1cm5SZXN1bHRzOiBUdXJuRXZhbHVhdGlvbltdKTogeyBwYXNzZWQ6IGJvb2xlYW47IHNjb3JlOiBudW1iZXIgfSB7XG4gIGlmICh0dXJuUmVzdWx0cy5sZW5ndGggPT09IDApIHJldHVybiB7IHBhc3NlZDogZmFsc2UsIHNjb3JlOiAwIH07XG5cbiAgY29uc3QgcGFzc2VkQ291bnQgPSB0dXJuUmVzdWx0cy5maWx0ZXIodCA9PiB0LnBhc3NlZCkubGVuZ3RoO1xuICBjb25zdCBwYXNzZWQgPSBwYXNzZWRDb3VudCA+IHR1cm5SZXN1bHRzLmxlbmd0aCAvIDI7XG4gIGNvbnN0IGF2Z1Njb3JlID0gdHVyblJlc3VsdHMucmVkdWNlKChzdW0sIHQpID0+IHN1bSArIHQuc2NvcmUsIDApIC8gdHVyblJlc3VsdHMubGVuZ3RoO1xuXG4gIHJldHVybiB7IHBhc3NlZCwgc2NvcmU6IGF2Z1Njb3JlIH07XG59XG5cbi8qKlxuICogR2V0IGFwcHJvcHJpYXRlIGFnZ3JlZ2F0aW9uIGZ1bmN0aW9uIGZvciBhIG1ldGhvZFxuICpcbiAqIEBwYXJhbSBtZXRob2QgLSBBZ2dyZWdhdGlvbiBtZXRob2QgbmFtZVxuICogQHJldHVybnMgQWdncmVnYXRpb24gZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFnZ3JlZ2F0b3IoXG4gIG1ldGhvZDogQWdncmVnYXRlTWV0aG9kXG4pOiAodHVyblJlc3VsdHM6IFR1cm5FdmFsdWF0aW9uW10pID0+IHsgcGFzc2VkOiBib29sZWFuOyBzY29yZTogbnVtYmVyIH0ge1xuICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgIGNhc2UgJ3dvcnN0JzogcmV0dXJuIGFnZ3JlZ2F0ZVdvcnN0O1xuICAgIGNhc2UgJ2F2ZXJhZ2UnOiByZXR1cm4gYWdncmVnYXRlQXZlcmFnZTtcbiAgICBjYXNlICd3ZWlnaHRlZCc6IHJldHVybiBhZ2dyZWdhdGVXZWlnaHRlZDtcbiAgICBjYXNlICdmaW5hbF90dXJuJzogcmV0dXJuIGFnZ3JlZ2F0ZUZpbmFsVHVybjtcbiAgICBjYXNlICdtYWpvcml0eSc6IHJldHVybiBhZ2dyZWdhdGVNYWpvcml0eTtcbiAgICBkZWZhdWx0OiByZXR1cm4gYWdncmVnYXRlQXZlcmFnZTtcbiAgfVxufVxuXG4vKipcbiAqIEZpbmQgcHJvYmxlbWF0aWMgdHVybnMgaW4gYSBjb252ZXJzYXRpb25cbiAqXG4gKiBAcGFyYW0gcmVzdWx0IC0gQ29udmVyc2F0aW9uIGV2YWx1YXRpb24gcmVzdWx0XG4gKiBAcGFyYW0gc2NvcmVUaHJlc2hvbGQgLSBNaW5pbXVtIGFjY2VwdGFibGUgc2NvcmUgKGRlZmF1bHQgNzApXG4gKiBAcmV0dXJucyBBcnJheSBvZiBwcm9ibGVtYXRpYyB0dXJuIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2JsZW1hdGljVHVybnMoXG4gIHJlc3VsdDogQ29udmVyc2F0aW9uRXZhbFJlc3VsdCxcbiAgc2NvcmVUaHJlc2hvbGQgPSA3MFxuKTogVHVybkV2YWx1YXRpb25bXSB7XG4gIHJldHVybiByZXN1bHQudHVyblJlc3VsdHMuZmlsdGVyKHQgPT4gIXQucGFzc2VkIHx8IHQuc2NvcmUgPCBzY29yZVRocmVzaG9sZCk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIGNvbnZlcnNhdGlvbiBxdWFsaXR5IHRyZW5kXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIENvbnZlcnNhdGlvbiBldmFsdWF0aW9uIHJlc3VsdFxuICogQHJldHVybnMgVHJlbmQgYW5hbHlzaXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuYWx5emVDb252ZXJzYXRpb25UcmVuZChyZXN1bHQ6IENvbnZlcnNhdGlvbkV2YWxSZXN1bHQpOiB7XG4gIGRpcmVjdGlvbjogJ2ltcHJvdmluZycgfCAnZGVjbGluaW5nJyB8ICdzdGFibGUnO1xuICBmaXJzdEhhbGZBdmc6IG51bWJlcjtcbiAgc2Vjb25kSGFsZkF2ZzogbnVtYmVyO1xufSB7XG4gIGNvbnN0IHR1cm5zID0gcmVzdWx0LnR1cm5SZXN1bHRzO1xuICBpZiAodHVybnMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiB7IGRpcmVjdGlvbjogJ3N0YWJsZScsIGZpcnN0SGFsZkF2ZzogMCwgc2Vjb25kSGFsZkF2ZzogMCB9O1xuICB9XG5cbiAgY29uc3QgbWlkcG9pbnQgPSBNYXRoLmZsb29yKHR1cm5zLmxlbmd0aCAvIDIpO1xuICBjb25zdCBmaXJzdEhhbGYgPSB0dXJucy5zbGljZSgwLCBtaWRwb2ludCk7XG4gIGNvbnN0IHNlY29uZEhhbGYgPSB0dXJucy5zbGljZShtaWRwb2ludCk7XG5cbiAgY29uc3QgZmlyc3RIYWxmQXZnID0gZmlyc3RIYWxmLnJlZHVjZSgoc3VtLCB0KSA9PiBzdW0gKyB0LnNjb3JlLCAwKSAvIGZpcnN0SGFsZi5sZW5ndGg7XG4gIGNvbnN0IHNlY29uZEhhbGZBdmcgPSBzZWNvbmRIYWxmLnJlZHVjZSgoc3VtLCB0KSA9PiBzdW0gKyB0LnNjb3JlLCAwKSAvIHNlY29uZEhhbGYubGVuZ3RoO1xuXG4gIGNvbnN0IGRpZmYgPSBzZWNvbmRIYWxmQXZnIC0gZmlyc3RIYWxmQXZnO1xuICBsZXQgZGlyZWN0aW9uOiAnaW1wcm92aW5nJyB8ICdkZWNsaW5pbmcnIHwgJ3N0YWJsZSc7XG5cbiAgaWYgKGRpZmYgPiA1KSBkaXJlY3Rpb24gPSAnaW1wcm92aW5nJztcbiAgZWxzZSBpZiAoZGlmZiA8IC01KSBkaXJlY3Rpb24gPSAnZGVjbGluaW5nJztcbiAgZWxzZSBkaXJlY3Rpb24gPSAnc3RhYmxlJztcblxuICByZXR1cm4geyBkaXJlY3Rpb24sIGZpcnN0SGFsZkF2Zywgc2Vjb25kSGFsZkF2ZyB9O1xufVxuIl19
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWV2YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2NvbnZlcnNhdGlvbi1ldmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUE0SUgsd0NBYUM7QUFZRCw0Q0FlQztBQWNELDhDQW1CQztBQWNELGdEQUtDO0FBY0QsOENBUUM7QUFRRCxzQ0FlQztBQVNELGtEQUtDO0FBUUQsNERBeUJDO0FBbFVELDJDQUFvRDtBQXVEcEQsK0VBQStFO0FBQy9FLCtCQUErQjtBQUMvQiwrRUFBK0U7QUFFL0U7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHO0lBQzlCOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQWlCO1FBQ3RDLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsdUNBQXVDLFNBQVMsRUFBRSxFQUNsRCxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQW9DO1FBQ2pELE9BQU8sSUFBQSwyQkFBa0IsRUFBeUIsNkJBQTZCLEVBQUU7WUFDL0UsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixPQUFPLElBQUEsMkJBQWtCLEVBQ3ZCLHdDQUF3QyxFQUN4QyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDO0FBRUYsK0VBQStFO0FBQy9FLG1CQUFtQjtBQUNuQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixjQUFjLENBQUMsV0FBd0M7SUFDckUsSUFBSSxXQUFXLENB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RyxRQUFRLENBQUM7SUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gQ29udmVyc2F0aW9uIEV2YWx1YXRpb24gQVBJXG4gKlxuICogQVBJIGZvciBtdWx0aS10dXJuIGNvbnZlcnNhdGlvbiBldmFsdWF0aW9uXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBBZ2dyZWdhdGVNZXRob2QgPSAnd29yc3QnIHwgJ2F2ZXJhZ2UnIHwgJ3dlaWdodGVkJyB8ICdmaW5hbF90dXJuJyB8ICdtYWpvcml0eSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblRyYWNlIHtcbiAgaWQ6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHR1cm5OdW1iZXI6IG51bWJlcjtcbiAgdXNlck1lc3NhZ2U6IHN0cmluZztcbiAgYWdlbnRSZXNwb25zZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUdXJuRXZhbHVhdGlvbiB7XG4gIHRyYWNlSWQ6IHN0cmluZztcbiAgdHVybk51bWJlcjogbnVtYmVyO1xuICBwYXNzZWQ6IGJvb2xlYW47XG4gIHNjb3JlOiBudW1iZXI7XG4gIHJlYXNvbmluZzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbkV2YWxSZXN1bHQge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgY3JpdGVyaW9uSWQ6IHN0cmluZztcbiAgdHVybkNvdW50OiBudW1iZXI7XG4gIHR1cm5SZXN1bHRzOiBUdXJuRXZhbHVhdGlvbltdO1xuICBhZ2dyZWdhdGVQYXNzZWQ6IGJvb2xlYW47XG4gIGFnZ3JlZ2F0ZVNjb3JlOiBudW1iZXI7XG4gIGFnZ3JlZ2F0ZU1ldGhvZDogQWdncmVnYXRlTWV0aG9kO1xuICByZWFzb25pbmc6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZUNvbnZlcnNhdGlvbk9wdGlvbnMge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgY3JpdGVyaW9uSWQ6IHN0cmluZztcbiAgb3B0aW9ucz86IHtcbiAgICBhZ2dyZWdhdGVNZXRob2Q/OiBBZ2dyZWdhdGVNZXRob2Q7XG4gICAgbWluVHVybnM/OiBudW1iZXI7XG4gICAgbWF4VHVybnM/OiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRpb25NZXRob2RJbmZvIHtcbiAgaWQ6IEFnZ3JlZ2F0ZU1ldGhvZDtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB1c2VDYXNlOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTlZFUlNBVElPTiBFVkFMIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb252ZXJzYXRpb24gRXZhbHVhdGlvbiBBUEkgY2xpZW50IGZvciBtdWx0aS10dXJuIGV2YWx1YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnNhdGlvbkV2YWwgPSB7XG4gIC8qKlxuICAgKiBHZXQgdHJhY2VzIGZvciBhIGNvbnZlcnNhdGlvbiBzZXNzaW9uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdHJhY2VzID0gYXdhaXQgY29udmVyc2F0aW9uRXZhbC5nZXRTZXNzaW9uVHJhY2VzKCdzZXNzaW9uXzEyMycpO1xuICAgKiBjb25zb2xlLmxvZyhgQ29udmVyc2F0aW9uIGhhcyAke3RyYWNlcy5sZW5ndGh9IHR1cm5zYCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0U2Vzc2lvblRyYWNlcyhzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvblRyYWNlW10+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFNlc3Npb25UcmFjZVtdPihcbiAgICAgIGAvY29udmVyc2F0aW9uLWV2YWwvdHJhY2VzP3Nlc3Npb25JZD0ke3Nlc3Npb25JZH1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAnbm9uZScgfVxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJ1biBjb252ZXJzYXRpb24tbGV2ZWwgZXZhbHVhdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnZlcnNhdGlvbkV2YWwuZXZhbHVhdGUoe1xuICAgKiAgIHNlc3Npb25JZDogJ3Nlc3Npb25fMTIzJyxcbiAgICogICBjcml0ZXJpb25JZDogJ2NyaXRlcmlvbl80NTYnLFxuICAgKiAgIG9wdGlvbnM6IHtcbiAgICogICAgIGFnZ3JlZ2F0ZU1ldGhvZDogJ2F2ZXJhZ2UnLFxuICAgKiAgICAgbWluVHVybnM6IDIsXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGNvbnNvbGUubG9nKGBDb252ZXJzYXRpb24gc2NvcmU6ICR7cmVzdWx0LmFnZ3JlZ2F0ZVNjb3JlfWApO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGV2YWx1YXRlKG9wdGlvbnM6IEV2YWx1YXRlQ29udmVyc2F0aW9uT3B0aW9ucyk6IFByb21pc2U8Q29udmVyc2F0aW9uRXZhbFJlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8Q29udmVyc2F0aW9uRXZhbFJlc3VsdD4oJy9jb252ZXJzYXRpb24tZXZhbC9ldmFsdWF0ZScsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGF2YWlsYWJsZSBhZ2dyZWdhdGlvbiBtZXRob2RzIHdpdGggZGVzY3JpcHRpb25zXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbWV0aG9kcyA9IGF3YWl0IGNvbnZlcnNhdGlvbkV2YWwuZ2V0QWdncmVnYXRpb25NZXRob2RzKCk7XG4gICAqIGZvciAoY29uc3QgbWV0aG9kIG9mIG1ldGhvZHMpIHtcbiAgICogICBjb25zb2xlLmxvZyhgJHttZXRob2QubmFtZX06ICR7bWV0aG9kLmRlc2NyaXB0aW9ufWApO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0QWdncmVnYXRpb25NZXRob2RzKCk6IFByb21pc2U8QWdncmVnYXRpb25NZXRob2RJbmZvW10+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPEFnZ3JlZ2F0aW9uTWV0aG9kSW5mb1tdPihcbiAgICAgICcvY29udmVyc2F0aW9uLWV2YWwvYWdncmVnYXRpb24tbWV0aG9kcycsXG4gICAgICB7IGFwaVZlcnNpb246ICdub25lJyB9XG4gICAgKTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDYWxjdWxhdGUgd29yc3QtdHVybiBhZ2dyZWdhdGlvblxuICpcbiAqIEBwYXJhbSB0dXJuUmVzdWx0cyAtIEFycmF5IG9mIHR1cm4gZXZhbHVhdGlvbiByZXN1bHRzXG4gKiBAcmV0dXJucyBBZ2dyZWdhdGVkIHJlc3VsdCB1c2luZyB3b3JzdCB0dXJuIGxvZ2ljXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc3VsdCA9IGFnZ3JlZ2F0ZVdvcnN0KHR1cm5SZXN1bHRzKTtcbiAqIC8vIEZhaWxzIGlmIGFueSB0dXJuIGZhaWxzXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZVdvcnN0KHR1cm5SZXN1bHRzOiBUdXJuRXZhbHVhdGlvbltdIHwgbnVtYmVyW10pOiBudW1iZXIgfCB7IHBhc3NlZDogYm9vbGVhbjsgc2NvcmU6IG51bWJlciB9IHtcbiAgaWYgKHR1cm5SZXN1bHRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHR5cGVvZiB0dXJuUmVzdWx0c1swXSA9PT0gJ251bWJlcicgPyAwIDogeyBwYXNzZWQ6IGZhbHNlLCBzY29yZTogMCB9O1xuXG4gIC8vIFNpbXBsZSBudW1iZXIgYXJyYXk6IHJldHVybiB0aGUgbWluaW11bVxuICBpZiAodHlwZW9mIHR1cm5SZXN1bHRzWzBdID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBNYXRoLm1pbiguLi4odHVyblJlc3VsdHMgYXMgbnVtYmVyW10pKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHMgPSB0dXJuUmVzdWx0cyBhcyBUdXJuRXZhbHVhdGlvbltdO1xuICBjb25zdCB3b3JzdFNjb3JlID0gTWF0aC5taW4oLi4ucmVzdWx0cy5tYXAodCA9PiB0LnNjb3JlKSk7XG4gIGNvbnN0IHBhc3NlZCA9IHJlc3VsdHMuZXZlcnkodCA9PiB0LnBhc3NlZCk7XG5cbiAgcmV0dXJuIHsgcGFzc2VkLCBzY29yZTogd29yc3RTY29yZSB9O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBhdmVyYWdlIGFnZ3JlZ2F0aW9uXG4gKlxuICogQWNjZXB0cyBUdXJuRXZhbHVhdGlvbltdIG9yIHNpbXBsZSBudW1iZXJbXTpcbiAqIC0gYWdncmVnYXRlQXZlcmFnZSh0dXJuUmVzdWx0cykgIOKAlCByZXR1cm5zIHtwYXNzZWQsIHNjb3JlfVxuICogLSBhZ2dyZWdhdGVBdmVyYWdlKFswLjYsIDAuOF0pICAg4oCUIHJldHVybnMgMC43XG4gKlxuICogQHBhcmFtIHR1cm5SZXN1bHRzIC0gQXJyYXkgb2YgdHVybiBldmFsdWF0aW9uIHJlc3VsdHMgb3IgbnVtYmVyc1xuICogQHJldHVybnMgQWdncmVnYXRlZCByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZUF2ZXJhZ2UodHVyblJlc3VsdHM6IFR1cm5FdmFsdWF0aW9uW10gfCBudW1iZXJbXSk6IG51bWJlciB8IHsgcGFzc2VkOiBib29sZWFuOyBzY29yZTogbnVtYmVyIH0ge1xuICBpZiAodHVyblJlc3VsdHMubGVuZ3RoID09PSAwKSByZXR1cm4gdHlwZW9mIHR1cm5SZXN1bHRzWzBdID09PSAnbnVtYmVyJyA/IDAgOiB7IHBhc3NlZDogZmFsc2UsIHNjb3JlOiAwIH07XG5cbiAgLy8gU2ltcGxlIG51bWJlciBhcnJheTogcmV0dXJuIHRoZSBtZWFuXG4gIGlmICh0eXBlb2YgdHVyblJlc3VsdHNbMF0gPT09ICdudW1iZXInKSB7XG4gICAgY29uc3Qgc2NvcmVzID0gdHVyblJlc3VsdHMgYXMgbnVtYmVyW107XG4gICAgcmV0dXJuIHNjb3Jlcy5yZWR1Y2UoKHN1bSwgcykgPT4gc3VtICsgcywgMCkgLyBzY29yZXMubGVuZ3RoO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0cyA9IHR1cm5SZXN1bHRzIGFzIFR1cm5FdmFsdWF0aW9uW107XG4gIGNvbnN0IGF2Z1Njb3JlID0gcmVzdWx0cy5yZWR1Y2UoKHN1bSwgdCkgPT4gc3VtICsgdC5zY29yZSwgMCkgLyByZXN1bHRzLmxlbmd0aDtcbiAgY29uc3QgcGFzc2VkQ291bnQgPSByZXN1bHRzLmZpbHRlcih0ID0+IHQucGFzc2VkKS5sZW5ndGg7XG4gIGNvbnN0IHBhc3NlZCA9IHBhc3NlZENvdW50ID4gcmVzdWx0cy5sZW5ndGggLyAyO1xuXG4gIHJldHVybiB7IHBhc3NlZCwgc2NvcmU6IGF2Z1Njb3JlIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHdlaWdodGVkIGF2ZXJhZ2UgYWdncmVnYXRpb24gKGxhdGVyIHR1cm5zIHdlaWdodGVkIG1vcmUpXG4gKlxuICogQHBhcmFtIHR1cm5SZXN1bHRzIC0gQXJyYXkgb2YgdHVybiBldmFsdWF0aW9uIHJlc3VsdHNcbiAqIEByZXR1cm5zIEFnZ3JlZ2F0ZWQgcmVzdWx0IHVzaW5nIHdlaWdodGVkIGF2ZXJhZ2UgbG9naWNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVzdWx0ID0gYWdncmVnYXRlV2VpZ2h0ZWQodHVyblJlc3VsdHMpO1xuICogLy8gTGF0ZXIgdHVybnMgaGF2ZSBoaWdoZXIgd2VpZ2h0XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZVdlaWdodGVkKHR1cm5SZXN1bHRzOiBUdXJuRXZhbHVhdGlvbltdKTogeyBwYXNzZWQ6IGJvb2xlYW47IHNjb3JlOiBudW1iZXIgfSB7XG4gIGlmICh0dXJuUmVzdWx0cy5sZW5ndGggPT09IDApIHJldHVybiB7IHBhc3NlZDogZmFsc2UsIHNjb3JlOiAwIH07XG5cbiAgLy8gTGluZWFyIHdlaWdodHM6IDEsIDIsIDMsIC4uLlxuICBsZXQgd2VpZ2h0ZWRTdW0gPSAwO1xuICBsZXQgd2VpZ2h0VG90YWwgPSAwO1xuICBsZXQgd2VpZ2h0ZWRQYXNzU3VtID0gMDtcblxuICB0dXJuUmVzdWx0cy5mb3JFYWNoKCh0dXJuLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHdlaWdodCA9IGluZGV4ICsgMTtcbiAgICB3ZWlnaHRlZFN1bSArPSB0dXJuLnNjb3JlICogd2VpZ2h0O1xuICAgIHdlaWdodGVkUGFzc1N1bSArPSAodHVybi5wYXNzZWQgPyAxIDogMCkgKiB3ZWlnaHQ7XG4gICAgd2VpZ2h0VG90YWwgKz0gd2VpZ2h0O1xuICB9KTtcblxuICBjb25zdCBhdmdTY29yZSA9IHdlaWdodGVkU3VtIC8gd2VpZ2h0VG90YWw7XG4gIGNvbnN0IHBhc3NlZCA9ICh3ZWlnaHRlZFBhc3NTdW0gLyB3ZWlnaHRUb3RhbCkgPiAwLjU7XG5cbiAgcmV0dXJuIHsgcGFzc2VkLCBzY29yZTogYXZnU2NvcmUgfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgZmluYWwtdHVybiBhZ2dyZWdhdGlvblxuICpcbiAqIEBwYXJhbSB0dXJuUmVzdWx0cyAtIEFycmF5IG9mIHR1cm4gZXZhbHVhdGlvbiByZXN1bHRzXG4gKiBAcmV0dXJucyBBZ2dyZWdhdGVkIHJlc3VsdCB1c2luZyBvbmx5IHRoZSBmaW5hbCB0dXJuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc3VsdCA9IGFnZ3JlZ2F0ZUZpbmFsVHVybih0dXJuUmVzdWx0cyk7XG4gKiAvLyBPbmx5IGZpbmFsIHR1cm4gbWF0dGVyc1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZ2dyZWdhdGVGaW5hbFR1cm4odHVyblJlc3VsdHM6IFR1cm5FdmFsdWF0aW9uW10pOiB7IHBhc3NlZDogYm9vbGVhbjsgc2NvcmU6IG51bWJlciB9IHtcbiAgaWYgKHR1cm5SZXN1bHRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgcGFzc2VkOiBmYWxzZSwgc2NvcmU6IDAgfTtcblxuICBjb25zdCBmaW5hbFR1cm4gPSB0dXJuUmVzdWx0c1t0dXJuUmVzdWx0cy5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIHsgcGFzc2VkOiBmaW5hbFR1cm4ucGFzc2VkLCBzY29yZTogZmluYWxUdXJuLnNjb3JlIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIG1ham9yaXR5IHZvdGUgYWdncmVnYXRpb25cbiAqXG4gKiBAcGFyYW0gdHVyblJlc3VsdHMgLSBBcnJheSBvZiB0dXJuIGV2YWx1YXRpb24gcmVzdWx0c1xuICogQHJldHVybnMgQWdncmVnYXRlZCByZXN1bHQgdXNpbmcgbWFqb3JpdHkgdm90ZSBsb2dpY1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXN1bHQgPSBhZ2dyZWdhdGVNYWpvcml0eSh0dXJuUmVzdWx0cyk7XG4gKiAvLyBQYXNzZXMgaWYgbWFqb3JpdHkgb2YgdHVybnMgcGFzc1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZ2dyZWdhdGVNYWpvcml0eSh0dXJuUmVzdWx0czogVHVybkV2YWx1YXRpb25bXSk6IHsgcGFzc2VkOiBib29sZWFuOyBzY29yZTogbnVtYmVyIH0ge1xuICBpZiAodHVyblJlc3VsdHMubGVuZ3RoID09PSAwKSByZXR1cm4geyBwYXNzZWQ6IGZhbHNlLCBzY29yZTogMCB9O1xuXG4gIGNvbnN0IHBhc3NlZENvdW50ID0gdHVyblJlc3VsdHMuZmlsdGVyKHQgPT4gdC5wYXNzZWQpLmxlbmd0aDtcbiAgY29uc3QgcGFzc2VkID0gcGFzc2VkQ291bnQgPiB0dXJuUmVzdWx0cy5sZW5ndGggLyAyO1xuICBjb25zdCBhdmdTY29yZSA9IHR1cm5SZXN1bHRzLnJlZHVjZSgoc3VtLCB0KSA9PiBzdW0gKyB0LnNjb3JlLCAwKSAvIHR1cm5SZXN1bHRzLmxlbmd0aDtcblxuICByZXR1cm4geyBwYXNzZWQsIHNjb3JlOiBhdmdTY29yZSB9O1xufVxuXG4vKipcbiAqIEdldCBhcHByb3ByaWF0ZSBhZ2dyZWdhdGlvbiBmdW5jdGlvbiBmb3IgYSBtZXRob2RcbiAqXG4gKiBAcGFyYW0gbWV0aG9kIC0gQWdncmVnYXRpb24gbWV0aG9kIG5hbWVcbiAqIEByZXR1cm5zIEFnZ3JlZ2F0aW9uIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2dyZWdhdG9yKFxuICBtZXRob2Q6IEFnZ3JlZ2F0ZU1ldGhvZFxuKTogKHR1cm5SZXN1bHRzOiBUdXJuRXZhbHVhdGlvbltdKSA9PiB7IHBhc3NlZDogYm9vbGVhbjsgc2NvcmU6IG51bWJlciB9IHtcbiAgLy8gV3JhcCBvdmVybG9hZGVkIGZ1bmN0aW9ucyB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgc2lnbmF0dXJlXG4gIGNvbnN0IHdyYXBXb3JzdCA9ICh0OiBUdXJuRXZhbHVhdGlvbltdKSA9PiBhZ2dyZWdhdGVXb3JzdCh0KSBhcyB7IHBhc3NlZDogYm9vbGVhbjsgc2NvcmU6IG51bWJlciB9O1xuICBjb25zdCB3cmFwQXZlcmFnZSA9ICh0OiBUdXJuRXZhbHVhdGlvbltdKSA9PiBhZ2dyZWdhdGVBdmVyYWdlKHQpIGFzIHsgcGFzc2VkOiBib29sZWFuOyBzY29yZTogbnVtYmVyIH07XG5cbiAgc3dpdGNoIChtZXRob2QpIHtcbiAgICBjYXNlICd3b3JzdCc6IHJldHVybiB3cmFwV29yc3Q7XG4gICAgY2FzZSAnYXZlcmFnZSc6IHJldHVybiB3cmFwQXZlcmFnZTtcbiAgICBjYXNlICd3ZWlnaHRlZCc6IHJldHVybiBhZ2dyZWdhdGVXZWlnaHRlZDtcbiAgICBjYXNlICdmaW5hbF90dXJuJzogcmV0dXJuIGFnZ3JlZ2F0ZUZpbmFsVHVybjtcbiAgICBjYXNlICdtYWpvcml0eSc6IHJldHVybiBhZ2dyZWdhdGVNYWpvcml0eTtcbiAgICBkZWZhdWx0OiByZXR1cm4gd3JhcEF2ZXJhZ2U7XG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kIHByb2JsZW1hdGljIHR1cm5zIGluIGEgY29udmVyc2F0aW9uXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIENvbnZlcnNhdGlvbiBldmFsdWF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHNjb3JlVGhyZXNob2xkIC0gTWluaW11bSBhY2NlcHRhYmxlIHNjb3JlIChkZWZhdWx0IDcwKVxuICogQHJldHVybnMgQXJyYXkgb2YgcHJvYmxlbWF0aWMgdHVybiByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9ibGVtYXRpY1R1cm5zKFxuICByZXN1bHQ6IENvbnZlcnNhdGlvbkV2YWxSZXN1bHQsXG4gIHNjb3JlVGhyZXNob2xkID0gNzBcbik6IFR1cm5FdmFsdWF0aW9uW10ge1xuICByZXR1cm4gcmVzdWx0LnR1cm5SZXN1bHRzLmZpbHRlcih0ID0+ICF0LnBhc3NlZCB8fCB0LnNjb3JlIDwgc2NvcmVUaHJlc2hvbGQpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBjb252ZXJzYXRpb24gcXVhbGl0eSB0cmVuZFxuICpcbiAqIEBwYXJhbSByZXN1bHQgLSBDb252ZXJzYXRpb24gZXZhbHVhdGlvbiByZXN1bHRcbiAqIEByZXR1cm5zIFRyZW5kIGFuYWx5c2lzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbmFseXplQ29udmVyc2F0aW9uVHJlbmQocmVzdWx0OiBDb252ZXJzYXRpb25FdmFsUmVzdWx0KToge1xuICBkaXJlY3Rpb246ICdpbXByb3ZpbmcnIHwgJ2RlY2xpbmluZycgfCAnc3RhYmxlJztcbiAgZmlyc3RIYWxmQXZnOiBudW1iZXI7XG4gIHNlY29uZEhhbGZBdmc6IG51bWJlcjtcbn0ge1xuICBjb25zdCB0dXJucyA9IHJlc3VsdC50dXJuUmVzdWx0cztcbiAgaWYgKHR1cm5zLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4geyBkaXJlY3Rpb246ICdzdGFibGUnLCBmaXJzdEhhbGZBdmc6IDAsIHNlY29uZEhhbGZBdmc6IDAgfTtcbiAgfVxuXG4gIGNvbnN0IG1pZHBvaW50ID0gTWF0aC5mbG9vcih0dXJucy5sZW5ndGggLyAyKTtcbiAgY29uc3QgZmlyc3RIYWxmID0gdHVybnMuc2xpY2UoMCwgbWlkcG9pbnQpO1xuICBjb25zdCBzZWNvbmRIYWxmID0gdHVybnMuc2xpY2UobWlkcG9pbnQpO1xuXG4gIGNvbnN0IGZpcnN0SGFsZkF2ZyA9IGZpcnN0SGFsZi5yZWR1Y2UoKHN1bSwgdCkgPT4gc3VtICsgdC5zY29yZSwgMCkgLyBmaXJzdEhhbGYubGVuZ3RoO1xuICBjb25zdCBzZWNvbmRIYWxmQXZnID0gc2Vjb25kSGFsZi5yZWR1Y2UoKHN1bSwgdCkgPT4gc3VtICsgdC5zY29yZSwgMCkgLyBzZWNvbmRIYWxmLmxlbmd0aDtcblxuICBjb25zdCBkaWZmID0gc2Vjb25kSGFsZkF2ZyAtIGZpcnN0SGFsZkF2ZztcbiAgbGV0IGRpcmVjdGlvbjogJ2ltcHJvdmluZycgfCAnZGVjbGluaW5nJyB8ICdzdGFibGUnO1xuXG4gIGlmIChkaWZmID4gNSkgZGlyZWN0aW9uID0gJ2ltcHJvdmluZyc7XG4gIGVsc2UgaWYgKGRpZmYgPCAtNSkgZGlyZWN0aW9uID0gJ2RlY2xpbmluZyc7XG4gIGVsc2UgZGlyZWN0aW9uID0gJ3N0YWJsZSc7XG5cbiAgcmV0dXJuIHsgZGlyZWN0aW9uLCBmaXJzdEhhbGZBdmcsIHNlY29uZEhhbGZBdmcgfTtcbn1cbiJdfQ==
@@ -113,63 +113,68 @@ export declare const deterministicGraders: {
113
113
  */
114
114
  getTemplates(): Promise<RuleTemplate[]>;
115
115
  };
116
+ /**
117
+ * Named rule configuration with type, name, and config
118
+ */
119
+ export interface NamedRuleConfig {
120
+ type: RuleType;
121
+ name: string;
122
+ config: Record<string, unknown>;
123
+ }
116
124
  /**
117
125
  * Create a regex rule configuration
118
126
  *
127
+ * @param name - Rule name for identification
128
+ * @param field - Field to check ('output', 'input', etc.)
119
129
  * @param pattern - Regular expression pattern
120
130
  * @param flags - Regex flags (default: 'gi')
121
- * @returns Rule configuration object
131
+ * @returns Named rule configuration object
122
132
  *
123
133
  * @example
124
134
  * ```typescript
125
- * const config = createRegexRule('\\b(error|fail)\\b', 'gi');
135
+ * const rule = createRegexRule('email_check', 'output', '\\w+@\\w+\\.\\w+');
126
136
  * ```
127
137
  */
128
- export declare function createRegexRule(pattern: string, flags?: string): {
129
- pattern: string;
130
- flags: string;
131
- };
138
+ export declare function createRegexRule(name: string, field: string, pattern: string, flags?: string): NamedRuleConfig;
132
139
  /**
133
140
  * Create a contains rule configuration
134
141
  *
142
+ * @param name - Rule name for identification
143
+ * @param field - Field to check ('output', 'input', etc.)
135
144
  * @param values - Strings to check for
136
145
  * @param caseSensitive - Whether comparison is case-sensitive
137
- * @returns Rule configuration object
146
+ * @returns Named rule configuration object
138
147
  *
139
148
  * @example
140
149
  * ```typescript
141
- * const config = createContainsRule(['hello', 'hi', 'hey'], false);
150
+ * const rule = createContainsRule('greeting', 'output', ['hello', 'hi', 'hey']);
142
151
  * ```
143
152
  */
144
- export declare function createContainsRule(values: string[], caseSensitive?: boolean): {
145
- values: string[];
146
- caseSensitive: boolean;
147
- };
153
+ export declare function createContainsRule(name: string, field: string, values: string[], caseSensitive?: boolean): NamedRuleConfig;
148
154
  /**
149
155
  * Create a length rule configuration
150
156
  *
157
+ * @param name - Rule name for identification
151
158
  * @param min - Minimum length (optional)
152
159
  * @param max - Maximum length (optional)
153
- * @returns Rule configuration object
160
+ * @returns Named rule configuration object
154
161
  *
155
162
  * @example
156
163
  * ```typescript
157
- * const config = createLengthRule(50, 1000);
164
+ * const rule = createLengthRule('response_length', 50, 1000);
158
165
  * ```
159
166
  */
160
- export declare function createLengthRule(min?: number, max?: number): {
161
- min?: number;
162
- max?: number;
163
- };
167
+ export declare function createLengthRule(name: string, min?: number, max?: number): NamedRuleConfig;
164
168
  /**
165
169
  * Create a JSON schema rule configuration
166
170
  *
171
+ * @param name - Rule name for identification
167
172
  * @param schema - JSON Schema object
168
- * @returns Rule configuration object
173
+ * @returns Named rule configuration object
169
174
  *
170
175
  * @example
171
176
  * ```typescript
172
- * const config = createJsonSchemaRule({
177
+ * const rule = createJsonSchemaRule('response_format', {
173
178
  * type: 'object',
174
179
  * required: ['name', 'email'],
175
180
  * properties: {
@@ -179,27 +184,31 @@ export declare function createLengthRule(min?: number, max?: number): {
179
184
  * });
180
185
  * ```
181
186
  */
182
- export declare function createJsonSchemaRule(schema: Record<string, unknown>): {
183
- schema: Record<string, unknown>;
184
- };
187
+ export declare function createJsonSchemaRule(name: string, schema: Record<string, unknown>): NamedRuleConfig;
185
188
  /**
186
189
  * Check if all rule results passed
187
190
  *
188
- * @param results - Array of rule results
191
+ * @param results - Array of rule results (or any objects with a `passed` boolean)
189
192
  * @returns Whether all rules passed
190
193
  */
191
- export declare function allRulesPassed(results: RuleResult[]): boolean;
194
+ export declare function allRulesPassed(results: Array<{
195
+ passed: boolean;
196
+ }>): boolean;
192
197
  /**
193
198
  * Get failed rules from results
194
199
  *
195
- * @param results - Array of rule results
200
+ * @param results - Array of rule results (or any objects with a `passed` boolean)
196
201
  * @returns Array of failed rule results
197
202
  */
198
- export declare function getFailedRules(results: RuleResult[]): RuleResult[];
203
+ export declare function getFailedRules<T extends {
204
+ passed: boolean;
205
+ }>(results: T[]): T[];
199
206
  /**
200
207
  * Calculate average score from rule results
201
208
  *
202
209
  * @param results - Array of rule results
203
210
  * @returns Average score (0-100)
204
211
  */
205
- export declare function calculateAverageScore(results: RuleResult[]): number;
212
+ export declare function calculateAverageScore(results: Array<{
213
+ score: number;
214
+ }>): number;
@@ -89,63 +89,66 @@ exports.deterministicGraders = {
89
89
  return (0, client_1.apiRequestWithData)('/deterministic-graders/templates', { apiVersion: 'none' });
90
90
  },
91
91
  };
92
- // ============================================================================
93
- // HELPER FUNCTIONS
94
- // ============================================================================
95
92
  /**
96
93
  * Create a regex rule configuration
97
94
  *
95
+ * @param name - Rule name for identification
96
+ * @param field - Field to check ('output', 'input', etc.)
98
97
  * @param pattern - Regular expression pattern
99
98
  * @param flags - Regex flags (default: 'gi')
100
- * @returns Rule configuration object
99
+ * @returns Named rule configuration object
101
100
  *
102
101
  * @example
103
102
  * ```typescript
104
- * const config = createRegexRule('\\b(error|fail)\\b', 'gi');
103
+ * const rule = createRegexRule('email_check', 'output', '\\w+@\\w+\\.\\w+');
105
104
  * ```
106
105
  */
107
- function createRegexRule(pattern, flags = 'gi') {
108
- return { pattern, flags };
106
+ function createRegexRule(name, field, pattern, flags = 'gi') {
107
+ return { type: 'regex', name, config: { field, pattern, flags } };
109
108
  }
110
109
  /**
111
110
  * Create a contains rule configuration
112
111
  *
112
+ * @param name - Rule name for identification
113
+ * @param field - Field to check ('output', 'input', etc.)
113
114
  * @param values - Strings to check for
114
115
  * @param caseSensitive - Whether comparison is case-sensitive
115
- * @returns Rule configuration object
116
+ * @returns Named rule configuration object
116
117
  *
117
118
  * @example
118
119
  * ```typescript
119
- * const config = createContainsRule(['hello', 'hi', 'hey'], false);
120
+ * const rule = createContainsRule('greeting', 'output', ['hello', 'hi', 'hey']);
120
121
  * ```
121
122
  */
122
- function createContainsRule(values, caseSensitive = false) {
123
- return { values, caseSensitive };
123
+ function createContainsRule(name, field, values, caseSensitive = false) {
124
+ return { type: 'contains', name, config: { field, values, caseSensitive } };
124
125
  }
125
126
  /**
126
127
  * Create a length rule configuration
127
128
  *
129
+ * @param name - Rule name for identification
128
130
  * @param min - Minimum length (optional)
129
131
  * @param max - Maximum length (optional)
130
- * @returns Rule configuration object
132
+ * @returns Named rule configuration object
131
133
  *
132
134
  * @example
133
135
  * ```typescript
134
- * const config = createLengthRule(50, 1000);
136
+ * const rule = createLengthRule('response_length', 50, 1000);
135
137
  * ```
136
138
  */
137
- function createLengthRule(min, max) {
138
- return { min, max };
139
+ function createLengthRule(name, min, max) {
140
+ return { type: 'length', name, config: { min, max } };
139
141
  }
140
142
  /**
141
143
  * Create a JSON schema rule configuration
142
144
  *
145
+ * @param name - Rule name for identification
143
146
  * @param schema - JSON Schema object
144
- * @returns Rule configuration object
147
+ * @returns Named rule configuration object
145
148
  *
146
149
  * @example
147
150
  * ```typescript
148
- * const config = createJsonSchemaRule({
151
+ * const rule = createJsonSchemaRule('response_format', {
149
152
  * type: 'object',
150
153
  * required: ['name', 'email'],
151
154
  * properties: {
@@ -155,13 +158,13 @@ function createLengthRule(min, max) {
155
158
  * });
156
159
  * ```
157
160
  */
158
- function createJsonSchemaRule(schema) {
159
- return { schema };
161
+ function createJsonSchemaRule(name, schema) {
162
+ return { type: 'json_schema', name, config: { schema } };
160
163
  }
161
164
  /**
162
165
  * Check if all rule results passed
163
166
  *
164
- * @param results - Array of rule results
167
+ * @param results - Array of rule results (or any objects with a `passed` boolean)
165
168
  * @returns Whether all rules passed
166
169
  */
167
170
  function allRulesPassed(results) {
@@ -170,7 +173,7 @@ function allRulesPassed(results) {
170
173
  /**
171
174
  * Get failed rules from results
172
175
  *
173
- * @param results - Array of rule results
176
+ * @param results - Array of rule results (or any objects with a `passed` boolean)
174
177
  * @returns Array of failed rule results
175
178
  */
176
179
  function getFailedRules(results) {
@@ -188,4 +191,4 @@ function calculateAverageScore(results) {
188
191
  const sum = results.reduce((acc, r) => acc + r.score, 0);
189
192
  return sum / results.length;
190
193
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5pc3RpYy1ncmFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9kZXRlcm1pbmlzdGljLWdyYWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQXNMSCwwQ0FFQztBQWNELGdEQUtDO0FBY0QsNENBRUM7QUFvQkQsb0RBRUM7QUFRRCx3Q0FFQztBQVFELHdDQUVDO0FBUUQsc0RBSUM7QUEvUUQsMkNBQW9EO0FBOEVwRCwrRUFBK0U7QUFDL0UsbUNBQW1DO0FBQ25DLCtFQUErRTtBQUUvRTs7R0FFRztBQUNVLFFBQUEsb0JBQW9CLEdBQUc7SUFDbEM7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQXdCO1FBQ3JDLE9BQU8sSUFBQSwyQkFBa0IsRUFBMEIsaUNBQWlDLEVBQUU7WUFDcEYsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBNEI7UUFDN0MsT0FBTyxJQUFBLDJCQUFrQixFQUFxQixzQ0FBc0MsRUFBRTtZQUNwRixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixPQUFPLElBQUEsMkJBQWtCLEVBQ3ZCLG1DQUFtQyxFQUNuQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsa0NBQWtDLEVBQ2xDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUN2QixDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUM7QUFFRiwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUFlLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsTUFBZ0IsRUFDaEIsYUFBYSxHQUFHLEtBQUs7SUFFckIsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFZLEVBQUUsR0FBWTtJQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxNQUErQjtJQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLE9BQXFCO0lBQ2xELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBcUI7SUFDbEQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsT0FBcUI7SUFDekQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsT0FBTyxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBEZXRlcm1pbmlzdGljIEdyYWRlcnMgQVBJXG4gKlxuICogQVBJIGZvciBydW5uaW5nIGRldGVybWluaXN0aWMgKGNvZGUtYmFzZWQpIGV2YWx1YXRpb25zXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBSdWxlVHlwZSA9XG4gIHwgJ3JlZ2V4J1xuICB8ICdjb250YWlucydcbiAgfCAnbm90X2NvbnRhaW5zJ1xuICB8ICdqc29uX3ZhbGlkJ1xuICB8ICdqc29uX3NjaGVtYSdcbiAgfCAnbGVuZ3RoJ1xuICB8ICdwaWlfY2hlY2snXG4gIHwgJ3NlbnRpbWVudCdcbiAgfCAnbGF0ZW5jeSdcbiAgfCAndG9rZW5fY291bnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERldGVybWluaXN0aWNFdmFsUmVzdWx0IHtcbiAgcGFzc2VkOiBib29sZWFuO1xuICBzY29yZTogbnVtYmVyO1xuICByZWFzb25pbmc6IHN0cmluZztcbiAgcnVsZVJlc3VsdHM/OiBSdWxlUmVzdWx0W107XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZVJlc3VsdCB7XG4gIHJ1bGVJZDogc3RyaW5nO1xuICBydWxlTmFtZTogc3RyaW5nO1xuICBydWxlVHlwZTogUnVsZVR5cGU7XG4gIHBhc3NlZDogYm9vbGVhbjtcbiAgc2NvcmU6IG51bWJlcjtcbiAgZGV0YWlscz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZU9wdGlvbnMge1xuICB0cmFjZUlkOiBzdHJpbmc7XG4gIGNyaXRlcmlvbklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0V2YWx1YXRlT3B0aW9ucyB7XG4gIGV2YWx1YXRpb25zOiBBcnJheTx7XG4gICAgdHJhY2VJZDogc3RyaW5nO1xuICAgIGNyaXRlcmlvbklkOiBzdHJpbmc7XG4gIH0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bGtFdmFsdWF0ZVJlc3VsdCB7XG4gIHJlc3VsdHM6IEFycmF5PHtcbiAgICB0cmFjZUlkOiBzdHJpbmc7XG4gICAgY3JpdGVyaW9uSWQ6IHN0cmluZztcbiAgICBwYXNzZWQ6IGJvb2xlYW47XG4gICAgc2NvcmU6IG51bWJlcjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgfT47XG4gIHN1bW1hcnk6IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIHBhc3NlZDogbnVtYmVyO1xuICAgIGZhaWxlZDogbnVtYmVyO1xuICAgIHBhc3NSYXRlOiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZVR5cGVJbmZvIHtcbiAgaWQ6IFJ1bGVUeXBlO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNvbmZpZ0ZpZWxkczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZVRlbXBsYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBydWxlVHlwZTogUnVsZVR5cGU7XG4gIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFVEVSTUlOSVNUSUMgR1JBREVSUyBBUEkgQ0xJRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpYyBHcmFkZXJzIEFQSSBjbGllbnQgZm9yIGNvZGUtYmFzZWQgZXZhbHVhdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGRldGVybWluaXN0aWNHcmFkZXJzID0ge1xuICAvKipcbiAgICogUnVuIGRldGVybWluaXN0aWMgZXZhbHVhdGlvbiBvbiBhIHNpbmdsZSB0cmFjZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRldGVybWluaXN0aWNHcmFkZXJzLmV2YWx1YXRlKHtcbiAgICogICB0cmFjZUlkOiAndHJhY2VfMTIzJyxcbiAgICogICBjcml0ZXJpb25JZDogJ2NyaXRlcmlvbl80NTYnLFxuICAgKiB9KTtcbiAgICogY29uc29sZS5sb2coYFBhc3NlZDogJHtyZXN1bHQucGFzc2VkfSwgU2NvcmU6ICR7cmVzdWx0LnNjb3JlfWApO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGV2YWx1YXRlKG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyk6IFByb21pc2U8RGV0ZXJtaW5pc3RpY0V2YWxSZXN1bHQ+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPERldGVybWluaXN0aWNFdmFsUmVzdWx0PignL2RldGVybWluaXN0aWMtZ3JhZGVycy9ldmFsdWF0ZScsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogUnVuIGRldGVybWluaXN0aWMgZXZhbHVhdGlvbnMgb24gbXVsdGlwbGUgdHJhY2VzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgeyByZXN1bHRzLCBzdW1tYXJ5IH0gPSBhd2FpdCBkZXRlcm1pbmlzdGljR3JhZGVycy5idWxrRXZhbHVhdGUoe1xuICAgKiAgIGV2YWx1YXRpb25zOiBbXG4gICAqICAgICB7IHRyYWNlSWQ6ICd0cmFjZV8xJywgY3JpdGVyaW9uSWQ6ICdjcml0ZXJpb25fNDU2JyB9LFxuICAgKiAgICAgeyB0cmFjZUlkOiAndHJhY2VfMicsIGNyaXRlcmlvbklkOiAnY3JpdGVyaW9uXzQ1NicgfSxcbiAgICogICAgIHsgdHJhY2VJZDogJ3RyYWNlXzMnLCBjcml0ZXJpb25JZDogJ2NyaXRlcmlvbl80NTYnIH0sXG4gICAqICAgXSxcbiAgICogfSk7XG4gICAqIGNvbnNvbGUubG9nKGBQYXNzIHJhdGU6ICR7c3VtbWFyeS5wYXNzUmF0ZSAqIDEwMH0lYCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgYnVsa0V2YWx1YXRlKG9wdGlvbnM6IEJ1bGtFdmFsdWF0ZU9wdGlvbnMpOiBQcm9taXNlPEJ1bGtFdmFsdWF0ZVJlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QnVsa0V2YWx1YXRlUmVzdWx0PignL2RldGVybWluaXN0aWMtZ3JhZGVycy9idWxrLWV2YWx1YXRlJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBvcHRpb25zLFxuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYXZhaWxhYmxlIHJ1bGUgdHlwZXMgd2l0aCBkZXNjcmlwdGlvbnNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBydWxlVHlwZXMgPSBhd2FpdCBkZXRlcm1pbmlzdGljR3JhZGVycy5nZXRSdWxlVHlwZXMoKTtcbiAgICogZm9yIChjb25zdCB0eXBlIG9mIHJ1bGVUeXBlcykge1xuICAgKiAgIGNvbnNvbGUubG9nKGAke3R5cGUubmFtZX06ICR7dHlwZS5kZXNjcmlwdGlvbn1gKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldFJ1bGVUeXBlcygpOiBQcm9taXNlPFJ1bGVUeXBlSW5mb1tdPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxSdWxlVHlwZUluZm9bXT4oXG4gICAgICAnL2RldGVybWluaXN0aWMtZ3JhZGVycy9ydWxlLXR5cGVzJyxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ25vbmUnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgcnVsZSB0ZW1wbGF0ZXNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB0ZW1wbGF0ZXMgPSBhd2FpdCBkZXRlcm1pbmlzdGljR3JhZGVycy5nZXRUZW1wbGF0ZXMoKTtcbiAgICogY29uc3Qgbm9QaWlUZW1wbGF0ZSA9IHRlbXBsYXRlcy5maW5kKHQgPT4gdC5pZCA9PT0gJ25vX3BpaScpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldFRlbXBsYXRlcygpOiBQcm9taXNlPFJ1bGVUZW1wbGF0ZVtdPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxSdWxlVGVtcGxhdGVbXT4oXG4gICAgICAnL2RldGVybWluaXN0aWMtZ3JhZGVycy90ZW1wbGF0ZXMnLFxuICAgICAgeyBhcGlWZXJzaW9uOiAnbm9uZScgfVxuICAgICk7XG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGEgcmVnZXggcnVsZSBjb25maWd1cmF0aW9uXG4gKlxuICogQHBhcmFtIHBhdHRlcm4gLSBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVyblxuICogQHBhcmFtIGZsYWdzIC0gUmVnZXggZmxhZ3MgKGRlZmF1bHQ6ICdnaScpXG4gKiBAcmV0dXJucyBSdWxlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZVJlZ2V4UnVsZSgnXFxcXGIoZXJyb3J8ZmFpbClcXFxcYicsICdnaScpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWdleFJ1bGUocGF0dGVybjogc3RyaW5nLCBmbGFncyA9ICdnaScpOiB7IHBhdHRlcm46IHN0cmluZzsgZmxhZ3M6IHN0cmluZyB9IHtcbiAgcmV0dXJuIHsgcGF0dGVybiwgZmxhZ3MgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjb250YWlucyBydWxlIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcGFyYW0gdmFsdWVzIC0gU3RyaW5ncyB0byBjaGVjayBmb3JcbiAqIEBwYXJhbSBjYXNlU2Vuc2l0aXZlIC0gV2hldGhlciBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlXG4gKiBAcmV0dXJucyBSdWxlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUNvbnRhaW5zUnVsZShbJ2hlbGxvJywgJ2hpJywgJ2hleSddLCBmYWxzZSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRhaW5zUnVsZShcbiAgdmFsdWVzOiBzdHJpbmdbXSxcbiAgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlXG4pOiB7IHZhbHVlczogc3RyaW5nW107IGNhc2VTZW5zaXRpdmU6IGJvb2xlYW4gfSB7XG4gIHJldHVybiB7IHZhbHVlcywgY2FzZVNlbnNpdGl2ZSB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGxlbmd0aCBydWxlIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcGFyYW0gbWluIC0gTWluaW11bSBsZW5ndGggKG9wdGlvbmFsKVxuICogQHBhcmFtIG1heCAtIE1heGltdW0gbGVuZ3RoIChvcHRpb25hbClcbiAqIEByZXR1cm5zIFJ1bGUgY29uZmlndXJhdGlvbiBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29uZmlnID0gY3JlYXRlTGVuZ3RoUnVsZSg1MCwgMTAwMCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlbmd0aFJ1bGUobWluPzogbnVtYmVyLCBtYXg/OiBudW1iZXIpOiB7IG1pbj86IG51bWJlcjsgbWF4PzogbnVtYmVyIH0ge1xuICByZXR1cm4geyBtaW4sIG1heCB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIEpTT04gc2NoZW1hIHJ1bGUgY29uZmlndXJhdGlvblxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBKU09OIFNjaGVtYSBvYmplY3RcbiAqIEByZXR1cm5zIFJ1bGUgY29uZmlndXJhdGlvbiBvYmplY3RcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29uZmlnID0gY3JlYXRlSnNvblNjaGVtYVJ1bGUoe1xuICogICB0eXBlOiAnb2JqZWN0JyxcbiAqICAgcmVxdWlyZWQ6IFsnbmFtZScsICdlbWFpbCddLFxuICogICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICogICAgIGVtYWlsOiB7IHR5cGU6ICdzdHJpbmcnLCBmb3JtYXQ6ICdlbWFpbCcgfSxcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVKc29uU2NoZW1hUnVsZShzY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogeyBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0ge1xuICByZXR1cm4geyBzY2hlbWEgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhbGwgcnVsZSByZXN1bHRzIHBhc3NlZFxuICpcbiAqIEBwYXJhbSByZXN1bHRzIC0gQXJyYXkgb2YgcnVsZSByZXN1bHRzXG4gKiBAcmV0dXJucyBXaGV0aGVyIGFsbCBydWxlcyBwYXNzZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbFJ1bGVzUGFzc2VkKHJlc3VsdHM6IFJ1bGVSZXN1bHRbXSk6IGJvb2xlYW4ge1xuICByZXR1cm4gcmVzdWx0cy5ldmVyeShyID0+IHIucGFzc2VkKTtcbn1cblxuLyoqXG4gKiBHZXQgZmFpbGVkIHJ1bGVzIGZyb20gcmVzdWx0c1xuICpcbiAqIEBwYXJhbSByZXN1bHRzIC0gQXJyYXkgb2YgcnVsZSByZXN1bHRzXG4gKiBAcmV0dXJucyBBcnJheSBvZiBmYWlsZWQgcnVsZSByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGYWlsZWRSdWxlcyhyZXN1bHRzOiBSdWxlUmVzdWx0W10pOiBSdWxlUmVzdWx0W10ge1xuICByZXR1cm4gcmVzdWx0cy5maWx0ZXIociA9PiAhci5wYXNzZWQpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBhdmVyYWdlIHNjb3JlIGZyb20gcnVsZSByZXN1bHRzXG4gKlxuICogQHBhcmFtIHJlc3VsdHMgLSBBcnJheSBvZiBydWxlIHJlc3VsdHNcbiAqIEByZXR1cm5zIEF2ZXJhZ2Ugc2NvcmUgKDAtMTAwKVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQXZlcmFnZVNjb3JlKHJlc3VsdHM6IFJ1bGVSZXN1bHRbXSk6IG51bWJlciB7XG4gIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gIGNvbnN0IHN1bSA9IHJlc3VsdHMucmVkdWNlKChhY2MsIHIpID0+IGFjYyArIHIuc2NvcmUsIDApO1xuICByZXR1cm4gc3VtIC8gcmVzdWx0cy5sZW5ndGg7XG59XG4iXX0=
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5pc3RpYy1ncmFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9kZXRlcm1pbmlzdGljLWdyYWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQWlNSCwwQ0FFQztBQWdCRCxnREFPQztBQWVELDRDQUVDO0FBcUJELG9EQUVDO0FBUUQsd0NBRUM7QUFRRCx3Q0FFQztBQVFELHNEQUlDO0FBaFNELDJDQUFvRDtBQThFcEQsK0VBQStFO0FBQy9FLG1DQUFtQztBQUNuQywrRUFBK0U7QUFFL0U7O0dBRUc7QUFDVSxRQUFBLG9CQUFvQixHQUFHO0lBQ2xDOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUF3QjtRQUNyQyxPQUFPLElBQUEsMkJBQWtCLEVBQTBCLGlDQUFpQyxFQUFFO1lBQ3BGLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLE9BQU87WUFDYixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQTRCO1FBQzdDLE9BQU8sSUFBQSwyQkFBa0IsRUFBcUIsc0NBQXNDLEVBQUU7WUFDcEYsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLFlBQVk7UUFDaEIsT0FBTyxJQUFBLDJCQUFrQixFQUN2QixtQ0FBbUMsRUFDbkMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixPQUFPLElBQUEsMkJBQWtCLEVBQ3ZCLGtDQUFrQyxFQUNsQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDO0FBZUY7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLE9BQWUsRUFBRSxLQUFLLEdBQUcsSUFBSTtJQUN4RixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQ2hDLElBQVksRUFDWixLQUFhLEVBQ2IsTUFBZ0IsRUFDaEIsYUFBYSxHQUFHLEtBQUs7SUFFckIsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQztBQUM5RSxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLEdBQVksRUFBRSxHQUFZO0lBQ3ZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLElBQVksRUFBRSxNQUErQjtJQUNoRixPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUMzRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBbUM7SUFDaEUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGNBQWMsQ0FBZ0MsT0FBWTtJQUN4RSxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxPQUFpQztJQUNyRSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxPQUFPLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaW5rSGl2ZSBTREsgdjMuMCAtIERldGVybWluaXN0aWMgR3JhZGVycyBBUElcbiAqXG4gKiBBUEkgZm9yIHJ1bm5pbmcgZGV0ZXJtaW5pc3RpYyAoY29kZS1iYXNlZCkgZXZhbHVhdGlvbnNcbiAqL1xuXG5pbXBvcnQgeyBhcGlSZXF1ZXN0V2l0aERhdGEgfSBmcm9tICcuLi9jb3JlL2NsaWVudCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFJ1bGVUeXBlID1cbiAgfCAncmVnZXgnXG4gIHwgJ2NvbnRhaW5zJ1xuICB8ICdub3RfY29udGFpbnMnXG4gIHwgJ2pzb25fdmFsaWQnXG4gIHwgJ2pzb25fc2NoZW1hJ1xuICB8ICdsZW5ndGgnXG4gIHwgJ3BpaV9jaGVjaydcbiAgfCAnc2VudGltZW50J1xuICB8ICdsYXRlbmN5J1xuICB8ICd0b2tlbl9jb3VudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV0ZXJtaW5pc3RpY0V2YWxSZXN1bHQge1xuICBwYXNzZWQ6IGJvb2xlYW47XG4gIHNjb3JlOiBudW1iZXI7XG4gIHJlYXNvbmluZzogc3RyaW5nO1xuICBydWxlUmVzdWx0cz86IFJ1bGVSZXN1bHRbXTtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlUmVzdWx0IHtcbiAgcnVsZUlkOiBzdHJpbmc7XG4gIHJ1bGVOYW1lOiBzdHJpbmc7XG4gIHJ1bGVUeXBlOiBSdWxlVHlwZTtcbiAgcGFzc2VkOiBib29sZWFuO1xuICBzY29yZTogbnVtYmVyO1xuICBkZXRhaWxzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT3B0aW9ucyB7XG4gIHRyYWNlSWQ6IHN0cmluZztcbiAgY3JpdGVyaW9uSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWxrRXZhbHVhdGVPcHRpb25zIHtcbiAgZXZhbHVhdGlvbnM6IEFycmF5PHtcbiAgICB0cmFjZUlkOiBzdHJpbmc7XG4gICAgY3JpdGVyaW9uSWQ6IHN0cmluZztcbiAgfT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0V2YWx1YXRlUmVzdWx0IHtcbiAgcmVzdWx0czogQXJyYXk8e1xuICAgIHRyYWNlSWQ6IHN0cmluZztcbiAgICBjcml0ZXJpb25JZDogc3RyaW5nO1xuICAgIHBhc3NlZDogYm9vbGVhbjtcbiAgICBzY29yZTogbnVtYmVyO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICB9PjtcbiAgc3VtbWFyeToge1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgcGFzc2VkOiBudW1iZXI7XG4gICAgZmFpbGVkOiBudW1iZXI7XG4gICAgcGFzc1JhdGU6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlVHlwZUluZm8ge1xuICBpZDogUnVsZVR5cGU7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgY29uZmlnRmllbGRzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlVGVtcGxhdGUge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJ1bGVUeXBlOiBSdWxlVHlwZTtcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVURVJNSU5JU1RJQyBHUkFERVJTIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBEZXRlcm1pbmlzdGljIEdyYWRlcnMgQVBJIGNsaWVudCBmb3IgY29kZS1iYXNlZCBldmFsdWF0aW9uc1xuICovXG5leHBvcnQgY29uc3QgZGV0ZXJtaW5pc3RpY0dyYWRlcnMgPSB7XG4gIC8qKlxuICAgKiBSdW4gZGV0ZXJtaW5pc3RpYyBldmFsdWF0aW9uIG9uIGEgc2luZ2xlIHRyYWNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZGV0ZXJtaW5pc3RpY0dyYWRlcnMuZXZhbHVhdGUoe1xuICAgKiAgIHRyYWNlSWQ6ICd0cmFjZV8xMjMnLFxuICAgKiAgIGNyaXRlcmlvbklkOiAnY3JpdGVyaW9uXzQ1NicsXG4gICAqIH0pO1xuICAgKiBjb25zb2xlLmxvZyhgUGFzc2VkOiAke3Jlc3VsdC5wYXNzZWR9LCBTY29yZTogJHtyZXN1bHQuc2NvcmV9YCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZXZhbHVhdGUob3B0aW9uczogRXZhbHVhdGVPcHRpb25zKTogUHJvbWlzZTxEZXRlcm1pbmlzdGljRXZhbFJlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8RGV0ZXJtaW5pc3RpY0V2YWxSZXN1bHQ+KCcvZGV0ZXJtaW5pc3RpYy1ncmFkZXJzL2V2YWx1YXRlJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBvcHRpb25zLFxuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSdW4gZGV0ZXJtaW5pc3RpYyBldmFsdWF0aW9ucyBvbiBtdWx0aXBsZSB0cmFjZXNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB7IHJlc3VsdHMsIHN1bW1hcnkgfSA9IGF3YWl0IGRldGVybWluaXN0aWNHcmFkZXJzLmJ1bGtFdmFsdWF0ZSh7XG4gICAqICAgZXZhbHVhdGlvbnM6IFtcbiAgICogICAgIHsgdHJhY2VJZDogJ3RyYWNlXzEnLCBjcml0ZXJpb25JZDogJ2NyaXRlcmlvbl80NTYnIH0sXG4gICAqICAgICB7IHRyYWNlSWQ6ICd0cmFjZV8yJywgY3JpdGVyaW9uSWQ6ICdjcml0ZXJpb25fNDU2JyB9LFxuICAgKiAgICAgeyB0cmFjZUlkOiAndHJhY2VfMycsIGNyaXRlcmlvbklkOiAnY3JpdGVyaW9uXzQ1NicgfSxcbiAgICogICBdLFxuICAgKiB9KTtcbiAgICogY29uc29sZS5sb2coYFBhc3MgcmF0ZTogJHtzdW1tYXJ5LnBhc3NSYXRlICogMTAwfSVgKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBidWxrRXZhbHVhdGUob3B0aW9uczogQnVsa0V2YWx1YXRlT3B0aW9ucyk6IFByb21pc2U8QnVsa0V2YWx1YXRlUmVzdWx0PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxCdWxrRXZhbHVhdGVSZXN1bHQ+KCcvZGV0ZXJtaW5pc3RpYy1ncmFkZXJzL2J1bGstZXZhbHVhdGUnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IG9wdGlvbnMsXG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBhdmFpbGFibGUgcnVsZSB0eXBlcyB3aXRoIGRlc2NyaXB0aW9uc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJ1bGVUeXBlcyA9IGF3YWl0IGRldGVybWluaXN0aWNHcmFkZXJzLmdldFJ1bGVUeXBlcygpO1xuICAgKiBmb3IgKGNvbnN0IHR5cGUgb2YgcnVsZVR5cGVzKSB7XG4gICAqICAgY29uc29sZS5sb2coYCR7dHlwZS5uYW1lfTogJHt0eXBlLmRlc2NyaXB0aW9ufWApO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0UnVsZVR5cGVzKCk6IFByb21pc2U8UnVsZVR5cGVJbmZvW10+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFJ1bGVUeXBlSW5mb1tdPihcbiAgICAgICcvZGV0ZXJtaW5pc3RpYy1ncmFkZXJzL3J1bGUtdHlwZXMnLFxuICAgICAgeyBhcGlWZXJzaW9uOiAnbm9uZScgfVxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBydWxlIHRlbXBsYXRlc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHRlbXBsYXRlcyA9IGF3YWl0IGRldGVybWluaXN0aWNHcmFkZXJzLmdldFRlbXBsYXRlcygpO1xuICAgKiBjb25zdCBub1BpaVRlbXBsYXRlID0gdGVtcGxhdGVzLmZpbmQodCA9PiB0LmlkID09PSAnbm9fcGlpJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0VGVtcGxhdGVzKCk6IFByb21pc2U8UnVsZVRlbXBsYXRlW10+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFJ1bGVUZW1wbGF0ZVtdPihcbiAgICAgICcvZGV0ZXJtaW5pc3RpYy1ncmFkZXJzL3RlbXBsYXRlcycsXG4gICAgICB7IGFwaVZlcnNpb246ICdub25lJyB9XG4gICAgKTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBOYW1lZCBydWxlIGNvbmZpZ3VyYXRpb24gd2l0aCB0eXBlLCBuYW1lLCBhbmQgY29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZWRSdWxlQ29uZmlnIHtcbiAgdHlwZTogUnVsZVR5cGU7XG4gIG5hbWU6IHN0cmluZztcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSByZWdleCBydWxlIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFJ1bGUgbmFtZSBmb3IgaWRlbnRpZmljYXRpb25cbiAqIEBwYXJhbSBmaWVsZCAtIEZpZWxkIHRvIGNoZWNrICgnb3V0cHV0JywgJ2lucHV0JywgZXRjLilcbiAqIEBwYXJhbSBwYXR0ZXJuIC0gUmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5cbiAqIEBwYXJhbSBmbGFncyAtIFJlZ2V4IGZsYWdzIChkZWZhdWx0OiAnZ2knKVxuICogQHJldHVybnMgTmFtZWQgcnVsZSBjb25maWd1cmF0aW9uIG9iamVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBydWxlID0gY3JlYXRlUmVnZXhSdWxlKCdlbWFpbF9jaGVjaycsICdvdXRwdXQnLCAnXFxcXHcrQFxcXFx3K1xcXFwuXFxcXHcrJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZ2V4UnVsZShuYW1lOiBzdHJpbmcsIGZpZWxkOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZywgZmxhZ3MgPSAnZ2knKTogTmFtZWRSdWxlQ29uZmlnIHtcbiAgcmV0dXJuIHsgdHlwZTogJ3JlZ2V4JywgbmFtZSwgY29uZmlnOiB7IGZpZWxkLCBwYXR0ZXJuLCBmbGFncyB9IH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY29udGFpbnMgcnVsZSBjb25maWd1cmF0aW9uXG4gKlxuICogQHBhcmFtIG5hbWUgLSBSdWxlIG5hbWUgZm9yIGlkZW50aWZpY2F0aW9uXG4gKiBAcGFyYW0gZmllbGQgLSBGaWVsZCB0byBjaGVjayAoJ291dHB1dCcsICdpbnB1dCcsIGV0Yy4pXG4gKiBAcGFyYW0gdmFsdWVzIC0gU3RyaW5ncyB0byBjaGVjayBmb3JcbiAqIEBwYXJhbSBjYXNlU2Vuc2l0aXZlIC0gV2hldGhlciBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlXG4gKiBAcmV0dXJucyBOYW1lZCBydWxlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJ1bGUgPSBjcmVhdGVDb250YWluc1J1bGUoJ2dyZWV0aW5nJywgJ291dHB1dCcsIFsnaGVsbG8nLCAnaGknLCAnaGV5J10pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250YWluc1J1bGUoXG4gIG5hbWU6IHN0cmluZyxcbiAgZmllbGQ6IHN0cmluZyxcbiAgdmFsdWVzOiBzdHJpbmdbXSxcbiAgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlXG4pOiBOYW1lZFJ1bGVDb25maWcge1xuICByZXR1cm4geyB0eXBlOiAnY29udGFpbnMnLCBuYW1lLCBjb25maWc6IHsgZmllbGQsIHZhbHVlcywgY2FzZVNlbnNpdGl2ZSB9IH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbGVuZ3RoIHJ1bGUgY29uZmlndXJhdGlvblxuICpcbiAqIEBwYXJhbSBuYW1lIC0gUnVsZSBuYW1lIGZvciBpZGVudGlmaWNhdGlvblxuICogQHBhcmFtIG1pbiAtIE1pbmltdW0gbGVuZ3RoIChvcHRpb25hbClcbiAqIEBwYXJhbSBtYXggLSBNYXhpbXVtIGxlbmd0aCAob3B0aW9uYWwpXG4gKiBAcmV0dXJucyBOYW1lZCBydWxlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJ1bGUgPSBjcmVhdGVMZW5ndGhSdWxlKCdyZXNwb25zZV9sZW5ndGgnLCA1MCwgMTAwMCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlbmd0aFJ1bGUobmFtZTogc3RyaW5nLCBtaW4/OiBudW1iZXIsIG1heD86IG51bWJlcik6IE5hbWVkUnVsZUNvbmZpZyB7XG4gIHJldHVybiB7IHR5cGU6ICdsZW5ndGgnLCBuYW1lLCBjb25maWc6IHsgbWluLCBtYXggfSB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIEpTT04gc2NoZW1hIHJ1bGUgY29uZmlndXJhdGlvblxuICpcbiAqIEBwYXJhbSBuYW1lIC0gUnVsZSBuYW1lIGZvciBpZGVudGlmaWNhdGlvblxuICogQHBhcmFtIHNjaGVtYSAtIEpTT04gU2NoZW1hIG9iamVjdFxuICogQHJldHVybnMgTmFtZWQgcnVsZSBjb25maWd1cmF0aW9uIG9iamVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBydWxlID0gY3JlYXRlSnNvblNjaGVtYVJ1bGUoJ3Jlc3BvbnNlX2Zvcm1hdCcsIHtcbiAqICAgdHlwZTogJ29iamVjdCcsXG4gKiAgIHJlcXVpcmVkOiBbJ25hbWUnLCAnZW1haWwnXSxcbiAqICAgcHJvcGVydGllczoge1xuICogICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAqICAgICBlbWFpbDogeyB0eXBlOiAnc3RyaW5nJywgZm9ybWF0OiAnZW1haWwnIH0sXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSnNvblNjaGVtYVJ1bGUobmFtZTogc3RyaW5nLCBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogTmFtZWRSdWxlQ29uZmlnIHtcbiAgcmV0dXJuIHsgdHlwZTogJ2pzb25fc2NoZW1hJywgbmFtZSwgY29uZmlnOiB7IHNjaGVtYSB9IH07XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYWxsIHJ1bGUgcmVzdWx0cyBwYXNzZWRcbiAqXG4gKiBAcGFyYW0gcmVzdWx0cyAtIEFycmF5IG9mIHJ1bGUgcmVzdWx0cyAob3IgYW55IG9iamVjdHMgd2l0aCBhIGBwYXNzZWRgIGJvb2xlYW4pXG4gKiBAcmV0dXJucyBXaGV0aGVyIGFsbCBydWxlcyBwYXNzZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbFJ1bGVzUGFzc2VkKHJlc3VsdHM6IEFycmF5PHsgcGFzc2VkOiBib29sZWFuIH0+KTogYm9vbGVhbiB7XG4gIHJldHVybiByZXN1bHRzLmV2ZXJ5KHIgPT4gci5wYXNzZWQpO1xufVxuXG4vKipcbiAqIEdldCBmYWlsZWQgcnVsZXMgZnJvbSByZXN1bHRzXG4gKlxuICogQHBhcmFtIHJlc3VsdHMgLSBBcnJheSBvZiBydWxlIHJlc3VsdHMgKG9yIGFueSBvYmplY3RzIHdpdGggYSBgcGFzc2VkYCBib29sZWFuKVxuICogQHJldHVybnMgQXJyYXkgb2YgZmFpbGVkIHJ1bGUgcmVzdWx0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmFpbGVkUnVsZXM8VCBleHRlbmRzIHsgcGFzc2VkOiBib29sZWFuIH0+KHJlc3VsdHM6IFRbXSk6IFRbXSB7XG4gIHJldHVybiByZXN1bHRzLmZpbHRlcihyID0+ICFyLnBhc3NlZCk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIGF2ZXJhZ2Ugc2NvcmUgZnJvbSBydWxlIHJlc3VsdHNcbiAqXG4gKiBAcGFyYW0gcmVzdWx0cyAtIEFycmF5IG9mIHJ1bGUgcmVzdWx0c1xuICogQHJldHVybnMgQXZlcmFnZSBzY29yZSAoMC0xMDApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVBdmVyYWdlU2NvcmUocmVzdWx0czogQXJyYXk8eyBzY29yZTogbnVtYmVyIH0+KTogbnVtYmVyIHtcbiAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcbiAgY29uc3Qgc3VtID0gcmVzdWx0cy5yZWR1Y2UoKGFjYywgcikgPT4gYWNjICsgci5zY29yZSwgMCk7XG4gIHJldHVybiBzdW0gLyByZXN1bHRzLmxlbmd0aDtcbn1cbiJdfQ==
@@ -93,6 +93,8 @@ export declare const llmCosts: {
93
93
  * @returns Optimization stats with recommendations
94
94
  */
95
95
  getOptimizationStats(): Promise<OptimizationStats>;
96
+ /** Alias for getSummary() */
97
+ summary(opts?: CostQueryOptions): Promise<CostSummary>;
96
98
  };
97
99
  /**
98
100
  * Format a cost amount as a currency string
@@ -64,6 +64,10 @@ exports.llmCosts = {
64
64
  apiVersion: 'none',
65
65
  });
66
66
  },
67
+ /** Alias for getSummary() */
68
+ async summary(opts) {
69
+ return this.getSummary(opts);
70
+ },
67
71
  };
68
72
  exports.default = exports.llmCosts;
69
73
  // ============================================================================
@@ -78,4 +82,4 @@ exports.default = exports.llmCosts;
78
82
  function formatCost(amount) {
79
83
  return `$${amount.toFixed(2)}`;
80
84
  }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLWNvc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9sbG0tY29zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQXNKSCxnQ0FFQztBQXRKRCwyQ0FBb0Q7QUF5RXBELCtFQUErRTtBQUMvRSx1QkFBdUI7QUFDdkIsK0VBQStFO0FBRS9FOztHQUVHO0FBQ1UsUUFBQSxRQUFRLEdBQUc7SUFDdEI7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQXVCO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLEVBQUUsTUFBTTtZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFBLDJCQUFrQixFQUFjLHFCQUFxQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3RGLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQWUsRUFBRSxJQUF1QjtRQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxFQUFFLE1BQU07WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsd0JBQXdCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUM1RCxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQVU7UUFDZCxPQUFPLElBQUEsMkJBQWtCLEVBQWMsb0JBQW9CLEVBQUU7WUFDM0QsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CO1FBQ3hCLE9BQU8sSUFBQSwyQkFBa0IsRUFBb0IsK0JBQStCLEVBQUU7WUFDNUUsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUM7QUFnQm1CLGtCQXhFUixnQkFBUSxDQXdFTztBQWQ1QiwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRTs7Ozs7R0FLRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxNQUFjO0lBQ3ZDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyAtIExMTSBDb3N0cyBBUElcbiAqXG4gKiBMTE0gY29zdCB0cmFja2luZyBhbmQgb3B0aW1pemF0aW9uIGFuYWx5dGljc1xuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIE9wdGlvbnMgZm9yIGNvc3Qgc3VtbWFyeSBhbmQgYnJlYWtkb3duICovXG5leHBvcnQgaW50ZXJmYWNlIENvc3RRdWVyeU9wdGlvbnMge1xuICBwZXJpb2Q/OiAnZGF5JyB8ICd3ZWVrJyB8ICdtb250aCcgfCAncXVhcnRlcicgfCAneWVhcic7XG59XG5cbi8qKiBDb3N0IHN1bW1hcnkgYWNyb3NzIGFsbCBhZ2VudHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zdFN1bW1hcnkge1xuICB0b3RhbENvc3Q6IG51bWJlcjtcbiAgdG90YWxUb2tlbnM6IG51bWJlcjtcbiAgdG90YWxSZXF1ZXN0czogbnVtYmVyO1xuICBwZXJpb2Q6IHN0cmluZztcbiAgYnJlYWtkb3duOiBDb3N0QnJlYWtkb3duSXRlbVtdO1xufVxuXG4vKiogQ29zdCBicmVha2Rvd24gaXRlbSAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3N0QnJlYWtkb3duSXRlbSB7XG4gIG1vZGVsOiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBzdHJpbmc7XG4gIGNvc3Q6IG51bWJlcjtcbiAgdG9rZW5zOiBudW1iZXI7XG4gIHJlcXVlc3RzOiBudW1iZXI7XG4gIGlucHV0VG9rZW5zOiBudW1iZXI7XG4gIG91dHB1dFRva2VuczogbnVtYmVyO1xufVxuXG4vKiogQWdlbnQtbGV2ZWwgY29zdCBicmVha2Rvd24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDb3N0QnJlYWtkb3duIHtcbiAgYWdlbnRJZDogc3RyaW5nO1xuICB0b3RhbENvc3Q6IG51bWJlcjtcbiAgdG90YWxUb2tlbnM6IG51bWJlcjtcbiAgdG90YWxSZXF1ZXN0czogbnVtYmVyO1xuICBwZXJpb2Q6IHN0cmluZztcbiAgbW9kZWxzOiBDb3N0QnJlYWtkb3duSXRlbVtdO1xufVxuXG4vKiogQ29zdCBzYXZpbmdzIGRhdGEgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zdFNhdmluZ3Mge1xuICB0b3RhbFNhdmVkOiBudW1iZXI7XG4gIHNhdmluZ3NQZXJjZW50OiBudW1iZXI7XG4gIG9wdGltaXphdGlvbnM6IE9wdGltaXphdGlvbkVudHJ5W107XG59XG5cbi8qKiBBIHNpbmdsZSBvcHRpbWl6YXRpb24gZW50cnkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pemF0aW9uRW50cnkge1xuICB0eXBlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHNhdmVkQW1vdW50OiBudW1iZXI7XG4gIGFwcGxpZWRBdDogc3RyaW5nO1xufVxuXG4vKiogT3B0aW1pemF0aW9uIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pemF0aW9uU3RhdHMge1xuICBjYWNoZUhpdFJhdGU6IG51bWJlcjtcbiAgYXZnVG9rZW5SZWR1Y3Rpb246IG51bWJlcjtcbiAgbW9kZWxEb3duZ3JhZGVDb3VudDogbnVtYmVyO1xuICB0b3RhbE9wdGltaXphdGlvbnM6IG51bWJlcjtcbiAgcmVjb21tZW5kYXRpb25zOiBPcHRpbWl6YXRpb25SZWNvbW1lbmRhdGlvbltdO1xufVxuXG4vKiogT3B0aW1pemF0aW9uIHJlY29tbWVuZGF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXphdGlvblJlY29tbWVuZGF0aW9uIHtcbiAgdHlwZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBlc3RpbWF0ZWRTYXZpbmdzOiBudW1iZXI7XG4gIHByaW9yaXR5OiAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMTE0gQ09TVFMgQVBJIENMSUVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIExMTSBDb3N0cyBBUEkgY2xpZW50IGZvciB0cmFja2luZyBhbmQgb3B0aW1pemluZyBMTE0gc3BlbmRpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGxsbUNvc3RzID0ge1xuICAvKipcbiAgICogR2V0IGNvc3Qgc3VtbWFyeSBhY3Jvc3MgYWxsIGFnZW50c1xuICAgKlxuICAgKiBAcGFyYW0gb3B0cyAtIFBlcmlvZCBmaWx0ZXIgb3B0aW9uXG4gICAqIEByZXR1cm5zIENvc3Qgc3VtbWFyeSB3aXRoIGJyZWFrZG93blxuICAgKi9cbiAgYXN5bmMgZ2V0U3VtbWFyeShvcHRzPzogQ29zdFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8Q29zdFN1bW1hcnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdHM/LnBlcmlvZCkgcGFyYW1zLnNldCgncGVyaW9kJywgb3B0cy5wZXJpb2QpO1xuXG4gICAgY29uc3QgcXVlcnkgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENvc3RTdW1tYXJ5PihgL2xsbS1jb3N0cy9zdW1tYXJ5JHtxdWVyeSA/IGA/JHtxdWVyeX1gIDogJyd9YCwge1xuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgY29zdCBicmVha2Rvd24gZm9yIGEgc3BlY2lmaWMgYWdlbnRcbiAgICpcbiAgICogQHBhcmFtIGFnZW50SWQgLSBUaGUgYWdlbnQgSURcbiAgICogQHBhcmFtIG9wdHMgLSBQZXJpb2QgZmlsdGVyIG9wdGlvblxuICAgKiBAcmV0dXJucyBBZ2VudCBjb3N0IGJyZWFrZG93blxuICAgKi9cbiAgYXN5bmMgZ2V0QnJlYWtkb3duKGFnZW50SWQ6IHN0cmluZywgb3B0cz86IENvc3RRdWVyeU9wdGlvbnMpOiBQcm9taXNlPEFnZW50Q29zdEJyZWFrZG93bj4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0cz8ucGVyaW9kKSBwYXJhbXMuc2V0KCdwZXJpb2QnLCBvcHRzLnBlcmlvZCk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QWdlbnRDb3N0QnJlYWtkb3duPihcbiAgICAgIGAvbGxtLWNvc3RzL2JyZWFrZG93bi8ke2FnZW50SWR9JHtxdWVyeSA/IGA/JHtxdWVyeX1gIDogJyd9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ25vbmUnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgY29zdCBzYXZpbmdzIGZyb20gb3B0aW1pemF0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJucyBTYXZpbmdzIGRhdGEgYW5kIG9wdGltaXphdGlvbiBoaXN0b3J5XG4gICAqL1xuICBhc3luYyBnZXRTYXZpbmdzKCk6IFByb21pc2U8Q29zdFNhdmluZ3M+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENvc3RTYXZpbmdzPignL2xsbS1jb3N0cy9zYXZpbmdzJywge1xuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgb3B0aW1pemF0aW9uIHN0YXRpc3RpY3MgYW5kIHJlY29tbWVuZGF0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJucyBPcHRpbWl6YXRpb24gc3RhdHMgd2l0aCByZWNvbW1lbmRhdGlvbnNcbiAgICovXG4gIGFzeW5jIGdldE9wdGltaXphdGlvblN0YXRzKCk6IFByb21pc2U8T3B0aW1pemF0aW9uU3RhdHM+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPE9wdGltaXphdGlvblN0YXRzPignL2xsbS1jb3N0cy9vcHRpbWl6YXRpb24tc3RhdHMnLCB7XG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRm9ybWF0IGEgY29zdCBhbW91bnQgYXMgYSBjdXJyZW5jeSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGNvc3QgYW1vdW50IGluIGRvbGxhcnNcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgKGUuZy4sIFwiJDEyLjM0XCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDb3N0KGFtb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAkJHthbW91bnQudG9GaXhlZCgyKX1gO1xufVxuXG5leHBvcnQgeyBsbG1Db3N0cyBhcyBkZWZhdWx0IH07XG4iXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLWNvc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9sbG0tY29zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQTJKSCxnQ0FFQztBQTNKRCwyQ0FBb0Q7QUF5RXBELCtFQUErRTtBQUMvRSx1QkFBdUI7QUFDdkIsK0VBQStFO0FBRS9FOztHQUVHO0FBQ1UsUUFBQSxRQUFRLEdBQUc7SUFDdEI7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQXVCO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLEVBQUUsTUFBTTtZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFBLDJCQUFrQixFQUFjLHFCQUFxQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3RGLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQWUsRUFBRSxJQUF1QjtRQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxFQUFFLE1BQU07WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsd0JBQXdCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUM1RCxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQVU7UUFDZCxPQUFPLElBQUEsMkJBQWtCLEVBQWMsb0JBQW9CLEVBQUU7WUFDM0QsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CO1FBQ3hCLE9BQU8sSUFBQSwyQkFBa0IsRUFBb0IsK0JBQStCLEVBQUU7WUFDNUUsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLElBQXVCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0YsQ0FBQztBQWdCbUIsa0JBN0VSLGdCQUFRLENBNkVPO0FBZDVCLCtFQUErRTtBQUMvRSxtQkFBbUI7QUFDbkIsK0VBQStFO0FBRS9FOzs7OztHQUtHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE1BQWM7SUFDdkMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIC0gTExNIENvc3RzIEFQSVxuICpcbiAqIExMTSBjb3N0IHRyYWNraW5nIGFuZCBvcHRpbWl6YXRpb24gYW5hbHl0aWNzXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogT3B0aW9ucyBmb3IgY29zdCBzdW1tYXJ5IGFuZCBicmVha2Rvd24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zdFF1ZXJ5T3B0aW9ucyB7XG4gIHBlcmlvZD86ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICd5ZWFyJztcbn1cblxuLyoqIENvc3Qgc3VtbWFyeSBhY3Jvc3MgYWxsIGFnZW50cyAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3N0U3VtbWFyeSB7XG4gIHRvdGFsQ29zdDogbnVtYmVyO1xuICB0b3RhbFRva2VuczogbnVtYmVyO1xuICB0b3RhbFJlcXVlc3RzOiBudW1iZXI7XG4gIHBlcmlvZDogc3RyaW5nO1xuICBicmVha2Rvd246IENvc3RCcmVha2Rvd25JdGVtW107XG59XG5cbi8qKiBDb3N0IGJyZWFrZG93biBpdGVtICovXG5leHBvcnQgaW50ZXJmYWNlIENvc3RCcmVha2Rvd25JdGVtIHtcbiAgbW9kZWw6IHN0cmluZztcbiAgcHJvdmlkZXI6IHN0cmluZztcbiAgY29zdDogbnVtYmVyO1xuICB0b2tlbnM6IG51bWJlcjtcbiAgcmVxdWVzdHM6IG51bWJlcjtcbiAgaW5wdXRUb2tlbnM6IG51bWJlcjtcbiAgb3V0cHV0VG9rZW5zOiBudW1iZXI7XG59XG5cbi8qKiBBZ2VudC1sZXZlbCBjb3N0IGJyZWFrZG93biAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudENvc3RCcmVha2Rvd24ge1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIHRvdGFsQ29zdDogbnVtYmVyO1xuICB0b3RhbFRva2VuczogbnVtYmVyO1xuICB0b3RhbFJlcXVlc3RzOiBudW1iZXI7XG4gIHBlcmlvZDogc3RyaW5nO1xuICBtb2RlbHM6IENvc3RCcmVha2Rvd25JdGVtW107XG59XG5cbi8qKiBDb3N0IHNhdmluZ3MgZGF0YSAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3N0U2F2aW5ncyB7XG4gIHRvdGFsU2F2ZWQ6IG51bWJlcjtcbiAgc2F2aW5nc1BlcmNlbnQ6IG51bWJlcjtcbiAgb3B0aW1pemF0aW9uczogT3B0aW1pemF0aW9uRW50cnlbXTtcbn1cblxuLyoqIEEgc2luZ2xlIG9wdGltaXphdGlvbiBlbnRyeSAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpbWl6YXRpb25FbnRyeSB7XG4gIHR5cGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc2F2ZWRBbW91bnQ6IG51bWJlcjtcbiAgYXBwbGllZEF0OiBzdHJpbmc7XG59XG5cbi8qKiBPcHRpbWl6YXRpb24gc3RhdGlzdGljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpbWl6YXRpb25TdGF0cyB7XG4gIGNhY2hlSGl0UmF0ZTogbnVtYmVyO1xuICBhdmdUb2tlblJlZHVjdGlvbjogbnVtYmVyO1xuICBtb2RlbERvd25ncmFkZUNvdW50OiBudW1iZXI7XG4gIHRvdGFsT3B0aW1pemF0aW9uczogbnVtYmVyO1xuICByZWNvbW1lbmRhdGlvbnM6IE9wdGltaXphdGlvblJlY29tbWVuZGF0aW9uW107XG59XG5cbi8qKiBPcHRpbWl6YXRpb24gcmVjb21tZW5kYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pemF0aW9uUmVjb21tZW5kYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGVzdGltYXRlZFNhdmluZ3M6IG51bWJlcjtcbiAgcHJpb3JpdHk6ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExMTSBDT1NUUyBBUEkgQ0xJRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogTExNIENvc3RzIEFQSSBjbGllbnQgZm9yIHRyYWNraW5nIGFuZCBvcHRpbWl6aW5nIExMTSBzcGVuZGluZ1xuICovXG5leHBvcnQgY29uc3QgbGxtQ29zdHMgPSB7XG4gIC8qKlxuICAgKiBHZXQgY29zdCBzdW1tYXJ5IGFjcm9zcyBhbGwgYWdlbnRzXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzIC0gUGVyaW9kIGZpbHRlciBvcHRpb25cbiAgICogQHJldHVybnMgQ29zdCBzdW1tYXJ5IHdpdGggYnJlYWtkb3duXG4gICAqL1xuICBhc3luYyBnZXRTdW1tYXJ5KG9wdHM/OiBDb3N0UXVlcnlPcHRpb25zKTogUHJvbWlzZTxDb3N0U3VtbWFyeT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0cz8ucGVyaW9kKSBwYXJhbXMuc2V0KCdwZXJpb2QnLCBvcHRzLnBlcmlvZCk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8Q29zdFN1bW1hcnk+KGAvbGxtLWNvc3RzL3N1bW1hcnkke3F1ZXJ5ID8gYD8ke3F1ZXJ5fWAgOiAnJ31gLCB7XG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBjb3N0IGJyZWFrZG93biBmb3IgYSBzcGVjaWZpYyBhZ2VudFxuICAgKlxuICAgKiBAcGFyYW0gYWdlbnRJZCAtIFRoZSBhZ2VudCBJRFxuICAgKiBAcGFyYW0gb3B0cyAtIFBlcmlvZCBmaWx0ZXIgb3B0aW9uXG4gICAqIEByZXR1cm5zIEFnZW50IGNvc3QgYnJlYWtkb3duXG4gICAqL1xuICBhc3luYyBnZXRCcmVha2Rvd24oYWdlbnRJZDogc3RyaW5nLCBvcHRzPzogQ29zdFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8QWdlbnRDb3N0QnJlYWtkb3duPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRzPy5wZXJpb2QpIHBhcmFtcy5zZXQoJ3BlcmlvZCcsIG9wdHMucGVyaW9kKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxBZ2VudENvc3RCcmVha2Rvd24+KFxuICAgICAgYC9sbG0tY29zdHMvYnJlYWtkb3duLyR7YWdlbnRJZH0ke3F1ZXJ5ID8gYD8ke3F1ZXJ5fWAgOiAnJ31gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAnbm9uZScgfVxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBjb3N0IHNhdmluZ3MgZnJvbSBvcHRpbWl6YXRpb25zXG4gICAqXG4gICAqIEByZXR1cm5zIFNhdmluZ3MgZGF0YSBhbmQgb3B0aW1pemF0aW9uIGhpc3RvcnlcbiAgICovXG4gIGFzeW5jIGdldFNhdmluZ3MoKTogUHJvbWlzZTxDb3N0U2F2aW5ncz4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8Q29zdFNhdmluZ3M+KCcvbGxtLWNvc3RzL3NhdmluZ3MnLCB7XG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBvcHRpbWl6YXRpb24gc3RhdGlzdGljcyBhbmQgcmVjb21tZW5kYXRpb25zXG4gICAqXG4gICAqIEByZXR1cm5zIE9wdGltaXphdGlvbiBzdGF0cyB3aXRoIHJlY29tbWVuZGF0aW9uc1xuICAgKi9cbiAgYXN5bmMgZ2V0T3B0aW1pemF0aW9uU3RhdHMoKTogUHJvbWlzZTxPcHRpbWl6YXRpb25TdGF0cz4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8T3B0aW1pemF0aW9uU3RhdHM+KCcvbGxtLWNvc3RzL29wdGltaXphdGlvbi1zdGF0cycsIHtcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKiogQWxpYXMgZm9yIGdldFN1bW1hcnkoKSAqL1xuICBhc3luYyBzdW1tYXJ5KG9wdHM/OiBDb3N0UXVlcnlPcHRpb25zKTogUHJvbWlzZTxDb3N0U3VtbWFyeT4ge1xuICAgIHJldHVybiB0aGlzLmdldFN1bW1hcnkob3B0cyk7XG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRm9ybWF0IGEgY29zdCBhbW91bnQgYXMgYSBjdXJyZW5jeSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGNvc3QgYW1vdW50IGluIGRvbGxhcnNcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgKGUuZy4sIFwiJDEyLjM0XCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDb3N0KGFtb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAkJHthbW91bnQudG9GaXhlZCgyKX1gO1xufVxuXG5leHBvcnQgeyBsbG1Db3N0cyBhcyBkZWZhdWx0IH07XG4iXX0=
@@ -245,18 +245,21 @@ export declare const nondeterminism: {
245
245
  getInfo(): Promise<PassAtKInfo>;
246
246
  };
247
247
  /**
248
- * Calculate pass@k probability from pass rate
248
+ * Calculate pass@k probability
249
+ *
250
+ * Supports two calling conventions:
251
+ * - calculatePassAtK(passRate, k) — from pass rate directly
252
+ * - calculatePassAtK(n, c, k) — from n total runs, c correct, sample k
249
253
  *
250
- * @param passRate - Single-run pass rate (0-1)
251
- * @param k - Number of runs
252
254
  * @returns Probability that at least 1 of k runs passes
253
255
  *
254
256
  * @example
255
257
  * ```typescript
256
- * const passAtK = calculatePassAtK(0.7, 3); // ~0.973
258
+ * calculatePassAtK(0.7, 3); // ~0.973 (from pass rate)
259
+ * calculatePassAtK(10, 8, 3); // ~0.983 (from 10 total, 8 correct, sample 3)
257
260
  * ```
258
261
  */
259
- export declare function calculatePassAtK(passRate: number, k: number): number;
262
+ export declare function calculatePassAtK(passRateOrN: number, kOrC: number, k?: number): number;
260
263
  /**
261
264
  * Calculate pass^k probability from pass rate
262
265
  *
@@ -286,11 +289,16 @@ export declare function requiredPassRateForPassAtK(targetPassAtK: number, k: num
286
289
  /**
287
290
  * Determine if evaluation is reliable based on analysis
288
291
  *
289
- * @param analysis - Criterion analysis result
290
- * @param reliabilityThreshold - Minimum reliability score (default 0.8)
292
+ * Accepts either a CriterionAnalysis object or a raw reliability score:
293
+ * - isReliableEvaluation(analysis) — from analysis result
294
+ * - isReliableEvaluation(0.95, 5) — score and k value (k ignored, checks score)
295
+ * - isReliableEvaluation(analysis, 0.9) — with custom threshold
296
+ *
297
+ * @param analysisOrScore - Criterion analysis result or raw reliability score
298
+ * @param thresholdOrK - Reliability threshold (default 0.8)
291
299
  * @returns Whether the evaluation is considered reliable
292
300
  */
293
- export declare function isReliableEvaluation(analysis: CriterionAnalysis, reliabilityThreshold?: number): boolean;
301
+ export declare function isReliableEvaluation(analysisOrScore: CriterionAnalysis | number, thresholdOrK?: number): boolean;
294
302
  /**
295
303
  * Get recommendation based on reliability analysis
296
304
  *