@rest-hooks/endpoint
Advanced tools
Comparing version 3.2.7 to 3.2.8
@@ -402,3 +402,2 @@ 'use strict'; | ||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ | ||
/** | ||
@@ -405,0 +404,0 @@ * Represents data that should be deduped by specifying a primary key. |
import ArraySchema from './Array.js'; | ||
/** | ||
@@ -36,2 +35,2 @@ * Retrieves all entities in cache | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcnJheVNjaGVtYSIsIkFsbFNjaGVtYSIsImNvbnN0cnVjdG9yIiwiZGVmaW5pdGlvbiIsInNjaGVtYUF0dHJpYnV0ZSIsIm5vcm1hbGl6ZSIsImlucHV0IiwicGFyZW50Iiwia2V5IiwidmlzaXQiLCJhZGRFbnRpdHkiLCJ2aXNpdGVkRW50aXRpZXMiLCJpbmZlciIsImFyZ3MiLCJpbmRleGVzIiwicmVjdXJzZSIsImVudGl0aWVzIiwiaXNTaW5nbGVTY2hlbWEiLCJlbnRpdGllc0VudHJ5Iiwic2NoZW1hIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwidmFsdWVzIiwibWFwIiwiZW50aXR5IiwicGsiLCJmb3VuZCIsImxpc3QiLCJmbGF0TWFwIiwiaGFzT3duIiwiaWQiLCJnZXRTY2hlbWFBdHRyaWJ1dGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9BbGwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5VGFibGUgfSBmcm9tICcuLi9pbnRlcmZhY2UuanMnO1xuaW1wb3J0IHsgRW50aXR5SW50ZXJmYWNlLCBFbnRpdHlNYXAsIFNjaGVtYUZ1bmN0aW9uIH0gZnJvbSAnLi4vc2NoZW1hLmpzJztcbmltcG9ydCBBcnJheVNjaGVtYSBmcm9tICcuL0FycmF5LmpzJztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIGVudGl0aWVzIGluIGNhY2hlXG4gKlxuICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9yZXN0L2FwaS9BbGxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWxsU2NoZW1hPFxuICBTIGV4dGVuZHMgRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlID0gRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlLFxuPiBleHRlbmRzIEFycmF5U2NoZW1hIHtcbiAgY29uc3RydWN0b3IoXG4gICAgZGVmaW5pdGlvbjogUyxcbiAgICBzY2hlbWFBdHRyaWJ1dGU/OiBTIGV4dGVuZHMgRW50aXR5TWFwPGluZmVyIFQ+XG4gICAgICA/IGtleW9mIFQgfCBTY2hlbWFGdW5jdGlvbjxrZXlvZiBTPlxuICAgICAgOiB1bmRlZmluZWQsXG4gICkge1xuICAgIHN1cGVyKGRlZmluaXRpb24sIHNjaGVtYUF0dHJpYnV0ZSBhcyBhbnkpO1xuICB9XG5cbiAgbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgcGFyZW50OiBhbnksXG4gICAga2V5OiBhbnksXG4gICAgdmlzaXQ6IGFueSxcbiAgICBhZGRFbnRpdHk6IGFueSxcbiAgICB2aXNpdGVkRW50aXRpZXM6IGFueSxcbiAgKTogYW55IHtcbiAgICAvLyB3ZSByZXR1cm4gdW5kZWZpbmVkXG4gICAgc3VwZXIubm9ybWFsaXplKGlucHV0LCBwYXJlbnQsIGtleSwgdmlzaXQsIGFkZEVudGl0eSwgdmlzaXRlZEVudGl0aWVzKTtcbiAgfVxuXG4gIGluZmVyKGFyZ3M6IGFueSwgaW5kZXhlczogYW55LCByZWN1cnNlOiBhbnksIGVudGl0aWVzOiBFbnRpdHlUYWJsZSk6IGFueSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVTY2hlbWEpIHtcbiAgICAgIGNvbnN0IGVudGl0aWVzRW50cnkgPSBlbnRpdGllc1t0aGlzLnNjaGVtYS5rZXldO1xuICAgICAgaWYgKGVudGl0aWVzRW50cnkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGVudGl0aWVzRW50cnkpLm1hcChcbiAgICAgICAgZW50aXR5ID0+IGVudGl0eSAmJiB0aGlzLnNjaGVtYS5wayhlbnRpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgY29uc3QgbGlzdCA9IE9iamVjdC52YWx1ZXModGhpcy5zY2hlbWEgYXMgUmVjb3JkPHN0cmluZywgYW55PikuZmxhdE1hcChcbiAgICAgIChzY2hlbWE6IEVudGl0eUludGVyZmFjZSkgPT4ge1xuICAgICAgICBpZiAoIU9iamVjdC5oYXNPd24oZW50aXRpZXMsIHNjaGVtYS5rZXkpIHx8ICFlbnRpdGllc1tzY2hlbWEua2V5XSlcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZW50aXRpZXNbc2NoZW1hLmtleV0gYXMgUmVjb3JkPHN0cmluZywgYW55PikubWFwKFxuICAgICAgICAgIGVudGl0eSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGVudGl0eSAmJiBzY2hlbWEucGsoZW50aXR5KSxcbiAgICAgICAgICAgIHNjaGVtYTogdGhpcy5nZXRTY2hlbWFBdHRyaWJ1dGUoZW50aXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICk7XG4gICAgLy8gaWYgbm8gdGFibGUgZW50cmllcyBleGlzdCB3ZSBzaG91bGRuJ3QgZ3JhYiBhbnl0aGluZ1xuICAgIGlmICghZm91bmQpIHJldHVybjtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPQSxXQUFXLE1BQU0sWUFBWTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBTUMsU0FBUyxTQUVwQkQsV0FBVyxDQUFDO0VBQ3BCRSxXQUFXLENBQ1RDLFVBQWEsRUFDYkMsZUFFYSxFQUNiO0lBQ0EsS0FBSyxDQUFDRCxVQUFVLEVBQUVDLGVBQWUsQ0FBUTtFQUMzQztFQUVBQyxTQUFTLENBQ1BDLEtBQVUsRUFDVkMsTUFBVyxFQUNYQyxHQUFRLEVBQ1JDLEtBQVUsRUFDVkMsU0FBYyxFQUNkQyxlQUFvQixFQUNmO0lBQ0w7SUFDQSxLQUFLLENBQUNOLFNBQVMsQ0FBQ0MsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsQ0FBQztFQUN4RTtFQUVBQyxLQUFLLENBQUNDLElBQVMsRUFBRUMsT0FBWSxFQUFFQyxPQUFZLEVBQUVDLFFBQXFCLEVBQU87SUFDdkUsSUFBSSxJQUFJLENBQUNDLGNBQWMsRUFBRTtNQUN2QixNQUFNQyxhQUFhLEdBQUdGLFFBQVEsQ0FBQyxJQUFJLENBQUNHLE1BQU0sQ0FBQ1gsR0FBRyxDQUFDO01BQy9DLElBQUlVLGFBQWEsS0FBS0UsU0FBUyxFQUFFLE9BQU9BLFNBQVM7TUFDakQsT0FBT0MsTUFBTSxDQUFDQyxNQUFNLENBQUNKLGFBQWEsQ0FBQyxDQUFDSyxHQUFHLENBQ3JDQyxNQUFNLElBQUlBLE1BQU0sSUFBSSxJQUFJLENBQUNMLE1BQU0sQ0FBQ00sRUFBRSxDQUFDRCxNQUFNLENBQUMsQ0FDM0M7SUFDSDtJQUNBLElBQUlFLEtBQUssR0FBRyxLQUFLO0lBQ2pCLE1BQU1DLElBQUksR0FBR04sTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDSCxNQUFNLENBQXdCLENBQUNTLE9BQU8sQ0FDbkVULE1BQXVCLElBQUs7TUFDM0IsSUFBSSxDQUFDRSxNQUFNLENBQUNRLE1BQU0sQ0FBQ2IsUUFBUSxFQUFFRyxNQUFNLENBQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUNRLFFBQVEsQ0FBQ0csTUFBTSxDQUFDWCxHQUFHLENBQUMsRUFDL0QsT0FBTyxFQUFFO01BQ1hrQixLQUFLLEdBQUcsSUFBSTtNQUNaLE9BQU9MLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDTixRQUFRLENBQUNHLE1BQU0sQ0FBQ1gsR0FBRyxDQUFDLENBQXdCLENBQUNlLEdBQUcsQ0FDbkVDLE1BQU0sS0FBSztRQUNUTSxFQUFFLEVBQUVOLE1BQU0sSUFBSUwsTUFBTSxDQUFDTSxFQUFFLENBQUNELE1BQU0sQ0FBQztRQUMvQkwsTUFBTSxFQUFFLElBQUksQ0FBQ1ksa0JBQWtCLENBQUNQLE1BQU0sRUFBRUosU0FBUyxFQUFFQSxTQUFTO01BQzlELENBQUMsQ0FBQyxDQUNIO0lBQ0gsQ0FBQyxDQUNGO0lBQ0Q7SUFDQSxJQUFJLENBQUNNLEtBQUssRUFBRTtJQUNaLE9BQU9DLElBQUk7RUFDYjtBQUNGIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcnJheVNjaGVtYSIsIkFsbFNjaGVtYSIsImNvbnN0cnVjdG9yIiwiZGVmaW5pdGlvbiIsInNjaGVtYUF0dHJpYnV0ZSIsIm5vcm1hbGl6ZSIsImlucHV0IiwicGFyZW50Iiwia2V5IiwidmlzaXQiLCJhZGRFbnRpdHkiLCJ2aXNpdGVkRW50aXRpZXMiLCJpbmZlciIsImFyZ3MiLCJpbmRleGVzIiwicmVjdXJzZSIsImVudGl0aWVzIiwiaXNTaW5nbGVTY2hlbWEiLCJlbnRpdGllc0VudHJ5Iiwic2NoZW1hIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwidmFsdWVzIiwibWFwIiwiZW50aXR5IiwicGsiLCJmb3VuZCIsImxpc3QiLCJmbGF0TWFwIiwiaGFzT3duIiwiaWQiLCJnZXRTY2hlbWFBdHRyaWJ1dGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9BbGwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFycmF5U2NoZW1hIGZyb20gJy4vQXJyYXkuanMnO1xuaW1wb3J0IHsgRW50aXR5VGFibGUgfSBmcm9tICcuLi9pbnRlcmZhY2UuanMnO1xuaW1wb3J0IHsgRW50aXR5SW50ZXJmYWNlLCBFbnRpdHlNYXAsIFNjaGVtYUZ1bmN0aW9uIH0gZnJvbSAnLi4vc2NoZW1hLmpzJztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIGVudGl0aWVzIGluIGNhY2hlXG4gKlxuICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9yZXN0L2FwaS9BbGxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWxsU2NoZW1hPFxuICBTIGV4dGVuZHMgRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlID0gRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlLFxuPiBleHRlbmRzIEFycmF5U2NoZW1hIHtcbiAgY29uc3RydWN0b3IoXG4gICAgZGVmaW5pdGlvbjogUyxcbiAgICBzY2hlbWFBdHRyaWJ1dGU/OiBTIGV4dGVuZHMgRW50aXR5TWFwPGluZmVyIFQ+XG4gICAgICA/IGtleW9mIFQgfCBTY2hlbWFGdW5jdGlvbjxrZXlvZiBTPlxuICAgICAgOiB1bmRlZmluZWQsXG4gICkge1xuICAgIHN1cGVyKGRlZmluaXRpb24sIHNjaGVtYUF0dHJpYnV0ZSBhcyBhbnkpO1xuICB9XG5cbiAgbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgcGFyZW50OiBhbnksXG4gICAga2V5OiBhbnksXG4gICAgdmlzaXQ6IGFueSxcbiAgICBhZGRFbnRpdHk6IGFueSxcbiAgICB2aXNpdGVkRW50aXRpZXM6IGFueSxcbiAgKTogYW55IHtcbiAgICAvLyB3ZSByZXR1cm4gdW5kZWZpbmVkXG4gICAgc3VwZXIubm9ybWFsaXplKGlucHV0LCBwYXJlbnQsIGtleSwgdmlzaXQsIGFkZEVudGl0eSwgdmlzaXRlZEVudGl0aWVzKTtcbiAgfVxuXG4gIGluZmVyKGFyZ3M6IGFueSwgaW5kZXhlczogYW55LCByZWN1cnNlOiBhbnksIGVudGl0aWVzOiBFbnRpdHlUYWJsZSk6IGFueSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVTY2hlbWEpIHtcbiAgICAgIGNvbnN0IGVudGl0aWVzRW50cnkgPSBlbnRpdGllc1t0aGlzLnNjaGVtYS5rZXldO1xuICAgICAgaWYgKGVudGl0aWVzRW50cnkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGVudGl0aWVzRW50cnkpLm1hcChcbiAgICAgICAgZW50aXR5ID0+IGVudGl0eSAmJiB0aGlzLnNjaGVtYS5wayhlbnRpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgY29uc3QgbGlzdCA9IE9iamVjdC52YWx1ZXModGhpcy5zY2hlbWEgYXMgUmVjb3JkPHN0cmluZywgYW55PikuZmxhdE1hcChcbiAgICAgIChzY2hlbWE6IEVudGl0eUludGVyZmFjZSkgPT4ge1xuICAgICAgICBpZiAoIU9iamVjdC5oYXNPd24oZW50aXRpZXMsIHNjaGVtYS5rZXkpIHx8ICFlbnRpdGllc1tzY2hlbWEua2V5XSlcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZW50aXRpZXNbc2NoZW1hLmtleV0gYXMgUmVjb3JkPHN0cmluZywgYW55PikubWFwKFxuICAgICAgICAgIGVudGl0eSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGVudGl0eSAmJiBzY2hlbWEucGsoZW50aXR5KSxcbiAgICAgICAgICAgIHNjaGVtYTogdGhpcy5nZXRTY2hlbWFBdHRyaWJ1dGUoZW50aXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICk7XG4gICAgLy8gaWYgbm8gdGFibGUgZW50cmllcyBleGlzdCB3ZSBzaG91bGRuJ3QgZ3JhYiBhbnl0aGluZ1xuICAgIGlmICghZm91bmQpIHJldHVybjtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLE1BQU0sWUFBWTtBQUlwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxNQUFNQyxTQUFTLFNBRXBCRCxXQUFXLENBQUM7RUFDcEJFLFdBQVcsQ0FDVEMsVUFBYSxFQUNiQyxlQUVhLEVBQ2I7SUFDQSxLQUFLLENBQUNELFVBQVUsRUFBRUMsZUFBZSxDQUFRO0VBQzNDO0VBRUFDLFNBQVMsQ0FDUEMsS0FBVSxFQUNWQyxNQUFXLEVBQ1hDLEdBQVEsRUFDUkMsS0FBVSxFQUNWQyxTQUFjLEVBQ2RDLGVBQW9CLEVBQ2Y7SUFDTDtJQUNBLEtBQUssQ0FBQ04sU0FBUyxDQUFDQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxDQUFDO0VBQ3hFO0VBRUFDLEtBQUssQ0FBQ0MsSUFBUyxFQUFFQyxPQUFZLEVBQUVDLE9BQVksRUFBRUMsUUFBcUIsRUFBTztJQUN2RSxJQUFJLElBQUksQ0FBQ0MsY0FBYyxFQUFFO01BQ3ZCLE1BQU1DLGFBQWEsR0FBR0YsUUFBUSxDQUFDLElBQUksQ0FBQ0csTUFBTSxDQUFDWCxHQUFHLENBQUM7TUFDL0MsSUFBSVUsYUFBYSxLQUFLRSxTQUFTLEVBQUUsT0FBT0EsU0FBUztNQUNqRCxPQUFPQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0osYUFBYSxDQUFDLENBQUNLLEdBQUcsQ0FDckNDLE1BQU0sSUFBSUEsTUFBTSxJQUFJLElBQUksQ0FBQ0wsTUFBTSxDQUFDTSxFQUFFLENBQUNELE1BQU0sQ0FBQyxDQUMzQztJQUNIO0lBQ0EsSUFBSUUsS0FBSyxHQUFHLEtBQUs7SUFDakIsTUFBTUMsSUFBSSxHQUFHTixNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUNILE1BQU0sQ0FBd0IsQ0FBQ1MsT0FBTyxDQUNuRVQsTUFBdUIsSUFBSztNQUMzQixJQUFJLENBQUNFLE1BQU0sQ0FBQ1EsTUFBTSxDQUFDYixRQUFRLEVBQUVHLE1BQU0sQ0FBQ1gsR0FBRyxDQUFDLElBQUksQ0FBQ1EsUUFBUSxDQUFDRyxNQUFNLENBQUNYLEdBQUcsQ0FBQyxFQUMvRCxPQUFPLEVBQUU7TUFDWGtCLEtBQUssR0FBRyxJQUFJO01BQ1osT0FBT0wsTUFBTSxDQUFDQyxNQUFNLENBQUNOLFFBQVEsQ0FBQ0csTUFBTSxDQUFDWCxHQUFHLENBQUMsQ0FBd0IsQ0FBQ2UsR0FBRyxDQUNuRUMsTUFBTSxLQUFLO1FBQ1RNLEVBQUUsRUFBRU4sTUFBTSxJQUFJTCxNQUFNLENBQUNNLEVBQUUsQ0FBQ0QsTUFBTSxDQUFDO1FBQy9CTCxNQUFNLEVBQUUsSUFBSSxDQUFDWSxrQkFBa0IsQ0FBQ1AsTUFBTSxFQUFFSixTQUFTLEVBQUVBLFNBQVM7TUFDOUQsQ0FBQyxDQUFDLENBQ0g7SUFDSCxDQUFDLENBQ0Y7SUFDRDtJQUNBLElBQUksQ0FBQ00sS0FBSyxFQUFFO0lBQ1osT0FBT0MsSUFBSTtFQUNiO0FBQ0YifQ== |
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ | ||
import { isImmutable, denormalizeImmutable } from './ImmutableUtils.js'; | ||
/** | ||
@@ -302,2 +301,2 @@ * Represents data that should be deduped by specifying a primary key. | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0ltbXV0YWJsZSIsImRlbm9ybWFsaXplSW1tdXRhYmxlIiwiRW50aXR5IiwidG9KU09OIiwibmFtZSIsInNjaGVtYSIsImtleSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwicGsiLCJ2YWx1ZSIsInBhcmVudCIsInByb3RvdHlwZSIsImNhbGwiLCJ1c2VJbmNvbWluZyIsImV4aXN0aW5nTWV0YSIsImluY29taW5nTWV0YSIsImV4aXN0aW5nIiwiaW5jb21pbmciLCJmZXRjaGVkQXQiLCJtZXJnZSIsImZyb21KUyIsInByb3BzIiwiaW5zdGFuY2UiLCJPYmplY3QiLCJhc3NpZ24iLCJpbnB1dCIsImF1dG9tYXRpY1ZhbGlkYXRpb24iLCJBcnJheSIsImlzQXJyYXkiLCJlcnJvck1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5Iiwic2xpY2UiLCJlcnJvciIsInN0YXR1cyIsImNvbnNvbGUiLCJ3YXJuIiwibm9ybWFsaXplIiwidmlzaXQiLCJhZGRFbnRpdHkiLCJ2aXNpdGVkRW50aXRpZXMiLCJwcm9jZXNzZWRFbnRpdHkiLCJpZCIsInVuZGVmaW5lZCIsImVudGl0eVR5cGUiLCJzb21lIiwiZW50aXR5IiwidmFsaWRhdGUiLCJwdXNoIiwia2V5cyIsImZvckVhY2giLCJoYXNPd24iLCJrZXlzT2ZSZWNvcmQiLCJTZXQiLCJkZWZhdWx0cyIsImtleXNPZlByb3BzIiwiZm91bmQiLCJtaXNzaW5nIiwidW5leHBlY3RlZCIsImtleU9mUHJvcHMiLCJoYXMiLCJrZXlPZlJlY29yZCIsImluY2x1ZGVzIiwic2l6ZSIsInRvb01hbnlVbmV4cGVjdGVkIiwiTWF0aCIsIm1heCIsImxlbmd0aCIsImZvdW5kTm90aGluZyIsIm1pbiIsImV4dHJhIiwicmVhc29uIiwiaW5mZXIiLCJhcmdzIiwiaW5kZXhlcyIsInJlY3Vyc2UiLCJpbmRleE5hbWUiLCJpbmRleEZyb21QYXJhbXMiLCJleHBpcmVzQXQiLCJtZXRhIiwiZGVub3JtYWxpemUiLCJ1bnZpc2l0IiwidG9KUyIsInNldExvY2FsIiwiZGVub3JtRW50aXR5IiwiZGVsZXRlZCIsInRvT2JqZWN0IiwiZW50aXR5Q29weSIsIm5leHRJbnB1dCIsImRlbGV0ZWRJdGVtIiwic2V0IiwiX19kZWZhdWx0cyIsInN1cGVyRnJvbSIsInBhcmFtcyIsImZpbmQiLCJpbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL0VudGl0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzICovXG5cbmltcG9ydCB0eXBlIHsgU2NoZW1hLCBOb3JtYWxpemVkSW5kZXgsIFVudmlzaXRGdW5jdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZS5qcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSB9IGZyb20gJy4uL25vcm1hbC5qcyc7XG5pbXBvcnQgeyBpc0ltbXV0YWJsZSwgZGVub3JtYWxpemVJbW11dGFibGUgfSBmcm9tICcuL0ltbXV0YWJsZVV0aWxzLmpzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGRhdGEgdGhhdCBzaG91bGQgYmUgZGVkdXBlZCBieSBzcGVjaWZ5aW5nIGEgcHJpbWFyeSBrZXkuXG4gKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0VudGl0eVxuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBFbnRpdHkge1xuICBzdGF0aWMgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAga2V5OiB0aGlzLmtleSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIERlZmluZXMgbmVzdGVkIGVudGl0aWVzICovXG4gIHN0YXRpYyBzY2hlbWE6IHsgW2s6IHN0cmluZ106IFNjaGVtYSB9ID0ge307XG5cbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggRW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBbcGFyZW50XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUgb2JqZWN0IHdoaWNoIGluY2x1ZGVkIHRoZSBlbnRpdHlcbiAgICogQHBhcmFtIFtrZXldIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBrZXkgd2hlcmUgdGhpcyBlbnRpdHkgd2FzIGZvdW5kXG4gICAqL1xuICBhYnN0cmFjdCBwayhwYXJlbnQ/OiBhbnksIGtleT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmV0dXJucyB0aGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGF0aWMgRW50aXR5ICovXG4gIHN0YXRpYyBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAodGhpcy5uYW1lID09PSAnJyB8fCB0aGlzLm5hbWUgPT09ICdFbnRpdHknIHx8IHRoaXMubmFtZSA9PT0gJ190ZW1wJylcbiAgICApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdFbnRpdHkgY2xhc3NlcyB3aXRob3V0IGEgbmFtZSBtdXN0IGRlZmluZSBgc3RhdGljIGdldCBrZXkoKWAnLFxuICAgICAgKTtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqIERlZmluZXMgaW5kZXhlcyB0byBlbmFibGUgbG9va3VwIGJ5ICovXG4gIGRlY2xhcmUgc3RhdGljIGluZGV4ZXM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKiogQ29udHJvbCBob3cgYXV0b21hdGljIHNjaGVtYSB2YWxpZGF0aW9uIGlzIGhhbmRsZWRcbiAgICpcbiAgICogYHVuZGVmaW5lZGA6IERlZmF1bHRzIC0gdGhyb3cgZXJyb3IgaW4gd29yc3Qgb2ZmZW5zZVxuICAgKiAnd2Fybic6IG9ubHkgZXZlciB3YXJuXG4gICAqICdzaWxlbnQnOiBEb24ndCBib3RoZXIgd2l0aCBwcm9jZXNzaW5nIGF0IGFsbFxuICAgKlxuICAgKiBOb3RlOiB0aGlzIG9ubHkgYXBwbGllcyB0byBub24tbmVzdGVkIG1lbWJlcnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbj86ICd3YXJuJyB8ICdzaWxlbnQnO1xuXG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBlYWNoIEVudGl0eVxuICAgKlxuICAgKiBAcGFyYW0gW3ZhbHVlXSBQT0pPIG9mIHRoZSBlbnRpdHkgb3Igc3Vic2V0IHVzZWRcbiAgICogQHBhcmFtIFtwYXJlbnRdIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBvYmplY3Qgd2hpY2ggaW5jbHVkZWQgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICovXG4gIHN0YXRpYyBwazxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICB2YWx1ZTogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICAgcGFyZW50PzogYW55LFxuICAgIGtleT86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5wcm90b3R5cGUucGsuY2FsbCh2YWx1ZSwgcGFyZW50LCBrZXkpO1xuICB9XG5cbiAgLyoqIFJldHVybiB0cnVlIHRvIG1lcmdlIGluY29taW5nIGRhdGE7IGZhbHNlIGtlZXBzIGV4aXN0aW5nIGVudGl0eSAqL1xuICBzdGF0aWMgdXNlSW5jb21pbmcoXG4gICAgZXhpc3RpbmdNZXRhOiB7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICBpbmNvbWluZ01ldGE6IHsgZGF0ZTogbnVtYmVyOyBmZXRjaGVkQXQ6IG51bWJlciB9LFxuICAgIGV4aXN0aW5nOiBhbnksXG4gICAgaW5jb21pbmc6IGFueSxcbiAgKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nTWV0YS5mZXRjaGVkQXQgPD0gaW5jb21pbmdNZXRhLmZldGNoZWRBdDtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBjb3B5aW5nIG92ZXIgZGVmaW5lZCB2YWx1ZXMgb2YgYXJndW1lbnRzICovXG4gIHN0YXRpYyBtZXJnZShleGlzdGluZzogYW55LCBpbmNvbWluZzogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgLi4uaW5jb21pbmcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGZyb20gUGxhaW4gSlMgT2JqZWN0cy5cbiAgICpcbiAgICogQHBhcmFtIFtwcm9wc10gUGxhaW4gT2JqZWN0IG9mIHByb3BlcnRpZXMgdG8gYXNzaWduLlxuICAgKiBAcGFyYW0gW3BhcmVudF0gV2hlbiBub3JtYWxpemluZywgdGhlIG9iamVjdCB3aGljaCBpbmNsdWRlZCB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSBba2V5XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUga2V5IHdoZXJlIHRoaXMgcmVjb3JkIHdhcyBmb3VuZFxuICAgKi9cbiAgc3RhdGljIGZyb21KUzxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBvbmx5IGFjY2VwdCBtZW1iZXJzIHRoYXQgYXJlIG5vdCBmdW5jdGlvbnNcbiAgICBwcm9wczogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4gPSB7fSxcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4ge1xuICAgIC8vIHdlIHR5cGUgZ3VhcmRlZCBhYnN0cmFjdCBjYXNlIGFib3ZlLCBzbyBvayB0byBmb3JjZSB0eXBlc2NyaXB0IHRvIGFsbG93IGNvbnN0cnVjdG9yIGNhbGxcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyAodGhpcyBhcyBhbnkpKHByb3BzKSBhcyBBYnN0cmFjdEluc3RhbmNlVHlwZTxUPjtcbiAgICAvLyB3ZSBjYW4ndCByZWx5IG9uIGNvbnN0cnVjdG9ycyBhbmQgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGFzIHByb3BlcnR5IGFzc2lnbm1lbnRzXG4gICAgLy8gYWxsIG9jY3VyIGFmdGVyIHRoZSBjb25zdHJ1Y3RvclxuICAgIE9iamVjdC5hc3NpZ24oaW5zdGFuY2UsIHByb3BzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKiogRG8gYW55IHRyYW5zZm9ybWF0aW9ucyB3aGVuIGZpcnN0IHJlY2VpdmluZyBpbnB1dCAqL1xuICBzdGF0aWMgcHJvY2VzcyhpbnB1dDogYW55LCBwYXJlbnQ6IGFueSwga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBhbnkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgdGhpcy5hdXRvbWF0aWNWYWxpZGF0aW9uICE9PSAnc2lsZW50J1xuICAgICkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSAke1xuICAgICAgICAgIHRoaXMubmFtZVxuICAgICAgICB9IHdpdGggYW4gYXJyYXksIGJ1dCBuYW1lZCBtZW1iZXJzIHdlcmUgZXhwZWN0ZWRcblxuVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuVHJ5IGluc3BlY3RpbmcgdGhlIG5ldHdvcmsgcmVzcG9uc2Ugb3IgZmV0Y2goKSByZXR1cm4gdmFsdWUuXG5PciB1c2UgZGVidWdnaW5nIHRvb2xzOiBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2d1aWRlcy9kZWJ1Z2dpbmdcbkxlYXJuIG1vcmUgYWJvdXQgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvc2NoZW1hXG5JZiB0aGlzIGlzIGEgbWlzdGFrZSwgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgYnkgc2V0dGluZyBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbiA9ICdzaWxlbnQnXG5cbkZpcnN0IHRocmVlIG1lbWJlcnM6ICR7SlNPTi5zdHJpbmdpZnkoaW5wdXQuc2xpY2UoMCwgMyksIG51bGwsIDIpfWA7XG4gICAgICAgIGlmICh0aGlzLmF1dG9tYXRpY1ZhbGlkYXRpb24gIT09ICd3YXJuJykge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IC4uLmlucHV0IH07XG4gIH1cblxuICBzdGF0aWMgbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgcGFyZW50OiBhbnksXG4gICAga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdmlzaXQ6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICBhZGRFbnRpdHk6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICB2aXNpdGVkRW50aXRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICk6IGFueSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkRW50aXR5ID0gdGhpcy5wcm9jZXNzKGlucHV0LCBwYXJlbnQsIGtleSk7XG4gICAgY29uc3QgaWQgPSB0aGlzLnBrKHByb2Nlc3NlZEVudGl0eSwgcGFyZW50LCBrZXkpO1xuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSAnJykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYE1pc3NpbmcgdXNhYmxlIHByaW1hcnkga2V5IHdoZW4gbm9ybWFsaXppbmcgcmVzcG9uc2UuXG5cbiAgVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuICBUcnkgaW5zcGVjdGluZyB0aGUgbmV0d29yayByZXNwb25zZSBvciBmZXRjaCgpIHJldHVybiB2YWx1ZS5cbiAgT3IgdXNlIGRlYnVnZ2luZyB0b29sczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9ndWlkZXMvZGVidWdnaW5nXG4gIExlYXJuIG1vcmUgYWJvdXQgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvc2NoZW1hXG5cbiAgRW50aXR5OiAke3RoaXMubmFtZX1cbiAgVmFsdWUgKHByb2Nlc3NlZCk6ICR7XG4gICAgcHJvY2Vzc2VkRW50aXR5ICYmIEpTT04uc3RyaW5naWZ5KHByb2Nlc3NlZEVudGl0eSwgbnVsbCwgMilcbiAgfVxuICBgLFxuICAgICAgICApO1xuICAgICAgICAoZXJyb3IgYXMgYW55KS5zdGF0dXMgPSA0MDA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlc2UgbWFrZSB0aGUga2V5cyBnZXQgZGVsZXRlZFxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5rZXk7XG5cbiAgICBpZiAoIShlbnRpdHlUeXBlIGluIHZpc2l0ZWRFbnRpdGllcykpIHtcbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXSA9IHt9O1xuICAgIH1cbiAgICBpZiAoIShpZCBpbiB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV0pKSB7XG4gICAgICB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV1baWRdID0gW107XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0uc29tZSgoZW50aXR5OiBhbnkpID0+IGVudGl0eSA9PT0gaW5wdXQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMudmFsaWRhdGUocHJvY2Vzc2VkRW50aXR5KTtcbiAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0ucHVzaChpbnB1dCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKE9iamVjdC5oYXNPd24ocHJvY2Vzc2VkRW50aXR5LCBrZXkpKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuc2NoZW1hW2tleV07XG4gICAgICAgIHByb2Nlc3NlZEVudGl0eVtrZXldID0gdmlzaXQoXG4gICAgICAgICAgcHJvY2Vzc2VkRW50aXR5W2tleV0sXG4gICAgICAgICAgcHJvY2Vzc2VkRW50aXR5LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgYWRkRW50aXR5LFxuICAgICAgICAgIHZpc2l0ZWRFbnRpdGllcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGFkZEVudGl0eSh0aGlzLCBwcm9jZXNzZWRFbnRpdHksIGlkKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIHZhbGlkYXRlKHByb2Nlc3NlZEVudGl0eTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIHRoaXMuYXV0b21hdGljVmFsaWRhdGlvbiAhPT0gJ3NpbGVudCdcbiAgICApIHtcbiAgICAgIGNvbnN0IGtleXNPZlJlY29yZCA9IG5ldyBTZXQoT2JqZWN0LmtleXModGhpcy5kZWZhdWx0cykpO1xuICAgICAgY29uc3Qga2V5c09mUHJvcHMgPSBPYmplY3Qua2V5cyhwcm9jZXNzZWRFbnRpdHkpO1xuICAgICAgY29uc3QgW2ZvdW5kLCBtaXNzaW5nLCB1bmV4cGVjdGVkXSA9IFtbXSwgW10sIFtdXSBhcyBbXG4gICAgICAgIHN0cmluZ1tdLFxuICAgICAgICBzdHJpbmdbXSxcbiAgICAgICAgc3RyaW5nW10sXG4gICAgICBdO1xuICAgICAgZm9yIChjb25zdCBrZXlPZlByb3BzIG9mIGtleXNPZlByb3BzKSB7XG4gICAgICAgIGlmIChrZXlzT2ZSZWNvcmQuaGFzKGtleU9mUHJvcHMpKSB7XG4gICAgICAgICAgZm91bmQucHVzaChrZXlPZlByb3BzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1bmV4cGVjdGVkLnB1c2goa2V5T2ZQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5T2ZSZWNvcmQgb2Yga2V5c09mUmVjb3JkKSB7XG4gICAgICAgIGlmICghZm91bmQuaW5jbHVkZXMoa2V5T2ZSZWNvcmQpKSB7XG4gICAgICAgICAgbWlzc2luZy5wdXNoKGtleU9mUmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBvbmx5IGJvdGhlciB3aXRoIHRoaXMgaWYgdGhleSB1c2VkICphbnkqIGRlZmF1bHRzXG4gICAgICBpZiAoa2V5c09mUmVjb3JkLnNpemUpIHtcbiAgICAgICAgY29uc3QgdG9vTWFueVVuZXhwZWN0ZWQgPVxuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgY29tcGFyZWQgdG8gbWVtYmVycyBpbiByZXNwb25zZVxuICAgICAgICAgIE1hdGgubWF4KGtleXNPZlByb3BzLmxlbmd0aCAvIDIsIDEpIDw9IHVuZXhwZWN0ZWQubGVuZ3RoICYmXG4gICAgICAgICAgLy8gdW5leHBlY3RlZCBjb21wYXJlZCB0byB3aGF0IHdlIHNwZWNpZmllZFxuICAgICAgICAgIGtleXNPZlJlY29yZC5zaXplID4gTWF0aC5tYXgodW5leHBlY3RlZC5sZW5ndGgsIDIpICYmXG4gICAgICAgICAgLy8gYXMgd2UgZmluZCBtb3JlIGFuZCBtb3JlIGJlIG1vcmUgZWFzaWx5IGFzc3VyZWQgaXQgaXMgY29ycmVjdFxuICAgICAgICAgIGZvdW5kLmxlbmd0aCAqKiAxLjUgLyAyIDw9IHVuZXhwZWN0ZWQubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb3VuZE5vdGhpbmcgPSBmb3VuZC5sZW5ndGggPCBNYXRoLm1pbigxLCBrZXlzT2ZSZWNvcmQuc2l6ZSAvIDIpO1xuICAgICAgICAvLyBpZiB3ZSBmaW5kIG5vdGhpbmcgKHdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgbWVtYmVyIGZvciBhIHBrKVxuICAgICAgICAvLyBvciB3ZSBmaW5kIHRvbyBtYW55IHVuZXhwZWN0ZWQgbWVtYmVyc1xuICAgICAgICBpZiAodG9vTWFueVVuZXhwZWN0ZWQgfHwgZm91bmROb3RoaW5nKSB7XG4gICAgICAgICAgbGV0IGV4dHJhID0gJyc7XG4gICAgICAgICAgbGV0IHJlYXNvbiA9ICdzdWJzdGFudGlhbGx5IGRpZmZlcmVudCB0aGFuIGV4cGVjdGVkIGtleXMnO1xuICAgICAgICAgIGlmIChmb3VuZE5vdGhpbmcpIHtcbiAgICAgICAgICAgIGV4dHJhICs9IGBcXG4gICAgTWlzc2luZzogJHttaXNzaW5nfWA7XG4gICAgICAgICAgICByZWFzb24gPSAnbm8gbWF0Y2hpbmcga2V5cyBmb3VuZCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0b29NYW55VW5leHBlY3RlZCkge1xuICAgICAgICAgICAgZXh0cmEgKz0gYFxcbiAgICBVbmV4cGVjdGVkIGtleXM6ICR7dW5leHBlY3RlZH1gO1xuICAgICAgICAgICAgcmVhc29uID0gJ2EgbGFyZ2UgbnVtYmVyIG9mIHVuZXhwZWN0ZWQga2V5cyBmb3VuZCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSAke1xuICAgICAgICAgICAgdGhpcy5uYW1lXG4gICAgICAgICAgfSB3aXRoICR7cmVhc29ufVxuXG4gIFRoaXMgaXMgbGlrZWx5IGR1ZSB0byBhIG1hbGZvcm1lZCByZXNwb25zZS5cbiAgVHJ5IGluc3BlY3RpbmcgdGhlIG5ldHdvcmsgcmVzcG9uc2Ugb3IgZmV0Y2goKSByZXR1cm4gdmFsdWUuXG4gIE9yIHVzZSBkZWJ1Z2dpbmcgdG9vbHM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvZ3VpZGVzL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IHNjaGVtYXM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL3NjaGVtYVxuICBJZiB0aGlzIGlzIGEgbWlzdGFrZSwgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgYnkgc2V0dGluZyBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbiA9ICdzaWxlbnQnXG5cbiAgRXhwZWN0ZWQga2V5czpcbiAgICBGb3VuZDogJHtmb3VuZH0ke2V4dHJhfVxuICBWYWx1ZSAocHJvY2Vzc2VkKTogJHtKU09OLnN0cmluZ2lmeShwcm9jZXNzZWRFbnRpdHksIG51bGwsIDIpfWA7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGZvdW5kLmxlbmd0aCA+PSA0ICYmIHRvb01hbnlVbmV4cGVjdGVkKSB8fFxuICAgICAgICAgICAgdGhpcy5hdXRvbWF0aWNWYWxpZGF0aW9uID09PSAnd2FybidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5zY2hlbWEpKSB7XG4gICAgICAgIGlmICghT2JqZWN0Lmhhc093bihwcm9jZXNzZWRFbnRpdHksIGtleSkpIHtcbiAgICAgICAgICBpZiAoIU9iamVjdC5oYXNPd24odGhpcy5kZWZhdWx0cywga2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGBTY2hlbWEga2V5IGlzIG1pc3NpbmcgaW4gRW50aXR5XG5cbiAgQmUgc3VyZSBhbGwgc2NoZW1hIG1lbWJlcnMgYXJlIGFsc28gcGFydCBvZiB0aGUgZW50aXR5XG4gIE9yIHVzZSBkZWJ1Z2dpbmcgdG9vbHM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvZ3VpZGVzL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IG5lc3Rpbmcgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9ndWlkZXMvbmVzdGVkLXJlc3BvbnNlXG5cbiAgRW50aXR5IGtleXM6ICR7T2JqZWN0LmtleXModGhpcy5kZWZhdWx0cyl9XG4gIFNjaGVtYSBrZXkobWlzc2luZyk6ICR7a2V5fVxuICBgO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpbmZlcihcbiAgICBhcmdzOiByZWFkb25seSBhbnlbXSxcbiAgICBpbmRleGVzOiBOb3JtYWxpemVkSW5kZXgsXG4gICAgcmVjdXJzZTogYW55LFxuICApOiBhbnkge1xuICAgIGlmICghYXJnc1swXSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJ10uaW5jbHVkZXModHlwZW9mIGFyZ3NbMF0pKSB7XG4gICAgICByZXR1cm4gYCR7YXJnc1swXX1gO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IHRoaXMucGsoYXJnc1swXSwgdW5kZWZpbmVkLCAnJyk7XG4gICAgLy8gV2FzIGFibGUgdG8gaW5mZXIgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5IGZyb20gcGFyYW1zXG4gICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09ICcnKSByZXR1cm4gaWQ7XG4gICAgLy8gbm93IGF0dGVtcHQgbG9va3VwIGluIGluZGV4ZXNcbiAgICBjb25zdCBpbmRleE5hbWUgPSBpbmRleEZyb21QYXJhbXMoYXJnc1swXSwgdGhpcy5pbmRleGVzKTtcbiAgICBpZiAoaW5kZXhOYW1lICYmIGluZGV4ZXNbdGhpcy5rZXldKSB7XG4gICAgICAvLyAnYXMgUmVjb3JkPHN0cmluZywgYW55Pic6IGluZGV4TmFtZSBjYW4gb25seSBiZSBmb3VuZCBpZiBwYXJhbXMgaXMgYSBzdHJpbmcga2V5J2Qgb2JqZWN0XG4gICAgICBjb25zdCBpZCA9XG4gICAgICAgIGluZGV4ZXNbdGhpcy5rZXldW2luZGV4TmFtZV1bXG4gICAgICAgICAgKGFyZ3NbMF0gYXMgUmVjb3JkPHN0cmluZywgYW55PilbaW5kZXhOYW1lXVxuICAgICAgICBdO1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhdGljIGV4cGlyZXNBdChcbiAgICBtZXRhOiB7IGV4cGlyZXNBdDogbnVtYmVyOyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgaW5wdXQ6IGFueSxcbiAgKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbWV0YS5leHBpcmVzQXQ7XG4gIH1cblxuICBzdGF0aWMgZGVub3JtYWxpemU8VCBleHRlbmRzIHR5cGVvZiBFbnRpdHk+KFxuICAgIHRoaXM6IFQsXG4gICAgaW5wdXQ6IGFueSxcbiAgICB1bnZpc2l0OiBVbnZpc2l0RnVuY3Rpb24sXG4gICk6IFtkZW5vcm1hbGl6ZWQ6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+LCBmb3VuZDogYm9vbGVhbiwgc3VzcGVuZDogYm9vbGVhbl0ge1xuICAgIC8vIFRPRE86IHJlbW92ZSBjb2RlY292IGlnbm9yZSBvbmNlIGRlbm9ybWFsaXplIGlzIG1vZGlmaWVkIHRvIGV4cGVjdCB0aGlzXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiBbdW5kZWZpbmVkLCB0cnVlLCB0cnVlXSBhcyBhbnk7XG4gICAgfVxuICAgIGlmIChpc0ltbXV0YWJsZShpbnB1dCkpIHtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlKChpbnB1dCBhcyBhbnkpLnRvSlMoKSkpXG4gICAgICAgIHJldHVybiBbdW5kZWZpbmVkIGFzIGFueSwgZmFsc2UsIHRydWVdO1xuICAgICAgLy8gTmVlZCB0byBzZXQgdGhpcyBmaXJzdCBzbyB0aGF0IGlmIGl0IGlzIHJlZmVyZW5jZWQgZnVydGhlciB3aXRoaW4gdGhlXG4gICAgICAvLyBkZW5vcm1hbGl6YXRpb24gdGhlIHJlZmVyZW5jZSB3aWxsIGFscmVhZHkgZXhpc3QuXG4gICAgICB1bnZpc2l0LnNldExvY2FsPy4oaW5wdXQpO1xuICAgICAgY29uc3QgW2Rlbm9ybUVudGl0eSwgZm91bmQsIGRlbGV0ZWRdID0gZGVub3JtYWxpemVJbW11dGFibGUoXG4gICAgICAgIHRoaXMuc2NoZW1hLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgdW52aXNpdCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gW3RoaXMuZnJvbUpTKGRlbm9ybUVudGl0eS50b09iamVjdCgpKSwgZm91bmQsIGRlbGV0ZWRdO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWxpZGF0ZShpbnB1dCkpIHtcbiAgICAgIHJldHVybiBbdW5kZWZpbmVkIGFzIGFueSwgZmFsc2UsIHRydWVdO1xuICAgIH1cbiAgICBjb25zdCBlbnRpdHlDb3B5OiBhbnkgPSB0aGlzLmZyb21KUyhpbnB1dCk7XG4gICAgLy8gTmVlZCB0byBzZXQgdGhpcyBmaXJzdCBzbyB0aGF0IGlmIGl0IGlzIHJlZmVyZW5jZWQgZnVydGhlciB3aXRoaW4gdGhlXG4gICAgLy8gZGVub3JtYWxpemF0aW9uIHRoZSByZWZlcmVuY2Ugd2lsbCBhbHJlYWR5IGV4aXN0LlxuICAgIHVudmlzaXQuc2V0TG9jYWw/LihlbnRpdHlDb3B5KTtcblxuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICAvLyBub3RlOiBpdGVyYXRpb24gb3JkZXIgbXVzdCBiZSBzdGFibGVcbiAgICBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5zY2hlbWFba2V5XTtcbiAgICAgIGNvbnN0IG5leHRJbnB1dCA9IE9iamVjdC5oYXNPd24oaW5wdXQsIGtleSlcbiAgICAgICAgPyAoaW5wdXQgYXMgYW55KVtrZXldXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgW3ZhbHVlLCAsIGRlbGV0ZWRJdGVtXSA9IHVudmlzaXQobmV4dElucHV0LCBzY2hlbWEpO1xuXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0gJiYgIShPYmplY3QuaGFzT3duKGlucHV0LCBrZXkpICYmICF0aGlzLmRlZmF1bHRzW2tleV0pKSB7XG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5oYXNPd24oaW5wdXQsIGtleSkgJiYgKGlucHV0IGFzIGFueSlba2V5XSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoZW50aXR5Q29weSwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW2VudGl0eUNvcHksIHRydWUsIGRlbGV0ZWRdO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNsYXJlIHN0YXRpYyBfX2RlZmF1bHRzOiBhbnk7XG4gIC8qKiBBbGwgaW5zdGFuY2UgZGVmYXVsdHMgc2V0ICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZ2V0IGRlZmF1bHRzKCkge1xuICAgIGlmICghT2JqZWN0Lmhhc093bih0aGlzLCAnX19kZWZhdWx0cycpKVxuICAgICAgdGhpcy5fX2RlZmF1bHRzID0gbmV3ICh0aGlzIGFzIGFueSkoKTtcbiAgICByZXR1cm4gdGhpcy5fX2RlZmF1bHRzO1xuICB9XG5cbiAgLyoqIFVzZWQgYnkgZGVub3JtYWxpemUgdG8gc2V0IG5lc3RlZCBtZW1iZXJzICovXG4gIHByb3RlY3RlZCBzdGF0aWMgc2V0KGVudGl0eTogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGVudGl0eVtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNvbnN0IHN1cGVyRnJvbSA9IEVudGl0eS5mcm9tSlM7XG4gIC8vIGZvciB0aG9zZSBub3QgdXNpbmcgVHlwZVNjcmlwdCB0aGlzIGlzIGEgZ29vZCBjYXRjaCB0byBlbnN1cmUgdGhleSBhcmUgZGVmaW5pbmdcbiAgLy8gdGhlIGFic3RyYWN0IG1lbWJlcnNcbiAgRW50aXR5LmZyb21KUyA9IGZ1bmN0aW9uIGZyb21KUzxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICBwcm9wczogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+IHtcbiAgICBpZiAoKHRoaXMgYXMgYW55KS5wcm90b3R5cGUucGsgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGNvbnN0cnVjdCBvbiBhYnN0cmFjdCB0eXBlcycpO1xuICAgIHJldHVybiBzdXBlckZyb20uY2FsbCh0aGlzLCBwcm9wcykgYXMgYW55O1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmRleEZyb21QYXJhbXM8SSBleHRlbmRzIHN0cmluZz4oXG4gIHBhcmFtczogUmVhZG9ubHk8b2JqZWN0PixcbiAgaW5kZXhlcz86IFJlYWRvbmx5PElbXT4sXG4pIHtcbiAgaWYgKCFpbmRleGVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gaW5kZXhlcy5maW5kKGluZGV4ID0+IE9iamVjdC5oYXNPd24ocGFyYW1zLCBpbmRleCkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFJQSxTQUFTQSxXQUFXLEVBQUVDLG9CQUFvQixRQUFRLHFCQUFxQjs7QUFFdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQWVDLE1BQU0sQ0FBQztFQUNuQyxPQUFPQyxNQUFNLEdBQUc7SUFDZCxPQUFPO01BQ0xDLElBQUksRUFBRSxJQUFJLENBQUNBLElBQUk7TUFDZkMsTUFBTSxFQUFFLElBQUksQ0FBQ0EsTUFBTTtNQUNuQkMsR0FBRyxFQUFFLElBQUksQ0FBQ0E7SUFDWixDQUFDO0VBQ0g7O0VBRUE7O0VBV0E7RUFDQSxXQUFXQSxHQUFHLEdBQVc7SUFDdkI7SUFDQSxJQUNFQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksS0FDcEMsSUFBSSxDQUFDTCxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQ0EsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUNBLElBQUksS0FBSyxPQUFPLENBQUMsRUFFckUsTUFBTSxJQUFJTSxLQUFLLENBQ2IsOERBQThELENBQy9EO0lBQ0gsT0FBTyxJQUFJLENBQUNOLElBQUk7RUFDbEI7O0VBRUE7O0VBYUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxPQUFPTyxFQUFFLENBRVBDLEtBQXVDLEVBQ3ZDQyxNQUFZLEVBQ1pQLEdBQVksRUFDUTtJQUNwQixPQUFPLElBQUksQ0FBQ1EsU0FBUyxDQUFDSCxFQUFFLENBQUNJLElBQUksQ0FBQ0gsS0FBSyxFQUFFQyxNQUFNLEVBQUVQLEdBQUcsQ0FBQztFQUNuRDs7RUFFQTtFQUNBLE9BQU9VLFdBQVcsQ0FDaEJDLFlBQWlELEVBQ2pEQyxZQUFpRCxFQUNqREMsUUFBYSxF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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0ltbXV0YWJsZSIsImRlbm9ybWFsaXplSW1tdXRhYmxlIiwiRW50aXR5IiwidG9KU09OIiwibmFtZSIsInNjaGVtYSIsImtleSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwicGsiLCJ2YWx1ZSIsInBhcmVudCIsInByb3RvdHlwZSIsImNhbGwiLCJ1c2VJbmNvbWluZyIsImV4aXN0aW5nTWV0YSIsImluY29taW5nTWV0YSIsImV4aXN0aW5nIiwiaW5jb21pbmciLCJmZXRjaGVkQXQiLCJtZXJnZSIsImZyb21KUyIsInByb3BzIiwiaW5zdGFuY2UiLCJPYmplY3QiLCJhc3NpZ24iLCJpbnB1dCIsImF1dG9tYXRpY1ZhbGlkYXRpb24iLCJBcnJheSIsImlzQXJyYXkiLCJlcnJvck1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5Iiwic2xpY2UiLCJlcnJvciIsInN0YXR1cyIsImNvbnNvbGUiLCJ3YXJuIiwibm9ybWFsaXplIiwidmlzaXQiLCJhZGRFbnRpdHkiLCJ2aXNpdGVkRW50aXRpZXMiLCJwcm9jZXNzZWRFbnRpdHkiLCJpZCIsInVuZGVmaW5lZCIsImVudGl0eVR5cGUiLCJzb21lIiwiZW50aXR5IiwidmFsaWRhdGUiLCJwdXNoIiwia2V5cyIsImZvckVhY2giLCJoYXNPd24iLCJrZXlzT2ZSZWNvcmQiLCJTZXQiLCJkZWZhdWx0cyIsImtleXNPZlByb3BzIiwiZm91bmQiLCJtaXNzaW5nIiwidW5leHBlY3RlZCIsImtleU9mUHJvcHMiLCJoYXMiLCJrZXlPZlJlY29yZCIsImluY2x1ZGVzIiwic2l6ZSIsInRvb01hbnlVbmV4cGVjdGVkIiwiTWF0aCIsIm1heCIsImxlbmd0aCIsImZvdW5kTm90aGluZyIsIm1pbiIsImV4dHJhIiwicmVhc29uIiwiaW5mZXIiLCJhcmdzIiwiaW5kZXhlcyIsInJlY3Vyc2UiLCJpbmRleE5hbWUiLCJpbmRleEZyb21QYXJhbXMiLCJleHBpcmVzQXQiLCJtZXRhIiwiZGVub3JtYWxpemUiLCJ1bnZpc2l0IiwidG9KUyIsInNldExvY2FsIiwiZGVub3JtRW50aXR5IiwiZGVsZXRlZCIsInRvT2JqZWN0IiwiZW50aXR5Q29weSIsIm5leHRJbnB1dCIsImRlbGV0ZWRJdGVtIiwic2V0IiwiX19kZWZhdWx0cyIsInN1cGVyRnJvbSIsInBhcmFtcyIsImZpbmQiLCJpbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL0VudGl0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzICovXG5cbmltcG9ydCB7IGlzSW1tdXRhYmxlLCBkZW5vcm1hbGl6ZUltbXV0YWJsZSB9IGZyb20gJy4vSW1tdXRhYmxlVXRpbHMuanMnO1xuaW1wb3J0IHR5cGUgeyBTY2hlbWEsIE5vcm1hbGl6ZWRJbmRleCwgVW52aXNpdEZ1bmN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlLmpzJztcbmltcG9ydCB7IEFic3RyYWN0SW5zdGFuY2VUeXBlIH0gZnJvbSAnLi4vbm9ybWFsLmpzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGRhdGEgdGhhdCBzaG91bGQgYmUgZGVkdXBlZCBieSBzcGVjaWZ5aW5nIGEgcHJpbWFyeSBrZXkuXG4gKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0VudGl0eVxuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBFbnRpdHkge1xuICBzdGF0aWMgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAga2V5OiB0aGlzLmtleSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIERlZmluZXMgbmVzdGVkIGVudGl0aWVzICovXG4gIHN0YXRpYyBzY2hlbWE6IHsgW2s6IHN0cmluZ106IFNjaGVtYSB9ID0ge307XG5cbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggRW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBbcGFyZW50XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUgb2JqZWN0IHdoaWNoIGluY2x1ZGVkIHRoZSBlbnRpdHlcbiAgICogQHBhcmFtIFtrZXldIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBrZXkgd2hlcmUgdGhpcyBlbnRpdHkgd2FzIGZvdW5kXG4gICAqL1xuICBhYnN0cmFjdCBwayhwYXJlbnQ/OiBhbnksIGtleT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmV0dXJucyB0aGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGF0aWMgRW50aXR5ICovXG4gIHN0YXRpYyBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAodGhpcy5uYW1lID09PSAnJyB8fCB0aGlzLm5hbWUgPT09ICdFbnRpdHknIHx8IHRoaXMubmFtZSA9PT0gJ190ZW1wJylcbiAgICApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdFbnRpdHkgY2xhc3NlcyB3aXRob3V0IGEgbmFtZSBtdXN0IGRlZmluZSBgc3RhdGljIGdldCBrZXkoKWAnLFxuICAgICAgKTtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqIERlZmluZXMgaW5kZXhlcyB0byBlbmFibGUgbG9va3VwIGJ5ICovXG4gIGRlY2xhcmUgc3RhdGljIGluZGV4ZXM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKiogQ29udHJvbCBob3cgYXV0b21hdGljIHNjaGVtYSB2YWxpZGF0aW9uIGlzIGhhbmRsZWRcbiAgICpcbiAgICogYHVuZGVmaW5lZGA6IERlZmF1bHRzIC0gdGhyb3cgZXJyb3IgaW4gd29yc3Qgb2ZmZW5zZVxuICAgKiAnd2Fybic6IG9ubHkgZXZlciB3YXJuXG4gICAqICdzaWxlbnQnOiBEb24ndCBib3RoZXIgd2l0aCBwcm9jZXNzaW5nIGF0IGFsbFxuICAgKlxuICAgKiBOb3RlOiB0aGlzIG9ubHkgYXBwbGllcyB0byBub24tbmVzdGVkIG1lbWJlcnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbj86ICd3YXJuJyB8ICdzaWxlbnQnO1xuXG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBlYWNoIEVudGl0eVxuICAgKlxuICAgKiBAcGFyYW0gW3ZhbHVlXSBQT0pPIG9mIHRoZSBlbnRpdHkgb3Igc3Vic2V0IHVzZWRcbiAgICogQHBhcmFtIFtwYXJlbnRdIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBvYmplY3Qgd2hpY2ggaW5jbHVkZWQgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICovXG4gIHN0YXRpYyBwazxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICB2YWx1ZTogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICAgcGFyZW50PzogYW55LFxuICAgIGtleT86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5wcm90b3R5cGUucGsuY2FsbCh2YWx1ZSwgcGFyZW50LCBrZXkpO1xuICB9XG5cbiAgLyoqIFJldHVybiB0cnVlIHRvIG1lcmdlIGluY29taW5nIGRhdGE7IGZhbHNlIGtlZXBzIGV4aXN0aW5nIGVudGl0eSAqL1xuICBzdGF0aWMgdXNlSW5jb21pbmcoXG4gICAgZXhpc3RpbmdNZXRhOiB7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICBpbmNvbWluZ01ldGE6IHsgZGF0ZTogbnVtYmVyOyBmZXRjaGVkQXQ6IG51bWJlciB9LFxuICAgIGV4aXN0aW5nOiBhbnksXG4gICAgaW5jb21pbmc6IGFueSxcbiAgKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nTWV0YS5mZXRjaGVkQXQgPD0gaW5jb21pbmdNZXRhLmZldGNoZWRBdDtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBjb3B5aW5nIG92ZXIgZGVmaW5lZCB2YWx1ZXMgb2YgYXJndW1lbnRzICovXG4gIHN0YXRpYyBtZXJnZShleGlzdGluZzogYW55LCBpbmNvbWluZzogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgLi4uaW5jb21pbmcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGZyb20gUGxhaW4gSlMgT2JqZWN0cy5cbiAgICpcbiAgICogQHBhcmFtIFtwcm9wc10gUGxhaW4gT2JqZWN0IG9mIHByb3BlcnRpZXMgdG8gYXNzaWduLlxuICAgKiBAcGFyYW0gW3BhcmVudF0gV2hlbiBub3JtYWxpemluZywgdGhlIG9iamVjdCB3aGljaCBpbmNsdWRlZCB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSBba2V5XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUga2V5IHdoZXJlIHRoaXMgcmVjb3JkIHdhcyBmb3VuZFxuICAgKi9cbiAgc3RhdGljIGZyb21KUzxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBvbmx5IGFjY2VwdCBtZW1iZXJzIHRoYXQgYXJlIG5vdCBmdW5jdGlvbnNcbiAgICBwcm9wczogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4gPSB7fSxcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4ge1xuICAgIC8vIHdlIHR5cGUgZ3VhcmRlZCBhYnN0cmFjdCBjYXNlIGFib3ZlLCBzbyBvayB0byBmb3JjZSB0eXBlc2NyaXB0IHRvIGFsbG93IGNvbnN0cnVjdG9yIGNhbGxcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyAodGhpcyBhcyBhbnkpKHByb3BzKSBhcyBBYnN0cmFjdEluc3RhbmNlVHlwZTxUPjtcbiAgICAvLyB3ZSBjYW4ndCByZWx5IG9uIGNvbnN0cnVjdG9ycyBhbmQgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGFzIHByb3BlcnR5IGFzc2lnbm1lbnRzXG4gICAgLy8gYWxsIG9jY3VyIGFmdGVyIHRoZSBjb25zdHJ1Y3RvclxuICAgIE9iamVjdC5hc3NpZ24oaW5zdGFuY2UsIHByb3BzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKiogRG8gYW55IHRyYW5zZm9ybWF0aW9ucyB3aGVuIGZpcnN0IHJlY2VpdmluZyBpbnB1dCAqL1xuICBzdGF0aWMgcHJvY2VzcyhpbnB1dDogYW55LCBwYXJlbnQ6IGFueSwga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBhbnkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgdGhpcy5hdXRvbWF0aWNWYWxpZGF0aW9uICE9PSAnc2lsZW50J1xuICAgICkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSAke1xuICAgICAgICAgIHRoaXMubmFtZVxuICAgICAgICB9IHdpdGggYW4gYXJyYXksIGJ1dCBuYW1lZCBtZW1iZXJzIHdlcmUgZXhwZWN0ZWRcblxuVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuVHJ5IGluc3BlY3RpbmcgdGhlIG5ldHdvcmsgcmVzcG9uc2Ugb3IgZmV0Y2goKSByZXR1cm4gdmFsdWUuXG5PciB1c2UgZGVidWdnaW5nIHRvb2xzOiBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2d1aWRlcy9kZWJ1Z2dpbmdcbkxlYXJuIG1vcmUgYWJvdXQgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvc2NoZW1hXG5JZiB0aGlzIGlzIGEgbWlzdGFrZSwgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgYnkgc2V0dGluZyBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbiA9ICdzaWxlbnQnXG5cbkZpcnN0IHRocmVlIG1lbWJlcnM6ICR7SlNPTi5zdHJpbmdpZnkoaW5wdXQuc2xpY2UoMCwgMyksIG51bGwsIDIpfWA7XG4gICAgICAgIGlmICh0aGlzLmF1dG9tYXRpY1ZhbGlkYXRpb24gIT09ICd3YXJuJykge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IC4uLmlucHV0IH07XG4gIH1cblxuICBzdGF0aWMgbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgcGFyZW50OiBhbnksXG4gICAga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdmlzaXQ6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICBhZGRFbnRpdHk6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICB2aXNpdGVkRW50aXRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICk6IGFueSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkRW50aXR5ID0gdGhpcy5wcm9jZXNzKGlucHV0LCBwYXJlbnQsIGtleSk7XG4gICAgY29uc3QgaWQgPSB0aGlzLnBrKHByb2Nlc3NlZEVudGl0eSwgcGFyZW50LCBrZXkpO1xuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSAnJykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYE1pc3NpbmcgdXNhYmxlIHByaW1hcnkga2V5IHdoZW4gbm9ybWFsaXppbmcgcmVzcG9uc2UuXG5cbiAgVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuICBUcnkgaW5zcGVjdGluZyB0aGUgbmV0d29yayByZXNwb25zZSBvciBmZXRjaCgpIHJldHVybiB2YWx1ZS5cbiAgT3IgdXNlIGRlYnVnZ2luZyB0b29sczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9ndWlkZXMvZGVidWdnaW5nXG4gIExlYXJuIG1vcmUgYWJvdXQgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvc2NoZW1hXG5cbiAgRW50aXR5OiAke3RoaXMubmFtZX1cbiAgVmFsdWUgKHByb2Nlc3NlZCk6ICR7XG4gICAgcHJvY2Vzc2VkRW50aXR5ICYmIEpTT04uc3RyaW5naWZ5KHByb2Nlc3NlZEVudGl0eSwgbnVsbCwgMilcbiAgfVxuICBgLFxuICAgICAgICApO1xuICAgICAgICAoZXJyb3IgYXMgYW55KS5zdGF0dXMgPSA0MDA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlc2UgbWFrZSB0aGUga2V5cyBnZXQgZGVsZXRlZFxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5rZXk7XG5cbiAgICBpZiAoIShlbnRpdHlUeXBlIGluIHZpc2l0ZWRFbnRpdGllcykpIHtcbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXSA9IHt9O1xuICAgIH1cbiAgICBpZiAoIShpZCBpbiB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV0pKSB7XG4gICAgICB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV1baWRdID0gW107XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0uc29tZSgoZW50aXR5OiBhbnkpID0+IGVudGl0eSA9PT0gaW5wdXQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMudmFsaWRhdGUocHJvY2Vzc2VkRW50aXR5KTtcbiAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0ucHVzaChpbnB1dCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKE9iamVjdC5oYXNPd24ocHJvY2Vzc2VkRW50aXR5LCBrZXkpKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuc2NoZW1hW2tleV07XG4gICAgICAgIHByb2Nlc3NlZEVudGl0eVtrZXldID0gdmlzaXQoXG4gICAgICAgICAgcHJvY2Vzc2VkRW50aXR5W2tleV0sXG4gICAgICAgICAgcHJvY2Vzc2VkRW50aXR5LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgYWRkRW50aXR5LFxuICAgICAgICAgIHZpc2l0ZWRFbnRpdGllcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGFkZEVudGl0eSh0aGlzLCBwcm9jZXNzZWRFbnRpdHksIGlkKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIHZhbGlkYXRlKHByb2Nlc3NlZEVudGl0eTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIHRoaXMuYXV0b21hdGljVmFsaWRhdGlvbiAhPT0gJ3NpbGVudCdcbiAgICApIHtcbiAgICAgIGNvbnN0IGtleXNPZlJlY29yZCA9IG5ldyBTZXQoT2JqZWN0LmtleXModGhpcy5kZWZhdWx0cykpO1xuICAgICAgY29uc3Qga2V5c09mUHJvcHMgPSBPYmplY3Qua2V5cyhwcm9jZXNzZWRFbnRpdHkpO1xuICAgICAgY29uc3QgW2ZvdW5kLCBtaXNzaW5nLCB1bmV4cGVjdGVkXSA9IFtbXSwgW10sIFtdXSBhcyBbXG4gICAgICAgIHN0cmluZ1tdLFxuICAgICAgICBzdHJpbmdbXSxcbiAgICAgICAgc3RyaW5nW10sXG4gICAgICBdO1xuICAgICAgZm9yIChjb25zdCBrZXlPZlByb3BzIG9mIGtleXNPZlByb3BzKSB7XG4gICAgICAgIGlmIChrZXlzT2ZSZWNvcmQuaGFzKGtleU9mUHJvcHMpKSB7XG4gICAgICAgICAgZm91bmQucHVzaChrZXlPZlByb3BzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1bmV4cGVjdGVkLnB1c2goa2V5T2ZQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5T2ZSZWNvcmQgb2Yga2V5c09mUmVjb3JkKSB7XG4gICAgICAgIGlmICghZm91bmQuaW5jbHVkZXMoa2V5T2ZSZWNvcmQpKSB7XG4gICAgICAgICAgbWlzc2luZy5wdXNoKGtleU9mUmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBvbmx5IGJvdGhlciB3aXRoIHRoaXMgaWYgdGhleSB1c2VkICphbnkqIGRlZmF1bHRzXG4gICAgICBpZiAoa2V5c09mUmVjb3JkLnNpemUpIHtcbiAgICAgICAgY29uc3QgdG9vTWFueVVuZXhwZWN0ZWQgPVxuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgY29tcGFyZWQgdG8gbWVtYmVycyBpbiByZXNwb25zZVxuICAgICAgICAgIE1hdGgubWF4KGtleXNPZlByb3BzLmxlbmd0aCAvIDIsIDEpIDw9IHVuZXhwZWN0ZWQubGVuZ3RoICYmXG4gICAgICAgICAgLy8gdW5leHBlY3RlZCBjb21wYXJlZCB0byB3aGF0IHdlIHNwZWNpZmllZFxuICAgICAgICAgIGtleXNPZlJlY29yZC5zaXplID4gTWF0aC5tYXgodW5leHBlY3RlZC5sZW5ndGgsIDIpICYmXG4gICAgICAgICAgLy8gYXMgd2UgZmluZCBtb3JlIGFuZCBtb3JlIGJlIG1vcmUgZWFzaWx5IGFzc3VyZWQgaXQgaXMgY29ycmVjdFxuICAgICAgICAgIGZvdW5kLmxlbmd0aCAqKiAxLjUgLyAyIDw9IHVuZXhwZWN0ZWQubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb3VuZE5vdGhpbmcgPSBmb3VuZC5sZW5ndGggPCBNYXRoLm1pbigxLCBrZXlzT2ZSZWNvcmQuc2l6ZSAvIDIpO1xuICAgICAgICAvLyBpZiB3ZSBmaW5kIG5vdGhpbmcgKHdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgbWVtYmVyIGZvciBhIHBrKVxuICAgICAgICAvLyBvciB3ZSBmaW5kIHRvbyBtYW55IHVuZXhwZWN0ZWQgbWVtYmVyc1xuICAgICAgICBpZiAodG9vTWFueVVuZXhwZWN0ZWQgfHwgZm91bmROb3RoaW5nKSB7XG4gICAgICAgICAgbGV0IGV4dHJhID0gJyc7XG4gICAgICAgICAgbGV0IHJlYXNvbiA9ICdzdWJzdGFudGlhbGx5IGRpZmZlcmVudCB0aGFuIGV4cGVjdGVkIGtleXMnO1xuICAgICAgICAgIGlmIChmb3VuZE5vdGhpbmcpIHtcbiAgICAgICAgICAgIGV4dHJhICs9IGBcXG4gICAgTWlzc2luZzogJHttaXNzaW5nfWA7XG4gICAgICAgICAgICByZWFzb24gPSAnbm8gbWF0Y2hpbmcga2V5cyBmb3VuZCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0b29NYW55VW5leHBlY3RlZCkge1xuICAgICAgICAgICAgZXh0cmEgKz0gYFxcbiAgICBVbmV4cGVjdGVkIGtleXM6ICR7dW5leHBlY3RlZH1gO1xuICAgICAgICAgICAgcmVhc29uID0gJ2EgbGFyZ2UgbnVtYmVyIG9mIHVuZXhwZWN0ZWQga2V5cyBmb3VuZCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSAke1xuICAgICAgICAgICAgdGhpcy5uYW1lXG4gICAgICAgICAgfSB3aXRoICR7cmVhc29ufVxuXG4gIFRoaXMgaXMgbGlrZWx5IGR1ZSB0byBhIG1hbGZvcm1lZCByZXNwb25zZS5cbiAgVHJ5IGluc3BlY3RpbmcgdGhlIG5ldHdvcmsgcmVzcG9uc2Ugb3IgZmV0Y2goKSByZXR1cm4gdmFsdWUuXG4gIE9yIHVzZSBkZWJ1Z2dpbmcgdG9vbHM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvZ3VpZGVzL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IHNjaGVtYXM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL3NjaGVtYVxuICBJZiB0aGlzIGlzIGEgbWlzdGFrZSwgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgYnkgc2V0dGluZyBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbiA9ICdzaWxlbnQnXG5cbiAgRXhwZWN0ZWQga2V5czpcbiAgICBGb3VuZDogJHtmb3VuZH0ke2V4dHJhfVxuICBWYWx1ZSAocHJvY2Vzc2VkKTogJHtKU09OLnN0cmluZ2lmeShwcm9jZXNzZWRFbnRpdHksIG51bGwsIDIpfWA7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGZvdW5kLmxlbmd0aCA+PSA0ICYmIHRvb01hbnlVbmV4cGVjdGVkKSB8fFxuICAgICAgICAgICAgdGhpcy5hdXRvbWF0aWNWYWxpZGF0aW9uID09PSAnd2FybidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5zY2hlbWEpKSB7XG4gICAgICAgIGlmICghT2JqZWN0Lmhhc093bihwcm9jZXNzZWRFbnRpdHksIGtleSkpIHtcbiAgICAgICAgICBpZiAoIU9iamVjdC5oYXNPd24odGhpcy5kZWZhdWx0cywga2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGBTY2hlbWEga2V5IGlzIG1pc3NpbmcgaW4gRW50aXR5XG5cbiAgQmUgc3VyZSBhbGwgc2NoZW1hIG1lbWJlcnMgYXJlIGFsc28gcGFydCBvZiB0aGUgZW50aXR5XG4gIE9yIHVzZSBkZWJ1Z2dpbmcgdG9vbHM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvZ3VpZGVzL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IG5lc3Rpbmcgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9ndWlkZXMvbmVzdGVkLXJlc3BvbnNlXG5cbiAgRW50aXR5IGtleXM6ICR7T2JqZWN0LmtleXModGhpcy5kZWZhdWx0cyl9XG4gIFNjaGVtYSBrZXkobWlzc2luZyk6ICR7a2V5fVxuICBgO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpbmZlcihcbiAgICBhcmdzOiByZWFkb25seSBhbnlbXSxcbiAgICBpbmRleGVzOiBOb3JtYWxpemVkSW5kZXgsXG4gICAgcmVjdXJzZTogYW55LFxuICApOiBhbnkge1xuICAgIGlmICghYXJnc1swXSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJ10uaW5jbHVkZXModHlwZW9mIGFyZ3NbMF0pKSB7XG4gICAgICByZXR1cm4gYCR7YXJnc1swXX1gO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IHRoaXMucGsoYXJnc1swXSwgdW5kZWZpbmVkLCAnJyk7XG4gICAgLy8gV2FzIGFibGUgdG8gaW5mZXIgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5IGZyb20gcGFyYW1zXG4gICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09ICcnKSByZXR1cm4gaWQ7XG4gICAgLy8gbm93IGF0dGVtcHQgbG9va3VwIGluIGluZGV4ZXNcbiAgICBjb25zdCBpbmRleE5hbWUgPSBpbmRleEZyb21QYXJhbXMoYXJnc1swXSwgdGhpcy5pbmRleGVzKTtcbiAgICBpZiAoaW5kZXhOYW1lICYmIGluZGV4ZXNbdGhpcy5rZXldKSB7XG4gICAgICAvLyAnYXMgUmVjb3JkPHN0cmluZywgYW55Pic6IGluZGV4TmFtZSBjYW4gb25seSBiZSBmb3VuZCBpZiBwYXJhbXMgaXMgYSBzdHJpbmcga2V5J2Qgb2JqZWN0XG4gICAgICBjb25zdCBpZCA9XG4gICAgICAgIGluZGV4ZXNbdGhpcy5rZXldW2luZGV4TmFtZV1bXG4gICAgICAgICAgKGFyZ3NbMF0gYXMgUmVjb3JkPHN0cmluZywgYW55PilbaW5kZXhOYW1lXVxuICAgICAgICBdO1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhdGljIGV4cGlyZXNBdChcbiAgICBtZXRhOiB7IGV4cGlyZXNBdDogbnVtYmVyOyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgaW5wdXQ6IGFueSxcbiAgKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbWV0YS5leHBpcmVzQXQ7XG4gIH1cblxuICBzdGF0aWMgZGVub3JtYWxpemU8VCBleHRlbmRzIHR5cGVvZiBFbnRpdHk+KFxuICAgIHRoaXM6IFQsXG4gICAgaW5wdXQ6IGFueSxcbiAgICB1bnZpc2l0OiBVbnZpc2l0RnVuY3Rpb24sXG4gICk6IFtkZW5vcm1hbGl6ZWQ6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+LCBmb3VuZDogYm9vbGVhbiwgc3VzcGVuZDogYm9vbGVhbl0ge1xuICAgIC8vIFRPRE86IHJlbW92ZSBjb2RlY292IGlnbm9yZSBvbmNlIGRlbm9ybWFsaXplIGlzIG1vZGlmaWVkIHRvIGV4cGVjdCB0aGlzXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiBbdW5kZWZpbmVkLCB0cnVlLCB0cnVlXSBhcyBhbnk7XG4gICAgfVxuICAgIGlmIChpc0ltbXV0YWJsZShpbnB1dCkpIHtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlKChpbnB1dCBhcyBhbnkpLnRvSlMoKSkpXG4gICAgICAgIHJldHVybiBbdW5kZWZpbmVkIGFzIGFueSwgZmFsc2UsIHRydWVdO1xuICAgICAgLy8gTmVlZCB0byBzZXQgdGhpcyBmaXJzdCBzbyB0aGF0IGlmIGl0IGlzIHJlZmVyZW5jZWQgZnVydGhlciB3aXRoaW4gdGhlXG4gICAgICAvLyBkZW5vcm1hbGl6YXRpb24gdGhlIHJlZmVyZW5jZSB3aWxsIGFscmVhZHkgZXhpc3QuXG4gICAgICB1bnZpc2l0LnNldExvY2FsPy4oaW5wdXQpO1xuICAgICAgY29uc3QgW2Rlbm9ybUVudGl0eSwgZm91bmQsIGRlbGV0ZWRdID0gZGVub3JtYWxpemVJbW11dGFibGUoXG4gICAgICAgIHRoaXMuc2NoZW1hLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgdW52aXNpdCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gW3RoaXMuZnJvbUpTKGRlbm9ybUVudGl0eS50b09iamVjdCgpKSwgZm91bmQsIGRlbGV0ZWRdO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWxpZGF0ZShpbnB1dCkpIHtcbiAgICAgIHJldHVybiBbdW5kZWZpbmVkIGFzIGFueSwgZmFsc2UsIHRydWVdO1xuICAgIH1cbiAgICBjb25zdCBlbnRpdHlDb3B5OiBhbnkgPSB0aGlzLmZyb21KUyhpbnB1dCk7XG4gICAgLy8gTmVlZCB0byBzZXQgdGhpcyBmaXJzdCBzbyB0aGF0IGlmIGl0IGlzIHJlZmVyZW5jZWQgZnVydGhlciB3aXRoaW4gdGhlXG4gICAgLy8gZGVub3JtYWxpemF0aW9uIHRoZSByZWZlcmVuY2Ugd2lsbCBhbHJlYWR5IGV4aXN0LlxuICAgIHVudmlzaXQuc2V0TG9jYWw/LihlbnRpdHlDb3B5KTtcblxuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICAvLyBub3RlOiBpdGVyYXRpb24gb3JkZXIgbXVzdCBiZSBzdGFibGVcbiAgICBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5zY2hlbWFba2V5XTtcbiAgICAgIGNvbnN0IG5leHRJbnB1dCA9IE9iamVjdC5oYXNPd24oaW5wdXQsIGtleSlcbiAgICAgICAgPyAoaW5wdXQgYXMgYW55KVtrZXldXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgW3ZhbHVlLCAsIGRlbGV0ZWRJdGVtXSA9IHVudmlzaXQobmV4dElucHV0LCBzY2hlbWEpO1xuXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0gJiYgIShPYmplY3QuaGFzT3duKGlucHV0LCBrZXkpICYmICF0aGlzLmRlZmF1bHRzW2tleV0pKSB7XG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5oYXNPd24oaW5wdXQsIGtleSkgJiYgKGlucHV0IGFzIGFueSlba2V5XSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoZW50aXR5Q29weSwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW2VudGl0eUNvcHksIHRydWUsIGRlbGV0ZWRdO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNsYXJlIHN0YXRpYyBfX2RlZmF1bHRzOiBhbnk7XG4gIC8qKiBBbGwgaW5zdGFuY2UgZGVmYXVsdHMgc2V0ICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZ2V0IGRlZmF1bHRzKCkge1xuICAgIGlmICghT2JqZWN0Lmhhc093bih0aGlzLCAnX19kZWZhdWx0cycpKVxuICAgICAgdGhpcy5fX2RlZmF1bHRzID0gbmV3ICh0aGlzIGFzIGFueSkoKTtcbiAgICByZXR1cm4gdGhpcy5fX2RlZmF1bHRzO1xuICB9XG5cbiAgLyoqIFVzZWQgYnkgZGVub3JtYWxpemUgdG8gc2V0IG5lc3RlZCBtZW1iZXJzICovXG4gIHByb3RlY3RlZCBzdGF0aWMgc2V0KGVudGl0eTogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGVudGl0eVtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNvbnN0IHN1cGVyRnJvbSA9IEVudGl0eS5mcm9tSlM7XG4gIC8vIGZvciB0aG9zZSBub3QgdXNpbmcgVHlwZVNjcmlwdCB0aGlzIGlzIGEgZ29vZCBjYXRjaCB0byBlbnN1cmUgdGhleSBhcmUgZGVmaW5pbmdcbiAgLy8gdGhlIGFic3RyYWN0IG1lbWJlcnNcbiAgRW50aXR5LmZyb21KUyA9IGZ1bmN0aW9uIGZyb21KUzxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICBwcm9wczogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+IHtcbiAgICBpZiAoKHRoaXMgYXMgYW55KS5wcm90b3R5cGUucGsgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGNvbnN0cnVjdCBvbiBhYnN0cmFjdCB0eXBlcycpO1xuICAgIHJldHVybiBzdXBlckZyb20uY2FsbCh0aGlzLCBwcm9wcykgYXMgYW55O1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmRleEZyb21QYXJhbXM8SSBleHRlbmRzIHN0cmluZz4oXG4gIHBhcmFtczogUmVhZG9ubHk8b2JqZWN0PixcbiAgaW5kZXhlcz86IFJlYWRvbmx5PElbXT4sXG4pIHtcbiAgaWYgKCFpbmRleGVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gaW5kZXhlcy5maW5kKGluZGV4ID0+IE9iamVjdC5oYXNPd24ocGFyYW1zLCBpbmRleCkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxTQUFTQSxXQUFXLEVBQUVDLG9CQUFvQixRQUFRLHFCQUFxQjtBQUl2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBZUMsTUFBTSxDQUFDO0VBQ25DLE9BQU9DLE1BQU0sR0FBRztJQUNkLE9BQU87TUFDTEMsSUFBSSxFQUFFLElBQUksQ0FBQ0EsSUFBSTtNQUNmQyxNQUFNLEVBQUUsSUFBSSxDQUFDQSxNQUFNO01BQ25CQyxHQUFHLEVBQUUsSUFBSSxDQUFDQTtJQUNaLENBQUM7RUFDSDs7RUFFQTs7RUFXQTtFQUNBLFdBQVdBLEdBQUcsR0FBVztJQUN2QjtJQUNBLElBQ0VDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssWUFBWSxLQUNwQyxJQUFJLENBQUNMLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDQSxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQ0EsSUFBSSxLQUFLLE9BQU8sQ0FBQyxFQUVyRSxNQUFNLElBQUlNLEtBQUssQ0FDYiw4REFBOEQsQ0FDL0Q7SUFDSCxPQUFPLElBQUksQ0FBQ04sSUFBSTtFQUNsQjs7RUFFQTs7RUFhQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLE9BQU9PLEVBQUUsQ0FFUEMsS0FBdUMsRUFDdkNDLE1BQVksRUFDWlAsR0FBWSxFQUNRO0lBQ3BCLE9BQU8sSUFBSSxDQUFDUSxTQUFTLENBQUNILEVBQUUsQ0FBQ0ksSUFBSSxDQUFDSCxLQUFLLEVBQUVDLE1BQU0sRUFBRVAsR0FBRyxDQUFDO0VBQ25EOztFQUVBO0VBQ0EsT0FBT1UsV0FBVyxDQUNoQkMsWUFBaUQsRUFDakRDLFlBQWlELEVBQ2pEQyxRQUFhLEVB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 |
@@ -0,4 +1,4 @@ | ||
import ArraySchema from './Array.js'; | ||
import { EntityTable } from '../interface.js'; | ||
import { EntityInterface, EntityMap, SchemaFunction } from '../schema.js'; | ||
import ArraySchema from './Array.js'; | ||
/** | ||
@@ -5,0 +5,0 @@ * Retrieves all entities in cache |
import ArraySchema from './Array.js'; | ||
/** | ||
@@ -36,2 +35,2 @@ * Retrieves all entities in cache | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcnJheVNjaGVtYSIsIkFsbFNjaGVtYSIsImNvbnN0cnVjdG9yIiwiZGVmaW5pdGlvbiIsInNjaGVtYUF0dHJpYnV0ZSIsIm5vcm1hbGl6ZSIsImlucHV0IiwicGFyZW50Iiwia2V5IiwidmlzaXQiLCJhZGRFbnRpdHkiLCJ2aXNpdGVkRW50aXRpZXMiLCJpbmZlciIsImFyZ3MiLCJpbmRleGVzIiwicmVjdXJzZSIsImVudGl0aWVzIiwiaXNTaW5nbGVTY2hlbWEiLCJlbnRpdGllc0VudHJ5Iiwic2NoZW1hIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwidmFsdWVzIiwibWFwIiwiZW50aXR5IiwicGsiLCJmb3VuZCIsImxpc3QiLCJmbGF0TWFwIiwiaGFzT3duIiwiaWQiLCJnZXRTY2hlbWFBdHRyaWJ1dGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9BbGwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5VGFibGUgfSBmcm9tICcuLi9pbnRlcmZhY2UuanMnO1xuaW1wb3J0IHsgRW50aXR5SW50ZXJmYWNlLCBFbnRpdHlNYXAsIFNjaGVtYUZ1bmN0aW9uIH0gZnJvbSAnLi4vc2NoZW1hLmpzJztcbmltcG9ydCBBcnJheVNjaGVtYSBmcm9tICcuL0FycmF5LmpzJztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIGVudGl0aWVzIGluIGNhY2hlXG4gKlxuICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9yZXN0L2FwaS9BbGxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWxsU2NoZW1hPFxuICBTIGV4dGVuZHMgRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlID0gRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlLFxuPiBleHRlbmRzIEFycmF5U2NoZW1hIHtcbiAgY29uc3RydWN0b3IoXG4gICAgZGVmaW5pdGlvbjogUyxcbiAgICBzY2hlbWFBdHRyaWJ1dGU/OiBTIGV4dGVuZHMgRW50aXR5TWFwPGluZmVyIFQ+XG4gICAgICA/IGtleW9mIFQgfCBTY2hlbWFGdW5jdGlvbjxrZXlvZiBTPlxuICAgICAgOiB1bmRlZmluZWQsXG4gICkge1xuICAgIHN1cGVyKGRlZmluaXRpb24sIHNjaGVtYUF0dHJpYnV0ZSBhcyBhbnkpO1xuICB9XG5cbiAgbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgcGFyZW50OiBhbnksXG4gICAga2V5OiBhbnksXG4gICAgdmlzaXQ6IGFueSxcbiAgICBhZGRFbnRpdHk6IGFueSxcbiAgICB2aXNpdGVkRW50aXRpZXM6IGFueSxcbiAgKTogYW55IHtcbiAgICAvLyB3ZSByZXR1cm4gdW5kZWZpbmVkXG4gICAgc3VwZXIubm9ybWFsaXplKGlucHV0LCBwYXJlbnQsIGtleSwgdmlzaXQsIGFkZEVudGl0eSwgdmlzaXRlZEVudGl0aWVzKTtcbiAgfVxuXG4gIGluZmVyKGFyZ3M6IGFueSwgaW5kZXhlczogYW55LCByZWN1cnNlOiBhbnksIGVudGl0aWVzOiBFbnRpdHlUYWJsZSk6IGFueSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVTY2hlbWEpIHtcbiAgICAgIGNvbnN0IGVudGl0aWVzRW50cnkgPSBlbnRpdGllc1t0aGlzLnNjaGVtYS5rZXldO1xuICAgICAgaWYgKGVudGl0aWVzRW50cnkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGVudGl0aWVzRW50cnkpLm1hcChcbiAgICAgICAgZW50aXR5ID0+IGVudGl0eSAmJiB0aGlzLnNjaGVtYS5wayhlbnRpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgY29uc3QgbGlzdCA9IE9iamVjdC52YWx1ZXModGhpcy5zY2hlbWEgYXMgUmVjb3JkPHN0cmluZywgYW55PikuZmxhdE1hcChcbiAgICAgIChzY2hlbWE6IEVudGl0eUludGVyZmFjZSkgPT4ge1xuICAgICAgICBpZiAoIU9iamVjdC5oYXNPd24oZW50aXRpZXMsIHNjaGVtYS5rZXkpIHx8ICFlbnRpdGllc1tzY2hlbWEua2V5XSlcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZW50aXRpZXNbc2NoZW1hLmtleV0gYXMgUmVjb3JkPHN0cmluZywgYW55PikubWFwKFxuICAgICAgICAgIGVudGl0eSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGVudGl0eSAmJiBzY2hlbWEucGsoZW50aXR5KSxcbiAgICAgICAgICAgIHNjaGVtYTogdGhpcy5nZXRTY2hlbWFBdHRyaWJ1dGUoZW50aXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICk7XG4gICAgLy8gaWYgbm8gdGFibGUgZW50cmllcyBleGlzdCB3ZSBzaG91bGRuJ3QgZ3JhYiBhbnl0aGluZ1xuICAgIGlmICghZm91bmQpIHJldHVybjtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPQSxXQUFXLE1BQU0sWUFBWTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBTUMsU0FBUyxTQUVwQkQsV0FBVyxDQUFDO0VBQ3BCRSxXQUFXLENBQ1RDLFVBQWEsRUFDYkMsZUFFYSxFQUNiO0lBQ0EsS0FBSyxDQUFDRCxVQUFVLEVBQUVDLGVBQWUsQ0FBUTtFQUMzQztFQUVBQyxTQUFTLENBQ1BDLEtBQVUsRUFDVkMsTUFBVyxFQUNYQyxHQUFRLEVBQ1JDLEtBQVUsRUFDVkMsU0FBYyxFQUNkQyxlQUFvQixFQUNmO0lBQ0w7SUFDQSxLQUFLLENBQUNOLFNBQVMsQ0FBQ0MsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsQ0FBQztFQUN4RTtFQUVBQyxLQUFLLENBQUNDLElBQVMsRUFBRUMsT0FBWSxFQUFFQyxPQUFZLEVBQUVDLFFBQXFCLEVBQU87SUFDdkUsSUFBSSxJQUFJLENBQUNDLGNBQWMsRUFBRTtNQUN2QixNQUFNQyxhQUFhLEdBQUdGLFFBQVEsQ0FBQyxJQUFJLENBQUNHLE1BQU0sQ0FBQ1gsR0FBRyxDQUFDO01BQy9DLElBQUlVLGFBQWEsS0FBS0UsU0FBUyxFQUFFLE9BQU9BLFNBQVM7TUFDakQsT0FBT0MsTUFBTSxDQUFDQyxNQUFNLENBQUNKLGFBQWEsQ0FBQyxDQUFDSyxHQUFHLENBQ3JDQyxNQUFNLElBQUlBLE1BQU0sSUFBSSxJQUFJLENBQUNMLE1BQU0sQ0FBQ00sRUFBRSxDQUFDRCxNQUFNLENBQUMsQ0FDM0M7SUFDSDtJQUNBLElBQUlFLEtBQUssR0FBRyxLQUFLO0lBQ2pCLE1BQU1DLElBQUksR0FBR04sTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDSCxNQUFNLENBQXdCLENBQUNTLE9BQU8sQ0FDbkVULE1BQXVCLElBQUs7TUFDM0IsSUFBSSxDQUFDRSxNQUFNLENBQUNRLE1BQU0sQ0FBQ2IsUUFBUSxFQUFFRyxNQUFNLENBQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUNRLFFBQVEsQ0FBQ0csTUFBTSxDQUFDWCxHQUFHLENBQUMsRUFDL0QsT0FBTyxFQUFFO01BQ1hrQixLQUFLLEdBQUcsSUFBSTtNQUNaLE9BQU9MLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDTixRQUFRLENBQUNHLE1BQU0sQ0FBQ1gsR0FBRyxDQUFDLENBQXdCLENBQUNlLEdBQUcsQ0FDbkVDLE1BQU0sS0FBSztRQUNUTSxFQUFFLEVBQUVOLE1BQU0sSUFBSUwsTUFBTSxDQUFDTSxFQUFFLENBQUNELE1BQU0sQ0FBQztRQUMvQkwsTUFBTSxFQUFFLElBQUksQ0FBQ1ksa0JBQWtCLENBQUNQLE1BQU0sRUFBRUosU0FBUyxFQUFFQSxTQUFTO01BQzlELENBQUMsQ0FBQyxDQUNIO0lBQ0gsQ0FBQyxDQUNGO0lBQ0Q7SUFDQSxJQUFJLENBQUNNLEtBQUssRUFBRTtJQUNaLE9BQU9DLElBQUk7RUFDYjtBQUNGIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcnJheVNjaGVtYSIsIkFsbFNjaGVtYSIsImNvbnN0cnVjdG9yIiwiZGVmaW5pdGlvbiIsInNjaGVtYUF0dHJpYnV0ZSIsIm5vcm1hbGl6ZSIsImlucHV0IiwicGFyZW50Iiwia2V5IiwidmlzaXQiLCJhZGRFbnRpdHkiLCJ2aXNpdGVkRW50aXRpZXMiLCJpbmZlciIsImFyZ3MiLCJpbmRleGVzIiwicmVjdXJzZSIsImVudGl0aWVzIiwiaXNTaW5nbGVTY2hlbWEiLCJlbnRpdGllc0VudHJ5Iiwic2NoZW1hIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwidmFsdWVzIiwibWFwIiwiZW50aXR5IiwicGsiLCJmb3VuZCIsImxpc3QiLCJmbGF0TWFwIiwiaGFzT3duIiwiaWQiLCJnZXRTY2hlbWFBdHRyaWJ1dGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9BbGwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFycmF5U2NoZW1hIGZyb20gJy4vQXJyYXkuanMnO1xuaW1wb3J0IHsgRW50aXR5VGFibGUgfSBmcm9tICcuLi9pbnRlcmZhY2UuanMnO1xuaW1wb3J0IHsgRW50aXR5SW50ZXJmYWNlLCBFbnRpdHlNYXAsIFNjaGVtYUZ1bmN0aW9uIH0gZnJvbSAnLi4vc2NoZW1hLmpzJztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIGVudGl0aWVzIGluIGNhY2hlXG4gKlxuICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9yZXN0L2FwaS9BbGxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWxsU2NoZW1hPFxuICBTIGV4dGVuZHMgRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlID0gRW50aXR5TWFwIHwgRW50aXR5SW50ZXJmYWNlLFxuPiBleHRlbmRzIEFycmF5U2NoZW1hIHtcbiAgY29uc3RydWN0b3IoXG4gICAgZGVmaW5pdGlvbjogUyxcbiAgICBzY2hlbWFBdHRyaWJ1dGU/OiBTIGV4dGVuZHMgRW50aXR5TWFwPGluZmVyIFQ+XG4gICAgICA/IGtleW9mIFQgfCBTY2hlbWFGdW5jdGlvbjxrZXlvZiBTPlxuICAgICAgOiB1bmRlZmluZWQsXG4gICkge1xuICAgIHN1cGVyKGRlZmluaXRpb24sIHNjaGVtYUF0dHJpYnV0ZSBhcyBhbnkpO1xuICB9XG5cbiAgbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgcGFyZW50OiBhbnksXG4gICAga2V5OiBhbnksXG4gICAgdmlzaXQ6IGFueSxcbiAgICBhZGRFbnRpdHk6IGFueSxcbiAgICB2aXNpdGVkRW50aXRpZXM6IGFueSxcbiAgKTogYW55IHtcbiAgICAvLyB3ZSByZXR1cm4gdW5kZWZpbmVkXG4gICAgc3VwZXIubm9ybWFsaXplKGlucHV0LCBwYXJlbnQsIGtleSwgdmlzaXQsIGFkZEVudGl0eSwgdmlzaXRlZEVudGl0aWVzKTtcbiAgfVxuXG4gIGluZmVyKGFyZ3M6IGFueSwgaW5kZXhlczogYW55LCByZWN1cnNlOiBhbnksIGVudGl0aWVzOiBFbnRpdHlUYWJsZSk6IGFueSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVTY2hlbWEpIHtcbiAgICAgIGNvbnN0IGVudGl0aWVzRW50cnkgPSBlbnRpdGllc1t0aGlzLnNjaGVtYS5rZXldO1xuICAgICAgaWYgKGVudGl0aWVzRW50cnkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGVudGl0aWVzRW50cnkpLm1hcChcbiAgICAgICAgZW50aXR5ID0+IGVudGl0eSAmJiB0aGlzLnNjaGVtYS5wayhlbnRpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgY29uc3QgbGlzdCA9IE9iamVjdC52YWx1ZXModGhpcy5zY2hlbWEgYXMgUmVjb3JkPHN0cmluZywgYW55PikuZmxhdE1hcChcbiAgICAgIChzY2hlbWE6IEVudGl0eUludGVyZmFjZSkgPT4ge1xuICAgICAgICBpZiAoIU9iamVjdC5oYXNPd24oZW50aXRpZXMsIHNjaGVtYS5rZXkpIHx8ICFlbnRpdGllc1tzY2hlbWEua2V5XSlcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZW50aXRpZXNbc2NoZW1hLmtleV0gYXMgUmVjb3JkPHN0cmluZywgYW55PikubWFwKFxuICAgICAgICAgIGVudGl0eSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGVudGl0eSAmJiBzY2hlbWEucGsoZW50aXR5KSxcbiAgICAgICAgICAgIHNjaGVtYTogdGhpcy5nZXRTY2hlbWFBdHRyaWJ1dGUoZW50aXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICk7XG4gICAgLy8gaWYgbm8gdGFibGUgZW50cmllcyBleGlzdCB3ZSBzaG91bGRuJ3QgZ3JhYiBhbnl0aGluZ1xuICAgIGlmICghZm91bmQpIHJldHVybjtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLE1BQU0sWUFBWTtBQUlwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxNQUFNQyxTQUFTLFNBRXBCRCxXQUFXLENBQUM7RUFDcEJFLFdBQVcsQ0FDVEMsVUFBYSxFQUNiQyxlQUVhLEVBQ2I7SUFDQSxLQUFLLENBQUNELFVBQVUsRUFBRUMsZUFBZSxDQUFRO0VBQzNDO0VBRUFDLFNBQVMsQ0FDUEMsS0FBVSxFQUNWQyxNQUFXLEVBQ1hDLEdBQVEsRUFDUkMsS0FBVSxFQUNWQyxTQUFjLEVBQ2RDLGVBQW9CLEVBQ2Y7SUFDTDtJQUNBLEtBQUssQ0FBQ04sU0FBUyxDQUFDQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxDQUFDO0VBQ3hFO0VBRUFDLEtBQUssQ0FBQ0MsSUFBUyxFQUFFQyxPQUFZLEVBQUVDLE9BQVksRUFBRUMsUUFBcUIsRUFBTztJQUN2RSxJQUFJLElBQUksQ0FBQ0MsY0FBYyxFQUFFO01BQ3ZCLE1BQU1DLGFBQWEsR0FBR0YsUUFBUSxDQUFDLElBQUksQ0FBQ0csTUFBTSxDQUFDWCxHQUFHLENBQUM7TUFDL0MsSUFBSVUsYUFBYSxLQUFLRSxTQUFTLEVBQUUsT0FBT0EsU0FBUztNQUNqRCxPQUFPQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0osYUFBYSxDQUFDLENBQUNLLEdBQUcsQ0FDckNDLE1BQU0sSUFBSUEsTUFBTSxJQUFJLElBQUksQ0FBQ0wsTUFBTSxDQUFDTSxFQUFFLENBQUNELE1BQU0sQ0FBQyxDQUMzQztJQUNIO0lBQ0EsSUFBSUUsS0FBSyxHQUFHLEtBQUs7SUFDakIsTUFBTUMsSUFBSSxHQUFHTixNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUNILE1BQU0sQ0FBd0IsQ0FBQ1MsT0FBTyxDQUNuRVQsTUFBdUIsSUFBSztNQUMzQixJQUFJLENBQUNFLE1BQU0sQ0FBQ1EsTUFBTSxDQUFDYixRQUFRLEVBQUVHLE1BQU0sQ0FBQ1gsR0FBRyxDQUFDLElBQUksQ0FBQ1EsUUFBUSxDQUFDRyxNQUFNLENBQUNYLEdBQUcsQ0FBQyxFQUMvRCxPQUFPLEVBQUU7TUFDWGtCLEtBQUssR0FBRyxJQUFJO01BQ1osT0FBT0wsTUFBTSxDQUFDQyxNQUFNLENBQUNOLFFBQVEsQ0FBQ0csTUFBTSxDQUFDWCxHQUFHLENBQUMsQ0FBd0IsQ0FBQ2UsR0FBRyxDQUNuRUMsTUFBTSxLQUFLO1FBQ1RNLEVBQUUsRUFBRU4sTUFBTSxJQUFJTCxNQUFNLENBQUNNLEVBQUUsQ0FBQ0QsTUFBTSxDQUFDO1FBQy9CTCxNQUFNLEVBQUUsSUFBSSxDQUFDWSxrQkFBa0IsQ0FBQ1AsTUFBTSxFQUFFSixTQUFTLEVBQUVBLFNBQVM7TUFDOUQsQ0FBQyxDQUFDLENBQ0g7SUFDSCxDQUFDLENBQ0Y7SUFDRDtJQUNBLElBQUksQ0FBQ00sS0FBSyxFQUFFO0lBQ1osT0FBT0MsSUFBSTtFQUNiO0FBQ0YifQ== |
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ | ||
import { isImmutable, denormalizeImmutable } from './ImmutableUtils.js'; | ||
/** | ||
@@ -307,2 +306,2 @@ * Represents data that should be deduped by specifying a primary key. | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0ltbXV0YWJsZSIsImRlbm9ybWFsaXplSW1tdXRhYmxlIiwiRW50aXR5IiwidG9KU09OIiwibmFtZSIsInNjaGVtYSIsImtleSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwicGsiLCJ2YWx1ZSIsInBhcmVudCIsInByb3RvdHlwZSIsImNhbGwiLCJ1c2VJbmNvbWluZyIsImV4aXN0aW5nTWV0YSIsImluY29taW5nTWV0YSIsImV4aXN0aW5nIiwiaW5jb21pbmciLCJmZXRjaGVkQXQiLCJtZXJnZSIsImZyb21KUyIsInByb3BzIiwiaW5zdGFuY2UiLCJPYmplY3QiLCJhc3NpZ24iLCJpbnB1dCIsImF1dG9tYXRpY1ZhbGlkYXRpb24iLCJBcnJheSIsImlzQXJyYXkiLCJlcnJvck1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5Iiwic2xpY2UiLCJlcnJvciIsInN0YXR1cyIsImNvbnNvbGUiLCJ3YXJuIiwibm9ybWFsaXplIiwidmlzaXQiLCJhZGRFbnRpdHkiLCJ2aXNpdGVkRW50aXRpZXMiLCJwcm9jZXNzZWRFbnRpdHkiLCJpZCIsInVuZGVmaW5lZCIsImVudGl0eVR5cGUiLCJzb21lIiwiZW50aXR5IiwidmFsaWRhdGUiLCJwdXNoIiwia2V5cyIsImZvckVhY2giLCJoYXNPd24iLCJrZXlzT2ZSZWNvcmQiLCJTZXQiLCJkZWZhdWx0cyIsImtleXNPZlByb3BzIiwiZm91bmQiLCJtaXNzaW5nIiwidW5leHBlY3RlZCIsImtleU9mUHJvcHMiLCJoYXMiLCJrZXlPZlJlY29yZCIsImluY2x1ZGVzIiwic2l6ZSIsInRvb01hbnlVbmV4cGVjdGVkIiwiTWF0aCIsIm1heCIsImxlbmd0aCIsImZvdW5kTm90aGluZyIsIm1pbiIsImV4dHJhIiwicmVhc29uIiwiaW5mZXIiLCJhcmdzIiwiaW5kZXhlcyIsInJlY3Vyc2UiLCJpbmRleE5hbWUiLCJpbmRleEZyb21QYXJhbXMiLCJleHBpcmVzQXQiLCJtZXRhIiwiZGVub3JtYWxpemUiLCJ1bnZpc2l0IiwidG9KUyIsInNldExvY2FsIiwiZGVub3JtRW50aXR5IiwiZGVsZXRlZCIsInRvT2JqZWN0IiwiZW50aXR5Q29weSIsIm5leHRJbnB1dCIsImRlbGV0ZWRJdGVtIiwic2V0IiwiX19kZWZhdWx0cyIsInN1cGVyRnJvbSIsInBhcmFtcyIsImZpbmQiLCJpbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL0VudGl0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzICovXG5cbmltcG9ydCB0eXBlIHsgU2NoZW1hLCBOb3JtYWxpemVkSW5kZXgsIFVudmlzaXRGdW5jdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZS5qcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSB9IGZyb20gJy4uL25vcm1hbC5qcyc7XG5pbXBvcnQgeyBpc0ltbXV0YWJsZSwgZGVub3JtYWxpemVJbW11dGFibGUgfSBmcm9tICcuL0ltbXV0YWJsZVV0aWxzLmpzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGRhdGEgdGhhdCBzaG91bGQgYmUgZGVkdXBlZCBieSBzcGVjaWZ5aW5nIGEgcHJpbWFyeSBrZXkuXG4gKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0VudGl0eVxuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBFbnRpdHkge1xuICBzdGF0aWMgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAga2V5OiB0aGlzLmtleSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIERlZmluZXMgbmVzdGVkIGVudGl0aWVzICovXG4gIHN0YXRpYyBzY2hlbWE6IHsgW2s6IHN0cmluZ106IFNjaGVtYSB9ID0ge307XG5cbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggRW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBbcGFyZW50XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUgb2JqZWN0IHdoaWNoIGluY2x1ZGVkIHRoZSBlbnRpdHlcbiAgICogQHBhcmFtIFtrZXldIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBrZXkgd2hlcmUgdGhpcyBlbnRpdHkgd2FzIGZvdW5kXG4gICAqL1xuICBhYnN0cmFjdCBwayhwYXJlbnQ/OiBhbnksIGtleT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmV0dXJucyB0aGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGF0aWMgRW50aXR5ICovXG4gIHN0YXRpYyBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAodGhpcy5uYW1lID09PSAnJyB8fCB0aGlzLm5hbWUgPT09ICdFbnRpdHknIHx8IHRoaXMubmFtZSA9PT0gJ190ZW1wJylcbiAgICApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdFbnRpdHkgY2xhc3NlcyB3aXRob3V0IGEgbmFtZSBtdXN0IGRlZmluZSBgc3RhdGljIGdldCBrZXkoKWAnLFxuICAgICAgKTtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqIERlZmluZXMgaW5kZXhlcyB0byBlbmFibGUgbG9va3VwIGJ5ICovXG4gIGRlY2xhcmUgc3RhdGljIGluZGV4ZXM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKiogQ29udHJvbCBob3cgYXV0b21hdGljIHNjaGVtYSB2YWxpZGF0aW9uIGlzIGhhbmRsZWRcbiAgICpcbiAgICogYHVuZGVmaW5lZGA6IERlZmF1bHRzIC0gdGhyb3cgZXJyb3IgaW4gd29yc3Qgb2ZmZW5zZVxuICAgKiAnd2Fybic6IG9ubHkgZXZlciB3YXJuXG4gICAqICdzaWxlbnQnOiBEb24ndCBib3RoZXIgd2l0aCBwcm9jZXNzaW5nIGF0IGFsbFxuICAgKlxuICAgKiBOb3RlOiB0aGlzIG9ubHkgYXBwbGllcyB0byBub24tbmVzdGVkIG1lbWJlcnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbj86ICd3YXJuJyB8ICdzaWxlbnQnO1xuXG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBlYWNoIEVudGl0eVxuICAgKlxuICAgKiBAcGFyYW0gW3ZhbHVlXSBQT0pPIG9mIHRoZSBlbnRpdHkgb3Igc3Vic2V0IHVzZWRcbiAgICogQHBhcmFtIFtwYXJlbnRdIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBvYmplY3Qgd2hpY2ggaW5jbHVkZWQgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICovXG4gIHN0YXRpYyBwazxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICB2YWx1ZTogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICAgcGFyZW50PzogYW55LFxuICAgIGtleT86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5wcm90b3R5cGUucGsuY2FsbCh2YWx1ZSwgcGFyZW50LCBrZXkpO1xuICB9XG5cbiAgLyoqIFJldHVybiB0cnVlIHRvIG1lcmdlIGluY29taW5nIGRhdGE7IGZhbHNlIGtlZXBzIGV4aXN0aW5nIGVudGl0eSAqL1xuICBzdGF0aWMgdXNlSW5jb21pbmcoXG4gICAgZXhpc3RpbmdNZXRhOiB7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICBpbmNvbWluZ01ldGE6IHsgZGF0ZTogbnVtYmVyOyBmZXRjaGVkQXQ6IG51bWJlciB9LFxuICAgIGV4aXN0aW5nOiBhbnksXG4gICAgaW5jb21pbmc6IGFueSxcbiAgKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nTWV0YS5mZXRjaGVkQXQgPD0gaW5jb21pbmdNZXRhLmZldGNoZWRBdDtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBjb3B5aW5nIG92ZXIgZGVmaW5lZCB2YWx1ZXMgb2YgYXJndW1lbnRzICovXG4gIHN0YXRpYyBtZXJnZShleGlzdGluZzogYW55LCBpbmNvbWluZzogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgLi4uaW5jb21pbmcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGZyb20gUGxhaW4gSlMgT2JqZWN0cy5cbiAgICpcbiAgICogQHBhcmFtIFtwcm9wc10gUGxhaW4gT2JqZWN0IG9mIHByb3BlcnRpZXMgdG8gYXNzaWduLlxuICAgKiBAcGFyYW0gW3BhcmVudF0gV2hlbiBub3JtYWxpemluZywgdGhlIG9iamVjdCB3aGljaCBpbmNsdWRlZCB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSBba2V5XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUga2V5IHdoZXJlIHRoaXMgcmVjb3JkIHdhcyBmb3VuZFxuICAgKi9cbiAgc3RhdGljIGZyb21KUzxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBvbmx5IGFjY2VwdCBtZW1iZXJzIHRoYXQgYXJlIG5vdCBmdW5jdGlvbnNcbiAgICBwcm9wczogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4gPSB7fSxcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4ge1xuICAgIC8vIHdlIHR5cGUgZ3VhcmRlZCBhYnN0cmFjdCBjYXNlIGFib3ZlLCBzbyBvayB0byBmb3JjZSB0eXBlc2NyaXB0IHRvIGFsbG93IGNvbnN0cnVjdG9yIGNhbGxcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyAodGhpcyBhcyBhbnkpKHByb3BzKSBhcyBBYnN0cmFjdEluc3RhbmNlVHlwZTxUPjtcbiAgICAvLyB3ZSBjYW4ndCByZWx5IG9uIGNvbnN0cnVjdG9ycyBhbmQgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGFzIHByb3BlcnR5IGFzc2lnbm1lbnRzXG4gICAgLy8gYWxsIG9jY3VyIGFmdGVyIHRoZSBjb25zdHJ1Y3RvclxuICAgIE9iamVjdC5hc3NpZ24oaW5zdGFuY2UsIHByb3BzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKiogRG8gYW55IHRyYW5zZm9ybWF0aW9ucyB3aGVuIGZpcnN0IHJlY2VpdmluZyBpbnB1dCAqL1xuICBzdGF0aWMgcHJvY2VzcyhpbnB1dDogYW55LCBwYXJlbnQ6IGFueSwga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBhbnkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgdGhpcy5hdXRvbWF0aWNWYWxpZGF0aW9uICE9PSAnc2lsZW50J1xuICAgICkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSAke1xuICAgICAgICAgIHRoaXMubmFtZVxuICAgICAgICB9IHdpdGggYW4gYXJyYXksIGJ1dCBuYW1lZCBtZW1iZXJzIHdlcmUgZXhwZWN0ZWRcblxuVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuVHJ5IGluc3BlY3RpbmcgdGhlIG5ldHdvcmsgcmVzcG9uc2Ugb3IgZmV0Y2goKSByZXR1cm4gdmFsdWUuXG5PciB1c2UgZGVidWdnaW5nIHRvb2xzOiBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2d1aWRlcy9kZWJ1Z2dpbmdcbkxlYXJuIG1vcmUgYWJvdXQgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvc2NoZW1hXG5JZiB0aGlzIGlzIGEgbWlzdGFrZSwgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgYnkgc2V0dGluZyBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbiA9ICdzaWxlbnQnXG5cbkZpcnN0IHRocmVlIG1lbWJlcnM6ICR7SlNPTi5zdHJpbmdpZnkoaW5wdXQuc2xpY2UoMCwgMyksIG51bGwsIDIpfWA7XG4gICAgICAgIGlmICh0aGlzLmF1dG9tYXRpY1ZhbGlkYXRpb24gIT09ICd3YXJuJykge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IC4uLmlucHV0IH07XG4gIH1cblxuICBzdGF0aWMgbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgcGFyZW50OiBhbnksXG4gICAga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdmlzaXQ6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICBhZGRFbnRpdHk6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICB2aXNpdGVkRW50aXRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICk6IGFueSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkRW50aXR5ID0gdGhpcy5wcm9jZXNzKGlucHV0LCBwYXJlbnQsIGtleSk7XG4gICAgY29uc3QgaWQgPSB0aGlzLnBrKHByb2Nlc3NlZEVudGl0eSwgcGFyZW50LCBrZXkpO1xuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSAnJykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYE1pc3NpbmcgdXNhYmxlIHByaW1hcnkga2V5IHdoZW4gbm9ybWFsaXppbmcgcmVzcG9uc2UuXG5cbiAgVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuICBUcnkgaW5zcGVjdGluZyB0aGUgbmV0d29yayByZXNwb25zZSBvciBmZXRjaCgpIHJldHVybiB2YWx1ZS5cbiAgT3IgdXNlIGRlYnVnZ2luZyB0b29sczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9ndWlkZXMvZGVidWdnaW5nXG4gIExlYXJuIG1vcmUgYWJvdXQgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvc2NoZW1hXG5cbiAgRW50aXR5OiAke3RoaXMubmFtZX1cbiAgVmFsdWUgKHByb2Nlc3NlZCk6ICR7XG4gICAgcHJvY2Vzc2VkRW50aXR5ICYmIEpTT04uc3RyaW5naWZ5KHByb2Nlc3NlZEVudGl0eSwgbnVsbCwgMilcbiAgfVxuICBgLFxuICAgICAgICApO1xuICAgICAgICAoZXJyb3IgYXMgYW55KS5zdGF0dXMgPSA0MDA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlc2UgbWFrZSB0aGUga2V5cyBnZXQgZGVsZXRlZFxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5rZXk7XG5cbiAgICBpZiAoIShlbnRpdHlUeXBlIGluIHZpc2l0ZWRFbnRpdGllcykpIHtcbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXSA9IHt9O1xuICAgIH1cbiAgICBpZiAoIShpZCBpbiB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV0pKSB7XG4gICAgICB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV1baWRdID0gW107XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0uc29tZSgoZW50aXR5OiBhbnkpID0+IGVudGl0eSA9PT0gaW5wdXQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMudmFsaWRhdGUocHJvY2Vzc2VkRW50aXR5KTtcbiAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0ucHVzaChpbnB1dCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKE9iamVjdC5oYXNPd24ocHJvY2Vzc2VkRW50aXR5LCBrZXkpKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuc2NoZW1hW2tleV07XG4gICAgICAgIHByb2Nlc3NlZEVudGl0eVtrZXldID0gdmlzaXQoXG4gICAgICAgICAgcHJvY2Vzc2VkRW50aXR5W2tleV0sXG4gICAgICAgICAgcHJvY2Vzc2VkRW50aXR5LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgYWRkRW50aXR5LFxuICAgICAgICAgIHZpc2l0ZWRFbnRpdGllcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGFkZEVudGl0eSh0aGlzLCBwcm9jZXNzZWRFbnRpdHksIGlkKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIHZhbGlkYXRlKHByb2Nlc3NlZEVudGl0eTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIHRoaXMuYXV0b21hdGljVmFsaWRhdGlvbiAhPT0gJ3NpbGVudCdcbiAgICApIHtcbiAgICAgIGNvbnN0IGtleXNPZlJlY29yZCA9IG5ldyBTZXQoT2JqZWN0LmtleXModGhpcy5kZWZhdWx0cykpO1xuICAgICAgY29uc3Qga2V5c09mUHJvcHMgPSBPYmplY3Qua2V5cyhwcm9jZXNzZWRFbnRpdHkpO1xuICAgICAgY29uc3QgW2ZvdW5kLCBtaXNzaW5nLCB1bmV4cGVjdGVkXSA9IFtbXSwgW10sIFtdXSBhcyBbXG4gICAgICAgIHN0cmluZ1tdLFxuICAgICAgICBzdHJpbmdbXSxcbiAgICAgICAgc3RyaW5nW10sXG4gICAgICBdO1xuICAgICAgZm9yIChjb25zdCBrZXlPZlByb3BzIG9mIGtleXNPZlByb3BzKSB7XG4gICAgICAgIGlmIChrZXlzT2ZSZWNvcmQuaGFzKGtleU9mUHJvcHMpKSB7XG4gICAgICAgICAgZm91bmQucHVzaChrZXlPZlByb3BzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1bmV4cGVjdGVkLnB1c2goa2V5T2ZQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5T2ZSZWNvcmQgb2Yga2V5c09mUmVjb3JkKSB7XG4gICAgICAgIGlmICghZm91bmQuaW5jbHVkZXMoa2V5T2ZSZWNvcmQpKSB7XG4gICAgICAgICAgbWlzc2luZy5wdXNoKGtleU9mUmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBvbmx5IGJvdGhlciB3aXRoIHRoaXMgaWYgdGhleSB1c2VkICphbnkqIGRlZmF1bHRzXG4gICAgICBpZiAoa2V5c09mUmVjb3JkLnNpemUpIHtcbiAgICAgICAgY29uc3QgdG9vTWFueVVuZXhwZWN0ZWQgPVxuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgY29tcGFyZWQgdG8gbWVtYmVycyBpbiByZXNwb25zZVxuICAgICAgICAgIE1hdGgubWF4KGtleXNPZlByb3BzLmxlbmd0aCAvIDIsIDEpIDw9IHVuZXhwZWN0ZWQubGVuZ3RoICYmXG4gICAgICAgICAgLy8gdW5leHBlY3RlZCBjb21wYXJlZCB0byB3aGF0IHdlIHNwZWNpZmllZFxuICAgICAgICAgIGtleXNPZlJlY29yZC5zaXplID4gTWF0aC5tYXgodW5leHBlY3RlZC5sZW5ndGgsIDIpICYmXG4gICAgICAgICAgLy8gYXMgd2UgZmluZCBtb3JlIGFuZCBtb3JlIGJlIG1vcmUgZWFzaWx5IGFzc3VyZWQgaXQgaXMgY29ycmVjdFxuICAgICAgICAgIGZvdW5kLmxlbmd0aCAqKiAxLjUgLyAyIDw9IHVuZXhwZWN0ZWQubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb3VuZE5vdGhpbmcgPSBmb3VuZC5sZW5ndGggPCBNYXRoLm1pbigxLCBrZXlzT2ZSZWNvcmQuc2l6ZSAvIDIpO1xuICAgICAgICAvLyBpZiB3ZSBmaW5kIG5vdGhpbmcgKHdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgbWVtYmVyIGZvciBhIHBrKVxuICAgICAgICAvLyBvciB3ZSBmaW5kIHRvbyBtYW55IHVuZXhwZWN0ZWQgbWVtYmVyc1xuICAgICAgICBpZiAodG9vTWFueVVuZXhwZWN0ZWQgfHwgZm91bmROb3RoaW5nKSB7XG4gICAgICAgICAgbGV0IGV4dHJhID0gJyc7XG4gICAgICAgICAgbGV0IHJlYXNvbiA9ICdzdWJzdGFudGlhbGx5IGRpZmZlcmVudCB0aGFuIGV4cGVjdGVkIGtleXMnO1xuICAgICAgICAgIGlmIChmb3VuZE5vdGhpbmcpIHtcbiAgICAgICAgICAgIGV4dHJhICs9IGBcXG4gICAgTWlzc2luZzogJHttaXNzaW5nfWA7XG4gICAgICAgICAgICByZWFzb24gPSAnbm8gbWF0Y2hpbmcga2V5cyBmb3VuZCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0b29NYW55VW5leHBlY3RlZCkge1xuICAgICAgICAgICAgZXh0cmEgKz0gYFxcbiAgICBVbmV4cGVjdGVkIGtleXM6ICR7dW5leHBlY3RlZH1gO1xuICAgICAgICAgICAgcmVhc29uID0gJ2EgbGFyZ2UgbnVtYmVyIG9mIHVuZXhwZWN0ZWQga2V5cyBmb3VuZCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSAke1xuICAgICAgICAgICAgdGhpcy5uYW1lXG4gICAgICAgICAgfSB3aXRoICR7cmVhc29ufVxuXG4gIFRoaXMgaXMgbGlrZWx5IGR1ZSB0byBhIG1hbGZvcm1lZCByZXNwb25zZS5cbiAgVHJ5IGluc3BlY3RpbmcgdGhlIG5ldHdvcmsgcmVzcG9uc2Ugb3IgZmV0Y2goKSByZXR1cm4gdmFsdWUuXG4gIE9yIHVzZSBkZWJ1Z2dpbmcgdG9vbHM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvZ3VpZGVzL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IHNjaGVtYXM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL3NjaGVtYVxuICBJZiB0aGlzIGlzIGEgbWlzdGFrZSwgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgYnkgc2V0dGluZyBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbiA9ICdzaWxlbnQnXG5cbiAgRXhwZWN0ZWQga2V5czpcbiAgICBGb3VuZDogJHtmb3VuZH0ke2V4dHJhfVxuICBWYWx1ZSAocHJvY2Vzc2VkKTogJHtKU09OLnN0cmluZ2lmeShwcm9jZXNzZWRFbnRpdHksIG51bGwsIDIpfWA7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGZvdW5kLmxlbmd0aCA+PSA0ICYmIHRvb01hbnlVbmV4cGVjdGVkKSB8fFxuICAgICAgICAgICAgdGhpcy5hdXRvbWF0aWNWYWxpZGF0aW9uID09PSAnd2FybidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5zY2hlbWEpKSB7XG4gICAgICAgIGlmICghT2JqZWN0Lmhhc093bihwcm9jZXNzZWRFbnRpdHksIGtleSkpIHtcbiAgICAgICAgICBpZiAoIU9iamVjdC5oYXNPd24odGhpcy5kZWZhdWx0cywga2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGBTY2hlbWEga2V5IGlzIG1pc3NpbmcgaW4gRW50aXR5XG5cbiAgQmUgc3VyZSBhbGwgc2NoZW1hIG1lbWJlcnMgYXJlIGFsc28gcGFydCBvZiB0aGUgZW50aXR5XG4gIE9yIHVzZSBkZWJ1Z2dpbmcgdG9vbHM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvZ3VpZGVzL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IG5lc3Rpbmcgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9ndWlkZXMvbmVzdGVkLXJlc3BvbnNlXG5cbiAgRW50aXR5IGtleXM6ICR7T2JqZWN0LmtleXModGhpcy5kZWZhdWx0cyl9XG4gIFNjaGVtYSBrZXkobWlzc2luZyk6ICR7a2V5fVxuICBgO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpbmZlcihcbiAgICBhcmdzOiByZWFkb25seSBhbnlbXSxcbiAgICBpbmRleGVzOiBOb3JtYWxpemVkSW5kZXgsXG4gICAgcmVjdXJzZTogYW55LFxuICApOiBhbnkge1xuICAgIGlmICghYXJnc1swXSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJ10uaW5jbHVkZXModHlwZW9mIGFyZ3NbMF0pKSB7XG4gICAgICByZXR1cm4gYCR7YXJnc1swXX1gO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IHRoaXMucGsoYXJnc1swXSwgdW5kZWZpbmVkLCAnJyk7XG4gICAgLy8gV2FzIGFibGUgdG8gaW5mZXIgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5IGZyb20gcGFyYW1zXG4gICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09ICcnKSByZXR1cm4gaWQ7XG4gICAgLy8gbm93IGF0dGVtcHQgbG9va3VwIGluIGluZGV4ZXNcbiAgICBjb25zdCBpbmRleE5hbWUgPSBpbmRleEZyb21QYXJhbXMoYXJnc1swXSwgdGhpcy5pbmRleGVzKTtcbiAgICBpZiAoaW5kZXhOYW1lICYmIGluZGV4ZXNbdGhpcy5rZXldKSB7XG4gICAgICAvLyAnYXMgUmVjb3JkPHN0cmluZywgYW55Pic6IGluZGV4TmFtZSBjYW4gb25seSBiZSBmb3VuZCBpZiBwYXJhbXMgaXMgYSBzdHJpbmcga2V5J2Qgb2JqZWN0XG4gICAgICBjb25zdCBpZCA9XG4gICAgICAgIGluZGV4ZXNbdGhpcy5rZXldW2luZGV4TmFtZV1bXG4gICAgICAgICAgKGFyZ3NbMF0gYXMgUmVjb3JkPHN0cmluZywgYW55PilbaW5kZXhOYW1lXVxuICAgICAgICBdO1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhdGljIGV4cGlyZXNBdChcbiAgICBtZXRhOiB7IGV4cGlyZXNBdDogbnVtYmVyOyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgaW5wdXQ6IGFueSxcbiAgKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbWV0YS5leHBpcmVzQXQ7XG4gIH1cblxuICBzdGF0aWMgZGVub3JtYWxpemU8VCBleHRlbmRzIHR5cGVvZiBFbnRpdHk+KFxuICAgIHRoaXM6IFQsXG4gICAgaW5wdXQ6IGFueSxcbiAgICB1bnZpc2l0OiBVbnZpc2l0RnVuY3Rpb24sXG4gICk6IFtkZW5vcm1hbGl6ZWQ6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+LCBmb3VuZDogYm9vbGVhbiwgc3VzcGVuZDogYm9vbGVhbl0ge1xuICAgIC8vIFRPRE86IHJlbW92ZSBjb2RlY292IGlnbm9yZSBvbmNlIGRlbm9ybWFsaXplIGlzIG1vZGlmaWVkIHRvIGV4cGVjdCB0aGlzXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiBbdW5kZWZpbmVkLCB0cnVlLCB0cnVlXSBhcyBhbnk7XG4gICAgfVxuICAgIGlmIChpc0ltbXV0YWJsZShpbnB1dCkpIHtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlKChpbnB1dCBhcyBhbnkpLnRvSlMoKSkpXG4gICAgICAgIHJldHVybiBbdW5kZWZpbmVkIGFzIGFueSwgZmFsc2UsIHRydWVdO1xuICAgICAgLy8gTmVlZCB0byBzZXQgdGhpcyBmaXJzdCBzbyB0aGF0IGlmIGl0IGlzIHJlZmVyZW5jZWQgZnVydGhlciB3aXRoaW4gdGhlXG4gICAgICAvLyBkZW5vcm1hbGl6YXRpb24gdGhlIHJlZmVyZW5jZSB3aWxsIGFscmVhZHkgZXhpc3QuXG4gICAgICB1bnZpc2l0LnNldExvY2FsPy4oaW5wdXQpO1xuICAgICAgY29uc3QgW2Rlbm9ybUVudGl0eSwgZm91bmQsIGRlbGV0ZWRdID0gZGVub3JtYWxpemVJbW11dGFibGUoXG4gICAgICAgIHRoaXMuc2NoZW1hLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgdW52aXNpdCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gW3RoaXMuZnJvbUpTKGRlbm9ybUVudGl0eS50b09iamVjdCgpKSwgZm91bmQsIGRlbGV0ZWRdO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWxpZGF0ZShpbnB1dCkpIHtcbiAgICAgIHJldHVybiBbdW5kZWZpbmVkIGFzIGFueSwgZmFsc2UsIHRydWVdO1xuICAgIH1cbiAgICBjb25zdCBlbnRpdHlDb3B5OiBhbnkgPSB0aGlzLmZyb21KUyhpbnB1dCk7XG4gICAgLy8gTmVlZCB0byBzZXQgdGhpcyBmaXJzdCBzbyB0aGF0IGlmIGl0IGlzIHJlZmVyZW5jZWQgZnVydGhlciB3aXRoaW4gdGhlXG4gICAgLy8gZGVub3JtYWxpemF0aW9uIHRoZSByZWZlcmVuY2Ugd2lsbCBhbHJlYWR5IGV4aXN0LlxuICAgIHVudmlzaXQuc2V0TG9jYWw/LihlbnRpdHlDb3B5KTtcblxuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICAvLyBub3RlOiBpdGVyYXRpb24gb3JkZXIgbXVzdCBiZSBzdGFibGVcbiAgICBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5zY2hlbWFba2V5XTtcbiAgICAgIGNvbnN0IG5leHRJbnB1dCA9IE9iamVjdC5oYXNPd24oaW5wdXQsIGtleSlcbiAgICAgICAgPyAoaW5wdXQgYXMgYW55KVtrZXldXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgW3ZhbHVlLCAsIGRlbGV0ZWRJdGVtXSA9IHVudmlzaXQobmV4dElucHV0LCBzY2hlbWEpO1xuXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0gJiYgIShPYmplY3QuaGFzT3duKGlucHV0LCBrZXkpICYmICF0aGlzLmRlZmF1bHRzW2tleV0pKSB7XG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5oYXNPd24oaW5wdXQsIGtleSkgJiYgKGlucHV0IGFzIGFueSlba2V5XSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoZW50aXR5Q29weSwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW2VudGl0eUNvcHksIHRydWUsIGRlbGV0ZWRdO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNsYXJlIHN0YXRpYyBfX2RlZmF1bHRzOiBhbnk7XG4gIC8qKiBBbGwgaW5zdGFuY2UgZGVmYXVsdHMgc2V0ICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZ2V0IGRlZmF1bHRzKCkge1xuICAgIGlmICghT2JqZWN0Lmhhc093bih0aGlzLCAnX19kZWZhdWx0cycpKVxuICAgICAgdGhpcy5fX2RlZmF1bHRzID0gbmV3ICh0aGlzIGFzIGFueSkoKTtcbiAgICByZXR1cm4gdGhpcy5fX2RlZmF1bHRzO1xuICB9XG5cbiAgLyoqIFVzZWQgYnkgZGVub3JtYWxpemUgdG8gc2V0IG5lc3RlZCBtZW1iZXJzICovXG4gIHByb3RlY3RlZCBzdGF0aWMgc2V0KGVudGl0eTogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGVudGl0eVtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNvbnN0IHN1cGVyRnJvbSA9IEVudGl0eS5mcm9tSlM7XG4gIC8vIGZvciB0aG9zZSBub3QgdXNpbmcgVHlwZVNjcmlwdCB0aGlzIGlzIGEgZ29vZCBjYXRjaCB0byBlbnN1cmUgdGhleSBhcmUgZGVmaW5pbmdcbiAgLy8gdGhlIGFic3RyYWN0IG1lbWJlcnNcbiAgRW50aXR5LmZyb21KUyA9IGZ1bmN0aW9uIGZyb21KUzxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICBwcm9wczogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+IHtcbiAgICBpZiAoKHRoaXMgYXMgYW55KS5wcm90b3R5cGUucGsgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGNvbnN0cnVjdCBvbiBhYnN0cmFjdCB0eXBlcycpO1xuICAgIHJldHVybiBzdXBlckZyb20uY2FsbCh0aGlzLCBwcm9wcykgYXMgYW55O1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmRleEZyb21QYXJhbXM8SSBleHRlbmRzIHN0cmluZz4oXG4gIHBhcmFtczogUmVhZG9ubHk8b2JqZWN0PixcbiAgaW5kZXhlcz86IFJlYWRvbmx5PElbXT4sXG4pIHtcbiAgaWYgKCFpbmRleGVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gaW5kZXhlcy5maW5kKGluZGV4ID0+IE9iamVjdC5oYXNPd24ocGFyYW1zLCBpbmRleCkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFJQSxTQUFTQSxXQUFXLEVBQUVDLG9CQUFvQixRQUFRLHFCQUFxQjs7QUFFdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQWVDLE1BQU0sQ0FBQztFQUNuQyxPQUFPQyxNQUFNLEdBQUc7SUFDZCxPQUFPO01BQ0xDLElBQUksRUFBRSxJQUFJLENBQUNBLElBQUk7TUFDZkMsTUFBTSxFQUFFLElBQUksQ0FBQ0EsTUFBTTtNQUNuQkMsR0FBRyxFQUFFLElBQUksQ0FBQ0E7SUFDWixDQUFDO0VBQ0g7O0VBRUE7O0VBV0E7RUFDQSxXQUFXQSxHQUFHLEdBQVc7SUFDdkI7SUFDQSxJQUNFQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksS0FDcEMsSUFBSSxDQUFDTCxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQ0EsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUNBLElBQUksS0FBSyxPQUFPLENBQUMsRUFFckUsTUFBTSxJQUFJTSxLQUFLLENBQ2IsOERBQThELENBQy9EO0lBQ0gsT0FBTyxJQUFJLENBQUNOLElBQUk7RUFDbEI7O0VBRUE7O0VBYUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxPQUFPTyxFQUFFLENBRVBDLEtBQXVDLEVBQ3ZDQyxNQUFZLEVBQ1pQLEdBQVksRUFDUTtJQUNwQixPQUFPLElBQUksQ0FBQ1EsU0FBUyxDQUFDSCxFQUFFLENBQUNJLElBQUksQ0FBQ0gsS0FBSyxFQUFFQyxNQUFNLEVBQUVQLEdBQUcsQ0FBQztFQUNuRDs7RUFFQTtFQUNBLE9BQU9VLFdBQVcsQ0FDaEJDLFlBQWlELEVBQ2pEQyxZQUFpRCxFQUNqREMsUUFBYSxF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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0ltbXV0YWJsZSIsImRlbm9ybWFsaXplSW1tdXRhYmxlIiwiRW50aXR5IiwidG9KU09OIiwibmFtZSIsInNjaGVtYSIsImtleSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwicGsiLCJ2YWx1ZSIsInBhcmVudCIsInByb3RvdHlwZSIsImNhbGwiLCJ1c2VJbmNvbWluZyIsImV4aXN0aW5nTWV0YSIsImluY29taW5nTWV0YSIsImV4aXN0aW5nIiwiaW5jb21pbmciLCJmZXRjaGVkQXQiLCJtZXJnZSIsImZyb21KUyIsInByb3BzIiwiaW5zdGFuY2UiLCJPYmplY3QiLCJhc3NpZ24iLCJpbnB1dCIsImF1dG9tYXRpY1ZhbGlkYXRpb24iLCJBcnJheSIsImlzQXJyYXkiLCJlcnJvck1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5Iiwic2xpY2UiLCJlcnJvciIsInN0YXR1cyIsImNvbnNvbGUiLCJ3YXJuIiwibm9ybWFsaXplIiwidmlzaXQiLCJhZGRFbnRpdHkiLCJ2aXNpdGVkRW50aXRpZXMiLCJwcm9jZXNzZWRFbnRpdHkiLCJpZCIsInVuZGVmaW5lZCIsImVudGl0eVR5cGUiLCJzb21lIiwiZW50aXR5IiwidmFsaWRhdGUiLCJwdXNoIiwia2V5cyIsImZvckVhY2giLCJoYXNPd24iLCJrZXlzT2ZSZWNvcmQiLCJTZXQiLCJkZWZhdWx0cyIsImtleXNPZlByb3BzIiwiZm91bmQiLCJtaXNzaW5nIiwidW5leHBlY3RlZCIsImtleU9mUHJvcHMiLCJoYXMiLCJrZXlPZlJlY29yZCIsImluY2x1ZGVzIiwic2l6ZSIsInRvb01hbnlVbmV4cGVjdGVkIiwiTWF0aCIsIm1heCIsImxlbmd0aCIsImZvdW5kTm90aGluZyIsIm1pbiIsImV4dHJhIiwicmVhc29uIiwiaW5mZXIiLCJhcmdzIiwiaW5kZXhlcyIsInJlY3Vyc2UiLCJpbmRleE5hbWUiLCJpbmRleEZyb21QYXJhbXMiLCJleHBpcmVzQXQiLCJtZXRhIiwiZGVub3JtYWxpemUiLCJ1bnZpc2l0IiwidG9KUyIsInNldExvY2FsIiwiZGVub3JtRW50aXR5IiwiZGVsZXRlZCIsInRvT2JqZWN0IiwiZW50aXR5Q29weSIsIm5leHRJbnB1dCIsImRlbGV0ZWRJdGVtIiwic2V0IiwiX19kZWZhdWx0cyIsInN1cGVyRnJvbSIsInBhcmFtcyIsImZpbmQiLCJpbmRleCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL0VudGl0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzICovXG5cbmltcG9ydCB7IGlzSW1tdXRhYmxlLCBkZW5vcm1hbGl6ZUltbXV0YWJsZSB9IGZyb20gJy4vSW1tdXRhYmxlVXRpbHMuanMnO1xuaW1wb3J0IHR5cGUgeyBTY2hlbWEsIE5vcm1hbGl6ZWRJbmRleCwgVW52aXNpdEZ1bmN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlLmpzJztcbmltcG9ydCB7IEFic3RyYWN0SW5zdGFuY2VUeXBlIH0gZnJvbSAnLi4vbm9ybWFsLmpzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGRhdGEgdGhhdCBzaG91bGQgYmUgZGVkdXBlZCBieSBzcGVjaWZ5aW5nIGEgcHJpbWFyeSBrZXkuXG4gKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0VudGl0eVxuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBFbnRpdHkge1xuICBzdGF0aWMgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAga2V5OiB0aGlzLmtleSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIERlZmluZXMgbmVzdGVkIGVudGl0aWVzICovXG4gIHN0YXRpYyBzY2hlbWE6IHsgW2s6IHN0cmluZ106IFNjaGVtYSB9ID0ge307XG5cbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggRW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBbcGFyZW50XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUgb2JqZWN0IHdoaWNoIGluY2x1ZGVkIHRoZSBlbnRpdHlcbiAgICogQHBhcmFtIFtrZXldIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBrZXkgd2hlcmUgdGhpcyBlbnRpdHkgd2FzIGZvdW5kXG4gICAqL1xuICBhYnN0cmFjdCBwayhwYXJlbnQ/OiBhbnksIGtleT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmV0dXJucyB0aGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGF0aWMgRW50aXR5ICovXG4gIHN0YXRpYyBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAodGhpcy5uYW1lID09PSAnJyB8fCB0aGlzLm5hbWUgPT09ICdFbnRpdHknIHx8IHRoaXMubmFtZSA9PT0gJ190ZW1wJylcbiAgICApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdFbnRpdHkgY2xhc3NlcyB3aXRob3V0IGEgbmFtZSBtdXN0IGRlZmluZSBgc3RhdGljIGdldCBrZXkoKWAnLFxuICAgICAgKTtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgLyoqIERlZmluZXMgaW5kZXhlcyB0byBlbmFibGUgbG9va3VwIGJ5ICovXG4gIGRlY2xhcmUgc3RhdGljIGluZGV4ZXM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKiogQ29udHJvbCBob3cgYXV0b21hdGljIHNjaGVtYSB2YWxpZGF0aW9uIGlzIGhhbmRsZWRcbiAgICpcbiAgICogYHVuZGVmaW5lZGA6IERlZmF1bHRzIC0gdGhyb3cgZXJyb3IgaW4gd29yc3Qgb2ZmZW5zZVxuICAgKiAnd2Fybic6IG9ubHkgZXZlciB3YXJuXG4gICAqICdzaWxlbnQnOiBEb24ndCBib3RoZXIgd2l0aCBwcm9jZXNzaW5nIGF0IGFsbFxuICAgKlxuICAgKiBOb3RlOiB0aGlzIG9ubHkgYXBwbGllcyB0byBub24tbmVzdGVkIG1lbWJlcnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbj86ICd3YXJuJyB8ICdzaWxlbnQnO1xuXG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBlYWNoIEVudGl0eVxuICAgKlxuICAgKiBAcGFyYW0gW3ZhbHVlXSBQT0pPIG9mIHRoZSBlbnRpdHkgb3Igc3Vic2V0IHVzZWRcbiAgICogQHBhcmFtIFtwYXJlbnRdIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBvYmplY3Qgd2hpY2ggaW5jbHVkZWQgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICovXG4gIHN0YXRpYyBwazxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICB2YWx1ZTogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICAgcGFyZW50PzogYW55LFxuICAgIGtleT86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5wcm90b3R5cGUucGsuY2FsbCh2YWx1ZSwgcGFyZW50LCBrZXkpO1xuICB9XG5cbiAgLyoqIFJldHVybiB0cnVlIHRvIG1lcmdlIGluY29taW5nIGRhdGE7IGZhbHNlIGtlZXBzIGV4aXN0aW5nIGVudGl0eSAqL1xuICBzdGF0aWMgdXNlSW5jb21pbmcoXG4gICAgZXhpc3RpbmdNZXRhOiB7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICBpbmNvbWluZ01ldGE6IHsgZGF0ZTogbnVtYmVyOyBmZXRjaGVkQXQ6IG51bWJlciB9LFxuICAgIGV4aXN0aW5nOiBhbnksXG4gICAgaW5jb21pbmc6IGFueSxcbiAgKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nTWV0YS5mZXRjaGVkQXQgPD0gaW5jb21pbmdNZXRhLmZldGNoZWRBdDtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBjb3B5aW5nIG92ZXIgZGVmaW5lZCB2YWx1ZXMgb2YgYXJndW1lbnRzICovXG4gIHN0YXRpYyBtZXJnZShleGlzdGluZzogYW55LCBpbmNvbWluZzogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgLi4uaW5jb21pbmcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGZyb20gUGxhaW4gSlMgT2JqZWN0cy5cbiAgICpcbiAgICogQHBhcmFtIFtwcm9wc10gUGxhaW4gT2JqZWN0IG9mIHByb3BlcnRpZXMgdG8gYXNzaWduLlxuICAgKiBAcGFyYW0gW3BhcmVudF0gV2hlbiBub3JtYWxpemluZywgdGhlIG9iamVjdCB3aGljaCBpbmNsdWRlZCB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSBba2V5XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUga2V5IHdoZXJlIHRoaXMgcmVjb3JkIHdhcyBmb3VuZFxuICAgKi9cbiAgc3RhdGljIGZyb21KUzxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBvbmx5IGFjY2VwdCBtZW1iZXJzIHRoYXQgYXJlIG5vdCBmdW5jdGlvbnNcbiAgICBwcm9wczogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4gPSB7fSxcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4ge1xuICAgIC8vIHdlIHR5cGUgZ3VhcmRlZCBhYnN0cmFjdCBjYXNlIGFib3ZlLCBzbyBvayB0byBmb3JjZSB0eXBlc2NyaXB0IHRvIGFsbG93IGNvbnN0cnVjdG9yIGNhbGxcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyAodGhpcyBhcyBhbnkpKHByb3BzKSBhcyBBYnN0cmFjdEluc3RhbmNlVHlwZTxUPjtcbiAgICAvLyB3ZSBjYW4ndCByZWx5IG9uIGNvbnN0cnVjdG9ycyBhbmQgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGFzIHByb3BlcnR5IGFzc2lnbm1lbnRzXG4gICAgLy8gYWxsIG9jY3VyIGFmdGVyIHRoZSBjb25zdHJ1Y3RvclxuICAgIE9iamVjdC5hc3NpZ24oaW5zdGFuY2UsIHByb3BzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKiogRG8gYW55IHRyYW5zZm9ybWF0aW9ucyB3aGVuIGZpcnN0IHJlY2VpdmluZyBpbnB1dCAqL1xuICBzdGF0aWMgcHJvY2VzcyhpbnB1dDogYW55LCBwYXJlbnQ6IGFueSwga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBhbnkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgdGhpcy5hdXRvbWF0aWNWYWxpZGF0aW9uICE9PSAnc2lsZW50J1xuICAgICkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSAke1xuICAgICAgICAgIHRoaXMubmFtZVxuICAgICAgICB9IHdpdGggYW4gYXJyYXksIGJ1dCBuYW1lZCBtZW1iZXJzIHdlcmUgZXhwZWN0ZWRcblxuVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuVHJ5IGluc3BlY3RpbmcgdGhlIG5ldHdvcmsgcmVzcG9uc2Ugb3IgZmV0Y2goKSByZXR1cm4gdmFsdWUuXG5PciB1c2UgZGVidWdnaW5nIHRvb2xzOiBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2d1aWRlcy9kZWJ1Z2dpbmdcbkxlYXJuIG1vcmUgYWJvdXQgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvc2NoZW1hXG5JZiB0aGlzIGlzIGEgbWlzdGFrZSwgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgYnkgc2V0dGluZyBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbiA9ICdzaWxlbnQnXG5cbkZpcnN0IHRocmVlIG1lbWJlcnM6ICR7SlNPTi5zdHJpbmdpZnkoaW5wdXQuc2xpY2UoMCwgMyksIG51bGwsIDIpfWA7XG4gICAgICAgIGlmICh0aGlzLmF1dG9tYXRpY1ZhbGlkYXRpb24gIT09ICd3YXJuJykge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IC4uLmlucHV0IH07XG4gIH1cblxuICBzdGF0aWMgbm9ybWFsaXplKFxuICAgIGlucHV0OiBhbnksXG4gICAgcGFyZW50OiBhbnksXG4gICAga2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdmlzaXQ6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICBhZGRFbnRpdHk6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICB2aXNpdGVkRW50aXRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICk6IGFueSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkRW50aXR5ID0gdGhpcy5wcm9jZXNzKGlucHV0LCBwYXJlbnQsIGtleSk7XG4gICAgY29uc3QgaWQgPSB0aGlzLnBrKHByb2Nlc3NlZEVudGl0eSwgcGFyZW50LCBrZXkpO1xuICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSAnJykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYE1pc3NpbmcgdXNhYmxlIHByaW1hcnkga2V5IHdoZW4gbm9ybWFsaXppbmcgcmVzcG9uc2UuXG5cbiAgVGhpcyBpcyBsaWtlbHkgZHVlIHRvIGEgbWFsZm9ybWVkIHJlc3BvbnNlLlxuICBUcnkgaW5zcGVjdGluZyB0aGUgbmV0d29yayByZXNwb25zZSBvciBmZXRjaCgpIHJldHVybiB2YWx1ZS5cbiAgT3IgdXNlIGRlYnVnZ2luZyB0b29sczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9ndWlkZXMvZGVidWdnaW5nXG4gIExlYXJuIG1vcmUgYWJvdXQgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvc2NoZW1hXG5cbiAgRW50aXR5OiAke3RoaXMubmFtZX1cbiAgVmFsdWUgKHByb2Nlc3NlZCk6ICR7XG4gICAgcHJvY2Vzc2VkRW50aXR5ICYmIEpTT04uc3RyaW5naWZ5KHByb2Nlc3NlZEVudGl0eSwgbnVsbCwgMilcbiAgfVxuICBgLFxuICAgICAgICApO1xuICAgICAgICAoZXJyb3IgYXMgYW55KS5zdGF0dXMgPSA0MDA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlc2UgbWFrZSB0aGUga2V5cyBnZXQgZGVsZXRlZFxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5rZXk7XG5cbiAgICBpZiAoIShlbnRpdHlUeXBlIGluIHZpc2l0ZWRFbnRpdGllcykpIHtcbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXSA9IHt9O1xuICAgIH1cbiAgICBpZiAoIShpZCBpbiB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV0pKSB7XG4gICAgICB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV1baWRdID0gW107XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0uc29tZSgoZW50aXR5OiBhbnkpID0+IGVudGl0eSA9PT0gaW5wdXQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMudmFsaWRhdGUocHJvY2Vzc2VkRW50aXR5KTtcbiAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0ucHVzaChpbnB1dCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKE9iamVjdC5oYXNPd24ocHJvY2Vzc2VkRW50aXR5LCBrZXkpKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuc2NoZW1hW2tleV07XG4gICAgICAgIHByb2Nlc3NlZEVudGl0eVtrZXldID0gdmlzaXQoXG4gICAgICAgICAgcHJvY2Vzc2VkRW50aXR5W2tleV0sXG4gICAgICAgICAgcHJvY2Vzc2VkRW50aXR5LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgYWRkRW50aXR5LFxuICAgICAgICAgIHZpc2l0ZWRFbnRpdGllcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGFkZEVudGl0eSh0aGlzLCBwcm9jZXNzZWRFbnRpdHksIGlkKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIHZhbGlkYXRlKHByb2Nlc3NlZEVudGl0eTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIHRoaXMuYXV0b21hdGljVmFsaWRhdGlvbiAhPT0gJ3NpbGVudCdcbiAgICApIHtcbiAgICAgIGNvbnN0IGtleXNPZlJlY29yZCA9IG5ldyBTZXQoT2JqZWN0LmtleXModGhpcy5kZWZhdWx0cykpO1xuICAgICAgY29uc3Qga2V5c09mUHJvcHMgPSBPYmplY3Qua2V5cyhwcm9jZXNzZWRFbnRpdHkpO1xuICAgICAgY29uc3QgW2ZvdW5kLCBtaXNzaW5nLCB1bmV4cGVjdGVkXSA9IFtbXSwgW10sIFtdXSBhcyBbXG4gICAgICAgIHN0cmluZ1tdLFxuICAgICAgICBzdHJpbmdbXSxcbiAgICAgICAgc3RyaW5nW10sXG4gICAgICBdO1xuICAgICAgZm9yIChjb25zdCBrZXlPZlByb3BzIG9mIGtleXNPZlByb3BzKSB7XG4gICAgICAgIGlmIChrZXlzT2ZSZWNvcmQuaGFzKGtleU9mUHJvcHMpKSB7XG4gICAgICAgICAgZm91bmQucHVzaChrZXlPZlByb3BzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1bmV4cGVjdGVkLnB1c2goa2V5T2ZQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5T2ZSZWNvcmQgb2Yga2V5c09mUmVjb3JkKSB7XG4gICAgICAgIGlmICghZm91bmQuaW5jbHVkZXMoa2V5T2ZSZWNvcmQpKSB7XG4gICAgICAgICAgbWlzc2luZy5wdXNoKGtleU9mUmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBvbmx5IGJvdGhlciB3aXRoIHRoaXMgaWYgdGhleSB1c2VkICphbnkqIGRlZmF1bHRzXG4gICAgICBpZiAoa2V5c09mUmVjb3JkLnNpemUpIHtcbiAgICAgICAgY29uc3QgdG9vTWFueVVuZXhwZWN0ZWQgPVxuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgY29tcGFyZWQgdG8gbWVtYmVycyBpbiByZXNwb25zZVxuICAgICAgICAgIE1hdGgubWF4KGtleXNPZlByb3BzLmxlbmd0aCAvIDIsIDEpIDw9IHVuZXhwZWN0ZWQubGVuZ3RoICYmXG4gICAgICAgICAgLy8gdW5leHBlY3RlZCBjb21wYXJlZCB0byB3aGF0IHdlIHNwZWNpZmllZFxuICAgICAgICAgIGtleXNPZlJlY29yZC5zaXplID4gTWF0aC5tYXgodW5leHBlY3RlZC5sZW5ndGgsIDIpICYmXG4gICAgICAgICAgLy8gYXMgd2UgZmluZCBtb3JlIGFuZCBtb3JlIGJlIG1vcmUgZWFzaWx5IGFzc3VyZWQgaXQgaXMgY29ycmVjdFxuICAgICAgICAgIGZvdW5kLmxlbmd0aCAqKiAxLjUgLyAyIDw9IHVuZXhwZWN0ZWQubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb3VuZE5vdGhpbmcgPSBmb3VuZC5sZW5ndGggPCBNYXRoLm1pbigxLCBrZXlzT2ZSZWNvcmQuc2l6ZSAvIDIpO1xuICAgICAgICAvLyBpZiB3ZSBmaW5kIG5vdGhpbmcgKHdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgbWVtYmVyIGZvciBhIHBrKVxuICAgICAgICAvLyBvciB3ZSBmaW5kIHRvbyBtYW55IHVuZXhwZWN0ZWQgbWVtYmVyc1xuICAgICAgICBpZiAodG9vTWFueVVuZXhwZWN0ZWQgfHwgZm91bmROb3RoaW5nKSB7XG4gICAgICAgICAgbGV0IGV4dHJhID0gJyc7XG4gICAgICAgICAgbGV0IHJlYXNvbiA9ICdzdWJzdGFudGlhbGx5IGRpZmZlcmVudCB0aGFuIGV4cGVjdGVkIGtleXMnO1xuICAgICAgICAgIGlmIChmb3VuZE5vdGhpbmcpIHtcbiAgICAgICAgICAgIGV4dHJhICs9IGBcXG4gICAgTWlzc2luZzogJHttaXNzaW5nfWA7XG4gICAgICAgICAgICByZWFzb24gPSAnbm8gbWF0Y2hpbmcga2V5cyBmb3VuZCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0b29NYW55VW5leHBlY3RlZCkge1xuICAgICAgICAgICAgZXh0cmEgKz0gYFxcbiAgICBVbmV4cGVjdGVkIGtleXM6ICR7dW5leHBlY3RlZH1gO1xuICAgICAgICAgICAgcmVhc29uID0gJ2EgbGFyZ2UgbnVtYmVyIG9mIHVuZXhwZWN0ZWQga2V5cyBmb3VuZCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSAke1xuICAgICAgICAgICAgdGhpcy5uYW1lXG4gICAgICAgICAgfSB3aXRoICR7cmVhc29ufVxuXG4gIFRoaXMgaXMgbGlrZWx5IGR1ZSB0byBhIG1hbGZvcm1lZCByZXNwb25zZS5cbiAgVHJ5IGluc3BlY3RpbmcgdGhlIG5ldHdvcmsgcmVzcG9uc2Ugb3IgZmV0Y2goKSByZXR1cm4gdmFsdWUuXG4gIE9yIHVzZSBkZWJ1Z2dpbmcgdG9vbHM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvZ3VpZGVzL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IHNjaGVtYXM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL3NjaGVtYVxuICBJZiB0aGlzIGlzIGEgbWlzdGFrZSwgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgYnkgc2V0dGluZyBzdGF0aWMgYXV0b21hdGljVmFsaWRhdGlvbiA9ICdzaWxlbnQnXG5cbiAgRXhwZWN0ZWQga2V5czpcbiAgICBGb3VuZDogJHtmb3VuZH0ke2V4dHJhfVxuICBWYWx1ZSAocHJvY2Vzc2VkKTogJHtKU09OLnN0cmluZ2lmeShwcm9jZXNzZWRFbnRpdHksIG51bGwsIDIpfWA7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGZvdW5kLmxlbmd0aCA+PSA0ICYmIHRvb01hbnlVbmV4cGVjdGVkKSB8fFxuICAgICAgICAgICAgdGhpcy5hdXRvbWF0aWNWYWxpZGF0aW9uID09PSAnd2FybidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5zY2hlbWEpKSB7XG4gICAgICAgIGlmICghT2JqZWN0Lmhhc093bihwcm9jZXNzZWRFbnRpdHksIGtleSkpIHtcbiAgICAgICAgICBpZiAoIU9iamVjdC5oYXNPd24odGhpcy5kZWZhdWx0cywga2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGBTY2hlbWEga2V5IGlzIG1pc3NpbmcgaW4gRW50aXR5XG5cbiAgQmUgc3VyZSBhbGwgc2NoZW1hIG1lbWJlcnMgYXJlIGFsc28gcGFydCBvZiB0aGUgZW50aXR5XG4gIE9yIHVzZSBkZWJ1Z2dpbmcgdG9vbHM6IGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvZ3VpZGVzL2RlYnVnZ2luZ1xuICBMZWFybiBtb3JlIGFib3V0IG5lc3Rpbmcgc2NoZW1hczogaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9ndWlkZXMvbmVzdGVkLXJlc3BvbnNlXG5cbiAgRW50aXR5IGtleXM6ICR7T2JqZWN0LmtleXModGhpcy5kZWZhdWx0cyl9XG4gIFNjaGVtYSBrZXkobWlzc2luZyk6ICR7a2V5fVxuICBgO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpbmZlcihcbiAgICBhcmdzOiByZWFkb25seSBhbnlbXSxcbiAgICBpbmRleGVzOiBOb3JtYWxpemVkSW5kZXgsXG4gICAgcmVjdXJzZTogYW55LFxuICApOiBhbnkge1xuICAgIGlmICghYXJnc1swXSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJ10uaW5jbHVkZXModHlwZW9mIGFyZ3NbMF0pKSB7XG4gICAgICByZXR1cm4gYCR7YXJnc1swXX1gO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IHRoaXMucGsoYXJnc1swXSwgdW5kZWZpbmVkLCAnJyk7XG4gICAgLy8gV2FzIGFibGUgdG8gaW5mZXIgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5IGZyb20gcGFyYW1zXG4gICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09ICcnKSByZXR1cm4gaWQ7XG4gICAgLy8gbm93IGF0dGVtcHQgbG9va3VwIGluIGluZGV4ZXNcbiAgICBjb25zdCBpbmRleE5hbWUgPSBpbmRleEZyb21QYXJhbXMoYXJnc1swXSwgdGhpcy5pbmRleGVzKTtcbiAgICBpZiAoaW5kZXhOYW1lICYmIGluZGV4ZXNbdGhpcy5rZXldKSB7XG4gICAgICAvLyAnYXMgUmVjb3JkPHN0cmluZywgYW55Pic6IGluZGV4TmFtZSBjYW4gb25seSBiZSBmb3VuZCBpZiBwYXJhbXMgaXMgYSBzdHJpbmcga2V5J2Qgb2JqZWN0XG4gICAgICBjb25zdCBpZCA9XG4gICAgICAgIGluZGV4ZXNbdGhpcy5rZXldW2luZGV4TmFtZV1bXG4gICAgICAgICAgKGFyZ3NbMF0gYXMgUmVjb3JkPHN0cmluZywgYW55PilbaW5kZXhOYW1lXVxuICAgICAgICBdO1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhdGljIGV4cGlyZXNBdChcbiAgICBtZXRhOiB7IGV4cGlyZXNBdDogbnVtYmVyOyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgaW5wdXQ6IGFueSxcbiAgKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbWV0YS5leHBpcmVzQXQ7XG4gIH1cblxuICBzdGF0aWMgZGVub3JtYWxpemU8VCBleHRlbmRzIHR5cGVvZiBFbnRpdHk+KFxuICAgIHRoaXM6IFQsXG4gICAgaW5wdXQ6IGFueSxcbiAgICB1bnZpc2l0OiBVbnZpc2l0RnVuY3Rpb24sXG4gICk6IFtkZW5vcm1hbGl6ZWQ6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+LCBmb3VuZDogYm9vbGVhbiwgc3VzcGVuZDogYm9vbGVhbl0ge1xuICAgIC8vIFRPRE86IHJlbW92ZSBjb2RlY292IGlnbm9yZSBvbmNlIGRlbm9ybWFsaXplIGlzIG1vZGlmaWVkIHRvIGV4cGVjdCB0aGlzXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiBbdW5kZWZpbmVkLCB0cnVlLCB0cnVlXSBhcyBhbnk7XG4gICAgfVxuICAgIGlmIChpc0ltbXV0YWJsZShpbnB1dCkpIHtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlKChpbnB1dCBhcyBhbnkpLnRvSlMoKSkpXG4gICAgICAgIHJldHVybiBbdW5kZWZpbmVkIGFzIGFueSwgZmFsc2UsIHRydWVdO1xuICAgICAgLy8gTmVlZCB0byBzZXQgdGhpcyBmaXJzdCBzbyB0aGF0IGlmIGl0IGlzIHJlZmVyZW5jZWQgZnVydGhlciB3aXRoaW4gdGhlXG4gICAgICAvLyBkZW5vcm1hbGl6YXRpb24gdGhlIHJlZmVyZW5jZSB3aWxsIGFscmVhZHkgZXhpc3QuXG4gICAgICB1bnZpc2l0LnNldExvY2FsPy4oaW5wdXQpO1xuICAgICAgY29uc3QgW2Rlbm9ybUVudGl0eSwgZm91bmQsIGRlbGV0ZWRdID0gZGVub3JtYWxpemVJbW11dGFibGUoXG4gICAgICAgIHRoaXMuc2NoZW1hLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgdW52aXNpdCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gW3RoaXMuZnJvbUpTKGRlbm9ybUVudGl0eS50b09iamVjdCgpKSwgZm91bmQsIGRlbGV0ZWRdO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWxpZGF0ZShpbnB1dCkpIHtcbiAgICAgIHJldHVybiBbdW5kZWZpbmVkIGFzIGFueSwgZmFsc2UsIHRydWVdO1xuICAgIH1cbiAgICBjb25zdCBlbnRpdHlDb3B5OiBhbnkgPSB0aGlzLmZyb21KUyhpbnB1dCk7XG4gICAgLy8gTmVlZCB0byBzZXQgdGhpcyBmaXJzdCBzbyB0aGF0IGlmIGl0IGlzIHJlZmVyZW5jZWQgZnVydGhlciB3aXRoaW4gdGhlXG4gICAgLy8gZGVub3JtYWxpemF0aW9uIHRoZSByZWZlcmVuY2Ugd2lsbCBhbHJlYWR5IGV4aXN0LlxuICAgIHVudmlzaXQuc2V0TG9jYWw/LihlbnRpdHlDb3B5KTtcblxuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICAvLyBub3RlOiBpdGVyYXRpb24gb3JkZXIgbXVzdCBiZSBzdGFibGVcbiAgICBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5zY2hlbWFba2V5XTtcbiAgICAgIGNvbnN0IG5leHRJbnB1dCA9IE9iamVjdC5oYXNPd24oaW5wdXQsIGtleSlcbiAgICAgICAgPyAoaW5wdXQgYXMgYW55KVtrZXldXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgW3ZhbHVlLCAsIGRlbGV0ZWRJdGVtXSA9IHVudmlzaXQobmV4dElucHV0LCBzY2hlbWEpO1xuXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0gJiYgIShPYmplY3QuaGFzT3duKGlucHV0LCBrZXkpICYmICF0aGlzLmRlZmF1bHRzW2tleV0pKSB7XG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5oYXNPd24oaW5wdXQsIGtleSkgJiYgKGlucHV0IGFzIGFueSlba2V5XSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXQoZW50aXR5Q29weSwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW2VudGl0eUNvcHksIHRydWUsIGRlbGV0ZWRdO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNsYXJlIHN0YXRpYyBfX2RlZmF1bHRzOiBhbnk7XG4gIC8qKiBBbGwgaW5zdGFuY2UgZGVmYXVsdHMgc2V0ICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZ2V0IGRlZmF1bHRzKCkge1xuICAgIGlmICghT2JqZWN0Lmhhc093bih0aGlzLCAnX19kZWZhdWx0cycpKVxuICAgICAgdGhpcy5fX2RlZmF1bHRzID0gbmV3ICh0aGlzIGFzIGFueSkoKTtcbiAgICByZXR1cm4gdGhpcy5fX2RlZmF1bHRzO1xuICB9XG5cbiAgLyoqIFVzZWQgYnkgZGVub3JtYWxpemUgdG8gc2V0IG5lc3RlZCBtZW1iZXJzICovXG4gIHByb3RlY3RlZCBzdGF0aWMgc2V0KGVudGl0eTogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGVudGl0eVtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNvbnN0IHN1cGVyRnJvbSA9IEVudGl0eS5mcm9tSlM7XG4gIC8vIGZvciB0aG9zZSBub3QgdXNpbmcgVHlwZVNjcmlwdCB0aGlzIGlzIGEgZ29vZCBjYXRjaCB0byBlbnN1cmUgdGhleSBhcmUgZGVmaW5pbmdcbiAgLy8gdGhlIGFic3RyYWN0IG1lbWJlcnNcbiAgRW50aXR5LmZyb21KUyA9IGZ1bmN0aW9uIGZyb21KUzxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eT4oXG4gICAgdGhpczogVCxcbiAgICBwcm9wczogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+IHtcbiAgICBpZiAoKHRoaXMgYXMgYW55KS5wcm90b3R5cGUucGsgPT09IHVuZGVmaW5lZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGNvbnN0cnVjdCBvbiBhYnN0cmFjdCB0eXBlcycpO1xuICAgIHJldHVybiBzdXBlckZyb20uY2FsbCh0aGlzLCBwcm9wcykgYXMgYW55O1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmRleEZyb21QYXJhbXM8SSBleHRlbmRzIHN0cmluZz4oXG4gIHBhcmFtczogUmVhZG9ubHk8b2JqZWN0PixcbiAgaW5kZXhlcz86IFJlYWRvbmx5PElbXT4sXG4pIHtcbiAgaWYgKCFpbmRleGVzKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gaW5kZXhlcy5maW5kKGluZGV4ID0+IE9iamVjdC5oYXNPd24ocGFyYW1zLCBpbmRleCkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxTQUFTQSxXQUFXLEVBQUVDLG9CQUFvQixRQUFRLHFCQUFxQjtBQUl2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBZUMsTUFBTSxDQUFDO0VBQ25DLE9BQU9DLE1BQU0sR0FBRztJQUNkLE9BQU87TUFDTEMsSUFBSSxFQUFFLElBQUksQ0FBQ0EsSUFBSTtNQUNmQyxNQUFNLEVBQUUsSUFBSSxDQUFDQSxNQUFNO01BQ25CQyxHQUFHLEVBQUUsSUFBSSxDQUFDQTtJQUNaLENBQUM7RUFDSDs7RUFFQTs7RUFXQTtFQUNBLFdBQVdBLEdBQUcsR0FBVztJQUN2QjtJQUNBLElBQ0VDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssWUFBWSxLQUNwQyxJQUFJLENBQUNMLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDQSxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQ0EsSUFBSSxLQUFLLE9BQU8sQ0FBQyxFQUVyRSxNQUFNLElBQUlNLEtBQUssQ0FDYiw4REFBOEQsQ0FDL0Q7SUFDSCxPQUFPLElBQUksQ0FBQ04sSUFBSTtFQUNsQjs7RUFFQTs7RUFhQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLE9BQU9PLEVBQUUsQ0FFUEMsS0FBdUMsRUFDdkNDLE1BQVksRUFDWlAsR0FBWSxFQUNRO0lBQ3BCLE9BQU8sSUFBSSxDQUFDUSxTQUFTLENBQUNILEVBQUUsQ0FBQ0ksSUFBSSxDQUFDSCxLQUFLLEVBQUVDLE1BQU0sRUFBRVAsR0FBRyxDQUFDO0VBQ25EOztFQUVBO0VBQ0EsT0FBT1UsV0FBVyxDQUNoQkMsWUFBaUQsRUFDakRDLFlBQWlELEVBQ2pEQyxRQUFhLEVB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 |
{ | ||
"name": "@rest-hooks/endpoint", | ||
"version": "3.2.7", | ||
"version": "3.2.8", | ||
"description": "Declarative Network Interface Definitions", | ||
@@ -120,3 +120,3 @@ "sideEffects": false, | ||
}, | ||
"gitHead": "8d55a3e12e62da52f863a9e14bcb52615431ceea" | ||
"gitHead": "365bf04cc2dcef81a87d4c830c0a6c689eb32044" | ||
} |
@@ -24,3 +24,3 @@ import nock from 'nock'; | ||
res.json(), | ||
) as Promise<typeof payload[]>; | ||
) as Promise<(typeof payload)[]>; | ||
}; | ||
@@ -550,3 +550,3 @@ const fetchAsset = ({ symbol }: { symbol: string }) => | ||
); | ||
const sch: typeof User[] = UserDetail.schema; | ||
const sch: (typeof User)[] = UserDetail.schema; | ||
const s: undefined = UserDetail.sideEffect; | ||
@@ -553,0 +553,0 @@ UserDetail.random; |
@@ -6,5 +6,5 @@ // eslint-env jest | ||
import denormalize from './denormalize'; | ||
import { schema, AbstractInstanceType } from '../..'; | ||
import { DELETED } from '../../special'; | ||
import denormalize from './denormalize'; | ||
@@ -11,0 +11,0 @@ let dateSpy: jest.SpyInstance<number, []>; |
@@ -6,4 +6,4 @@ // eslint-env jest | ||
import denormalize from './denormalize'; | ||
import { schema } from '../../'; | ||
import denormalize from './denormalize'; | ||
@@ -10,0 +10,0 @@ let dateSpy; |
@@ -6,6 +6,6 @@ // eslint-env jest | ||
import denormalize from './denormalize'; | ||
import { schema } from '../../'; | ||
import { DELETED } from '../../special'; | ||
import Entity from '../Entity'; | ||
import denormalize from './denormalize'; | ||
@@ -12,0 +12,0 @@ let dateSpy: jest.SpyInstance; |
@@ -8,6 +8,6 @@ // eslint-env jest | ||
import denormalize from './denormalize'; | ||
import { AbstractInstanceType } from '../../'; | ||
import { schema } from '../../'; | ||
import Entity from '../Entity'; | ||
import denormalize from './denormalize'; | ||
@@ -14,0 +14,0 @@ let dateSpy: jest.SpyInstance; |
@@ -6,5 +6,5 @@ // eslint-env jest | ||
import denormalize from './denormalize'; | ||
import { schema } from '../../'; | ||
import Entity from '../Entity'; | ||
import denormalize from './denormalize'; | ||
@@ -11,0 +11,0 @@ let dateSpy; |
@@ -5,4 +5,4 @@ // eslint-env jest | ||
import denormalize from './denormalize'; | ||
import { schema } from '../../'; | ||
import denormalize from './denormalize'; | ||
@@ -9,0 +9,0 @@ let dateSpy; |
@@ -7,4 +7,4 @@ // eslint-env jest | ||
import denormalize from './denormalize'; | ||
import { schema } from '../../'; | ||
import denormalize from './denormalize'; | ||
@@ -11,0 +11,0 @@ let dateSpy; |
// eslint-env jest | ||
import { IDEntity } from '__tests__/new'; | ||
import denormalize from './denormalize'; | ||
import Entity from '../Entity'; | ||
import validateRequired from '../validatRequired'; | ||
import denormalize from './denormalize'; | ||
@@ -8,0 +8,0 @@ let dateSpy: jest.SpyInstance; |
@@ -6,6 +6,6 @@ // eslint-env jest | ||
import denormalize from './denormalize'; | ||
import { schema } from '../../'; | ||
import { DELETED } from '../../special'; | ||
import Entity from '../Entity'; | ||
import denormalize from './denormalize'; | ||
@@ -12,0 +12,0 @@ let dateSpy; |
@@ -0,4 +1,4 @@ | ||
import ArraySchema from './Array.js'; | ||
import { EntityTable } from '../interface.js'; | ||
import { EntityInterface, EntityMap, SchemaFunction } from '../schema.js'; | ||
import ArraySchema from './Array.js'; | ||
@@ -5,0 +5,0 @@ /** |
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ | ||
import { isImmutable, denormalizeImmutable } from './ImmutableUtils.js'; | ||
import type { Schema, NormalizedIndex, UnvisitFunction } from '../interface.js'; | ||
import { AbstractInstanceType } from '../normal.js'; | ||
import { isImmutable, denormalizeImmutable } from './ImmutableUtils.js'; | ||
@@ -7,0 +7,0 @@ /** |
@@ -0,4 +1,4 @@ | ||
import ArraySchema from './Array.js'; | ||
import { EntityTable } from '../interface.js'; | ||
import { EntityInterface, EntityMap, SchemaFunction } from '../schema.js'; | ||
import ArraySchema from './Array.js'; | ||
/** | ||
@@ -5,0 +5,0 @@ * Retrieves all entities in cache |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
705693