@decaf-ts/for-nano 0.1.9 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/for-nano.cjs CHANGED
@@ -920,7 +920,7 @@
920
920
  * @const VERSION
921
921
  * @memberOf module:for-nano
922
922
  */
923
- const VERSION = "0.1.9";
923
+ const VERSION = "0.1.10";
924
924
 
925
925
  exports.NanoAdapter = NanoAdapter;
926
926
  exports.NanoFlavour = NanoFlavour;
@@ -921,7 +921,7 @@ NanoAdapter.decoration();
921
921
  * @const VERSION
922
922
  * @memberOf module:for-nano
923
923
  */
924
- const VERSION = "0.1.9";
924
+ const VERSION = "0.1.10";
925
925
 
926
926
  export { NanoAdapter, NanoFlavour, VERSION, createdByOnNanoCreateUpdate };
927
927
  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLW5hbm8uZXNtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyIsIi4uL3NyYy9OYW5vRGlzcGF0Y2gudHMiLCIuLi9zcmMvYWRhcHRlci50cyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWVyIGZvciB0aGUgTmFubyBkYXRhYmFzZSBmbGF2b3JcbiAqIEBzdW1tYXJ5IENvbnN0YW50IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGRhdGFiYXNlIHR5cGUgYXMgXCJuYW5vXCIgZm9yIHVzZSBpbiBhZGFwdGVyIHNlbGVjdGlvbiBhbmQgY29uZmlndXJhdGlvblxuICogQGNvbnN0IE5hbm9GbGF2b3VyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1uYW5vXG4gKi9cbmV4cG9ydCBjb25zdCBOYW5vRmxhdm91ciA9IFwibmFub1wiO1xuIiwiaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7XG4gIERhdGFiYXNlQ2hhbmdlc1Jlc3BvbnNlLFxuICBEYXRhYmFzZUNoYW5nZXNSZXN1bHRJdGVtLFxuICBSZXF1ZXN0RXJyb3IsXG59IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBPcGVyYXRpb25LZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlzcGF0Y2hlciBmb3IgTmFubyBkYXRhYmFzZSBjaGFuZ2UgZXZlbnRzXG4gKiBAc3VtbWFyeSBIYW5kbGVzIHRoZSBzdWJzY3JpcHRpb24gdG8gYW5kIHByb2Nlc3Npbmcgb2YgZGF0YWJhc2UgY2hhbmdlIGV2ZW50cyBmcm9tIGEgTmFubyBkYXRhYmFzZSxcbiAqIG5vdGlmeWluZyBvYnNlcnZlcnMgd2hlbiBkb2N1bWVudHMgYXJlIGNyZWF0ZWQsIHVwZGF0ZWQsIG9yIGRlbGV0ZWRcbiAqIEB0ZW1wbGF0ZSBEb2N1bWVudFNjb3BlIC0gVGhlIE5hbm8gZG9jdW1lbnQgc2NvcGUgdHlwZVxuICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIC0gVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGNoYW5nZSBmZWVkIHJlcXVlc3RzXG4gKiBAY2xhc3MgTmFub0Rpc3BhdGNoXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgZGlzcGF0Y2hlciBmb3IgYSBOYW5vIGRhdGFiYXNlXG4gKiBjb25zdCBkYiA9IHNlcnZlci5kYi51c2UoJ215X2RhdGFiYXNlJyk7XG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IE5hbm9BZGFwdGVyKGRiKTtcbiAqIGNvbnN0IGRpc3BhdGNoID0gbmV3IE5hbm9EaXNwYXRjaCgpO1xuICpcbiAqIC8vIFRoZSBkaXNwYXRjaGVyIHdpbGwgYXV0b21hdGljYWxseSBzdWJzY3JpYmUgdG8gY2hhbmdlc1xuICogLy8gYW5kIG5vdGlmeSBvYnNlcnZlcnMgd2hlbiBkb2N1bWVudHMgY2hhbmdlXG4gKiBgYGBcbiAqIEBtZXJtYWlkXG4gKiBjbGFzc0RpYWdyYW1cbiAqICAgY2xhc3MgRGlzcGF0Y2gge1xuICogICAgICtpbml0aWFsaXplKClcbiAqICAgICArdXBkYXRlT2JzZXJ2ZXJzKClcbiAqICAgfVxuICogICBjbGFzcyBOYW5vRGlzcGF0Y2gge1xuICogICAgIC1vYnNlcnZlckxhc3RVcGRhdGU/OiBzdHJpbmdcbiAqICAgICAtYXR0ZW1wdENvdW50ZXI6IG51bWJlclxuICogICAgIC10aW1lb3V0OiBudW1iZXJcbiAqICAgICArY29uc3RydWN0b3IodGltZW91dClcbiAqICAgICAjY2hhbmdlSGFuZGxlcigpXG4gKiAgICAgI2luaXRpYWxpemUoKVxuICogICB9XG4gKiAgIERpc3BhdGNoIDx8LS0gTmFub0Rpc3BhdGNoXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW5vRGlzcGF0Y2ggZXh0ZW5kcyBEaXNwYXRjaCB7XG4gIHByaXZhdGUgb2JzZXJ2ZXJMYXN0VXBkYXRlPzogc3RyaW5nO1xuICBwcml2YXRlIGF0dGVtcHRDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIHByaXZhdGUgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0aW1lb3V0ID0gNTAwMCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDbG9zZXMgdGhlIGRpc3BhdGNoZXJcbiAgICogQHN1bW1hcnkgU3RvcHMgdGhlIGRpc3BhdGNoZXIgYW5kIGNsZWFucyB1cCBhbnkgYWN0aXZlIHN1YnNjcmlwdGlvbnMgb3IgcmVzb3VyY2VzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGRpc3BhdGNoZXIgaGFzIGJlZW4gY2xvc2VkXG4gICAqL1xuICBvdmVycmlkZSBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gc3VwZXIuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUHJvY2Vzc2VzIGRhdGFiYXNlIGNoYW5nZSBldmVudHNcbiAgICogQHN1bW1hcnkgSGFuZGxlcyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgTmFubyBjaGFuZ2VzIGZlZWQsIHByb2Nlc3NlcyB0aGUgY2hhbmdlcyxcbiAgICogYW5kIG5vdGlmaWVzIG9ic2VydmVycyBhYm91dCBkb2N1bWVudCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7UmVxdWVzdEVycm9yIHwgbnVsbH0gZXJyb3IgLSBFcnJvciBvYmplY3QgaWYgdGhlIHJlcXVlc3QgZmFpbGVkXG4gICAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSBjaGFuZ2VzIHJlc3BvbnNlIGZyb20gTmFub1xuICAgKiBAcGFyYW0ge2FueX0gW2hlYWRlcnNdIC0gUmVzcG9uc2UgaGVhZGVycyAodW51c2VkKVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGFsbCBjaGFuZ2VzIGhhdmUgYmVlbiBwcm9jZXNzZWRcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgRCBhcyBOYW5vRGlzcGF0Y2hcbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExvZ2dlclxuICAgKiAgIHBhcnRpY2lwYW50IE8gYXMgT2JzZXJ2ZXJzXG4gICAqICAgTm90ZSBvdmVyIEQ6IFJlY2VpdmUgY2hhbmdlcyBmcm9tIE5hbm9cbiAgICogICBhbHQgRXJyb3IgaW4gcmVzcG9uc2VcbiAgICogICAgIEQtPj5MOiBMb2cgZXJyb3JcbiAgICogICAgIEQtLT4+RDogUmV0dXJuIGVhcmx5XG4gICAqICAgZW5kXG4gICAqICAgYWx0IFJlc3BvbnNlIGlzIHN0cmluZ1xuICAgKiAgICAgRC0+PkQ6IFBhcnNlIEpTT04gZnJvbSBzdHJpbmdcbiAgICogICBlbmRcbiAgICogICBELT4+RDogUHJvY2VzcyBjaGFuZ2VzXG4gICAqICAgRC0+PkQ6IEdyb3VwIGNoYW5nZXMgYnkgdGFibGUgYW5kIG9wZXJhdGlvblxuICAgKiAgIGxvb3AgRm9yIGVhY2ggdGFibGVcbiAgICogICAgIGxvb3AgRm9yIGVhY2ggb3BlcmF0aW9uXG4gICAqICAgICAgIEQtPj5POiB1cGRhdGVPYnNlcnZlcnModGFibGUsIG9wZXJhdGlvbiwgaWRzKVxuICAgKiAgICAgICBELT4+RDogVXBkYXRlIG9ic2VydmVyTGFzdFVwZGF0ZVxuICAgKiAgICAgICBELT4+TDogTG9nIHN1Y2Nlc3NmdWwgZGlzcGF0Y2hcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGNoYW5nZUhhbmRsZXIoXG4gICAgZXJyb3I6IFJlcXVlc3RFcnJvciB8IG51bGwsXG4gICAgcmVzcG9uc2U6IChEYXRhYmFzZUNoYW5nZXNSZXNwb25zZSB8IERhdGFiYXNlQ2hhbmdlc1Jlc3VsdEl0ZW0pW10gfCBzdHJpbmcsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGhlYWRlcnM/OiBhbnlcbiAgKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY2hhbmdlSGFuZGxlcik7XG4gICAgaWYgKGVycm9yKSByZXR1cm4gbG9nLmVycm9yKGBFcnJvciBpbiBjaGFuZ2UgcmVxdWVzdDogJHtlcnJvcn1gKTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSAoXG4gICAgICAgIHR5cGVvZiByZXNwb25zZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8gcmVzcG9uc2VcbiAgICAgICAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHIpID0+ICEhcilcbiAgICAgICAgICAgICAgLm1hcCgocikgPT4gSlNPTi5wYXJzZShyKSlcbiAgICAgICAgICA6IHJlc3BvbnNlXG4gICAgICApIGFzIERhdGFiYXNlQ2hhbmdlc1Jlc3BvbnNlW107XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgcmV0dXJuIGxvZy5lcnJvcihgRXJyb3IgcGFyc2luZyBjb3VjaGRiIGNoYW5nZSBmZWVkOiAke2V9YCk7XG4gICAgfVxuICAgIGNvbnN0IGNvdW50ID0gcmVzcG9uc2UubGVuZ3RoO1xuICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgJHtjb3VudH0gY2hhbmdlcy4gcHJvY2Vzc2luZy4uLmApO1xuICAgICAgY29uc3QgY2hhbmdlcyA9IHJlc3BvbnNlXG4gICAgICAgIC5tYXAoKHJlYywgaSkgPT4ge1xuICAgICAgICAgIGlmIChpID09PSBjb3VudCAtIDEpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlckxhc3RVcGRhdGUgPT09XG4gICAgICAgICAgICAgIChyZWMgYXMgRGF0YWJhc2VDaGFuZ2VzUmVzcG9uc2UpLmxhc3Rfc2VxXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICAgICAgICBgSW52YWxpZCBsYXN0IHVwZGF0ZSBjaGVjazogJHt0aGlzLm9ic2VydmVyTGFzdFVwZGF0ZX0gIT09ICR7KHJlYyBhcyBEYXRhYmFzZUNoYW5nZXNSZXNwb25zZSkubGFzdF9zZXF9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByID0gcmVjIGFzIERhdGFiYXNlQ2hhbmdlc1Jlc3VsdEl0ZW07XG4gICAgICAgICAgY29uc3QgW3RhYmxlLCBpZF0gPSByLmlkLnNwbGl0KENvdWNoREJLZXlzLlNFUEFSQVRPUik7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlOiB0YWJsZSxcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogci5kZWxldGVkXG4gICAgICAgICAgICAgID8gT3BlcmF0aW9uS2V5cy5ERUxFVEVcbiAgICAgICAgICAgICAgOiByLmNoYW5nZXNbci5jaGFuZ2VzLmxlbmd0aCAtIDFdLnJldi5zcGxpdChcIi1cIilbMF0gPT09IFwiMVwiXG4gICAgICAgICAgICAgICAgPyBPcGVyYXRpb25LZXlzLkNSRUFURVxuICAgICAgICAgICAgICAgIDogT3BlcmF0aW9uS2V5cy5VUERBVEUsXG4gICAgICAgICAgICBzdGVwOiByLmNoYW5nZXNbci5jaGFuZ2VzLmxlbmd0aCAtIDFdLnJldixcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChcbiAgICAgICAgICAgIGFjY3VtOiBSZWNvcmQ8XG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgUmVjb3JkPFxuICAgICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBpZHM6IFNldDxhbnk+O1xuICAgICAgICAgICAgICAgICAgc3RlcDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPixcbiAgICAgICAgICAgIHJcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGlmICghcikgcmV0dXJuIGFjY3VtO1xuICAgICAgICAgICAgY29uc3QgeyB0YWJsZSwgaWQsIG9wZXJhdGlvbiwgc3RlcCB9ID0gciBhcyB7XG4gICAgICAgICAgICAgIHRhYmxlOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbjogT3BlcmF0aW9uS2V5cztcbiAgICAgICAgICAgICAgc3RlcDogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICghYWNjdW1bdGFibGVdKSBhY2N1bVt0YWJsZV0gPSB7fTtcbiAgICAgICAgICAgIGlmICghYWNjdW1bdGFibGVdW29wZXJhdGlvbl0pXG4gICAgICAgICAgICAgIGFjY3VtW3RhYmxlXVtvcGVyYXRpb25dID0geyBpZHM6IG5ldyBTZXQoKSwgc3RlcDogc3RlcCB9O1xuICAgICAgICAgICAgYWNjdW1bdGFibGVdW29wZXJhdGlvbl0uaWRzLmFkZChpZCk7XG4gICAgICAgICAgICBhY2N1bVt0YWJsZV1bb3BlcmF0aW9uXS5zdGVwID0gc3RlcDtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHt9XG4gICAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgT2JqZWN0LmtleXMoY2hhbmdlcykpIHtcbiAgICAgICAgZm9yIChjb25zdCBvcCBvZiBPYmplY3Qua2V5cyhjaGFuZ2VzW3RhYmxlXSkpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVPYnNlcnZlcnModGFibGUsIG9wLCBbXG4gICAgICAgICAgICAgIC4uLmNoYW5nZXNbdGFibGVdW29wXS5pZHMudmFsdWVzKCksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXJMYXN0VXBkYXRlID0gY2hhbmdlc1t0YWJsZV1bb3BdLnN0ZXA7XG4gICAgICAgICAgICBsb2cudmVyYm9zZShgT2JzZXJ2ZXIgcmVmcmVzaCBkaXNwYXRjaGVkIGJ5ICR7b3B9IGZvciAke3RhYmxlfWApO1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBwa3M6ICR7QXJyYXkuZnJvbShjaGFuZ2VzW3RhYmxlXVtvcF0uaWRzLnZhbHVlcygpKX1gKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gZGlzcGF0Y2ggb2JzZXJ2ZXIgcmVmcmVzaCBmb3IgJHt0YWJsZX0sIG9wICR7b3B9OiAke2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBkaXNwYXRjaGVyIGFuZCBzdWJzY3JpYmVzIHRvIGRhdGFiYXNlIGNoYW5nZXNcbiAgICogQHN1bW1hcnkgU2V0cyB1cCB0aGUgY29udGludW91cyBjaGFuZ2VzIGZlZWQgc3Vic2NyaXB0aW9uIHRvIHRoZSBOYW5vIGRhdGFiYXNlXG4gICAqIGFuZCBoYW5kbGVzIHJlY29ubmVjdGlvbiBhdHRlbXB0cyBpZiB0aGUgY29ubmVjdGlvbiBmYWlsc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzdWJzY3JpcHRpb24gaXMgZXN0YWJsaXNoZWRcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgRCBhcyBOYW5vRGlzcGF0Y2hcbiAgICogICBwYXJ0aWNpcGFudCBTIGFzIHN1YnNjcmliZVRvQ291Y2hcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIERhdGFiYXNlXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMb2dnZXJcbiAgICogICBELT4+UzogQ2FsbCBzdWJzY3JpYmVUb0NvdWNoXG4gICAqICAgUy0+PlM6IENoZWNrIGFkYXB0ZXIgYW5kIG5hdGl2ZVxuICAgKiAgIGFsdCBObyBhZGFwdGVyIG9yIG5hdGl2ZVxuICAgKiAgICAgUy0tPj5TOiB0aHJvdyBJbnRlcm5hbEVycm9yXG4gICAqICAgZW5kXG4gICAqICAgUy0+PkRCOiBjaGFuZ2VzKG9wdGlvbnMsIGNoYW5nZUhhbmRsZXIpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIERCLS0+PlM6IFN1YnNjcmlwdGlvbiBlc3RhYmxpc2hlZFxuICAgKiAgICAgUy0tPj5EOiBQcm9taXNlIHJlc29sdmVzXG4gICAqICAgICBELT4+TDogTG9nIHN1Y2Nlc3NmdWwgc3Vic2NyaXB0aW9uXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgREItLT4+UzogRXJyb3JcbiAgICogICAgIFMtPj5TOiBJbmNyZW1lbnQgYXR0ZW1wdENvdW50ZXJcbiAgICogICAgIGFsdCBhdHRlbXB0Q291bnRlciA+IDNcbiAgICogICAgICAgUy0+Pkw6IExvZyBlcnJvclxuICAgKiAgICAgICBTLS0+PkQ6IFByb21pc2UgcmVqZWN0c1xuICAgKiAgICAgZWxzZSBhdHRlbXB0Q291bnRlciA8PSAzXG4gICAqICAgICAgIFMtPj5MOiBMb2cgcmV0cnlcbiAgICogICAgICAgUy0+PlM6IFdhaXQgdGltZW91dFxuICAgKiAgICAgICBTLT4+UzogUmVjdXJzaXZlIGNhbGwgdG8gc3Vic2NyaWJlVG9Db3VjaFxuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5pbml0aWFsaXplKTtcbiAgICBjb25zdCBzdWJMb2cgPSBsb2cuZm9yKHN1YnNjcmliZVRvQ291Y2gpO1xuICAgIGFzeW5jIGZ1bmN0aW9uIHN1YnNjcmliZVRvQ291Y2godGhpczogTmFub0Rpc3BhdGNoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBpZiAoIXRoaXMuYWRhcHRlcilcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE5vIGFkYXB0ZXIvbmF0aXZlIG9ic2VydmVkIGZvciBkaXNwYXRjaGApO1xuICAgICAgaWYgKHRoaXMuYWN0aXZlKSByZXR1cm47XG4gICAgICB0cnkge1xuICAgICAgICAodGhpcy5hZGFwdGVyIGFzIGFueSkuY2xpZW50LmNoYW5nZXMoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmVlZDogXCJjb250aW51b3VzXCIsXG4gICAgICAgICAgICBpbmNsdWRlX2RvY3M6IGZhbHNlLFxuICAgICAgICAgICAgc2luY2U6IHRoaXMub2JzZXJ2ZXJMYXN0VXBkYXRlIHx8IFwibm93XCIsXG4gICAgICAgICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLmNoYW5nZUhhbmRsZXIuYmluZCh0aGlzKSBhcyBhbnlcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgaWYgKCsrdGhpcy5hdHRlbXB0Q291bnRlciA+IDMpXG4gICAgICAgICAgcmV0dXJuIHN1YkxvZy5lcnJvcihgRmFpbGVkIHRvIHN1YnNjcmliZSB0byBjb3VjaGRiIGNoYW5nZXM6ICR7ZX1gKTtcbiAgICAgICAgc3ViTG9nLmluZm8oXG4gICAgICAgICAgYEZhaWxlZCB0byBzdWJzY3JpYmUgdG8gY291Y2hkYiBjaGFuZ2VzOiAke2V9LiBSZXRyeWluZyBpbiA1IHNlY29uZHMuLi5gXG4gICAgICAgICk7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmUpIHJldHVybjtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGhpcy50aW1lb3V0KSk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVUb0NvdWNoLmNhbGwodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIHN1YnNjcmliZVRvQ291Y2hcbiAgICAgIC5jYWxsKHRoaXMpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFN1YnNjcmliZWQgdG8gY291Y2hkYiBjaGFuZ2VzYCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gc3Vic2NyaWJlIHRvIGNvdWNoZGIgY2hhbmdlczogJHtlfWApO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIENvbmZsaWN0RXJyb3IsXG4gIENvbnRleHQsXG4gIEludGVybmFsRXJyb3IsXG4gIG9uQ3JlYXRlLFxuICBvbkNyZWF0ZVVwZGF0ZSxcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQge1xuICBDb3VjaERCQWRhcHRlcixcbiAgQ291Y2hEQktleXMsXG4gIENyZWF0ZUluZGV4UmVxdWVzdCxcbiAgZ2VuZXJhdGVJbmRleGVzLFxuICBNYW5nb1F1ZXJ5LFxuICBNYW5nb1Jlc3BvbnNlLFxuICB3cmFwRG9jdW1lbnRTY29wZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IE5hbm8gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7XG4gIERvY3VtZW50QnVsa1Jlc3BvbnNlLFxuICBEb2N1bWVudEdldFJlc3BvbnNlLFxuICBEb2N1bWVudEluc2VydFJlc3BvbnNlLFxuICBEb2N1bWVudFNjb3BlLFxuICBNYXliZURvY3VtZW50LFxuICBTZXJ2ZXJTY29wZSxcbn0gZnJvbSBcIm5hbm9cIjtcbmltcG9ydCB7XG4gIENvbnN0cnVjdG9yLFxuICBEZWNvcmF0aW9uLFxuICBNb2RlbCxcbiAgcHJvcE1ldGFkYXRhLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBOYW5vQ29uZmlnLCBOYW5vRmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgQWRhcHRlcixcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBSZWxhdGlvbnNNZXRhZGF0YSxcbiAgUmVwb3NpdG9yeSxcbiAgVW5zdXBwb3J0ZWRFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBOYW5vRmxhdm91ciB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTmFub1JlcG9zaXRvcnkgfSBmcm9tIFwiLi9OYW5vUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgTmFub0Rpc3BhdGNoIH0gZnJvbSBcIi4vTmFub0Rpc3BhdGNoXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNldHMgdGhlIGNyZWF0b3Igb3IgdXBkYXRlciBmaWVsZCBpbiBhIG1vZGVsIGJhc2VkIG9uIHRoZSB1c2VyIGluIHRoZSBjb250ZXh0XG4gKiBAc3VtbWFyeSBDYWxsYmFjayBmdW5jdGlvbiB1c2VkIGluIGRlY29yYXRvcnMgdG8gYXV0b21hdGljYWxseSBzZXQgdGhlIGNyZWF0ZWRfYnkgb3IgdXBkYXRlZF9ieSBmaWVsZHNcbiAqIHdpdGggdGhlIHVzZXJuYW1lIGZyb20gdGhlIGNvbnRleHQgd2hlbiBhIGRvY3VtZW50IGlzIGNyZWF0ZWQgb3IgdXBkYXRlZFxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUeXBlIGV4dGVuZGluZyBOYW5vUmVwb3NpdG9yeTxNPlxuICogQHRlbXBsYXRlIFYgLSBUeXBlIGV4dGVuZGluZyBSZWxhdGlvbnNNZXRhZGF0YVxuICogQHBhcmFtIHtSfSB0aGlzIC0gVGhlIHJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqIEBwYXJhbSB7Q29udGV4dDxOYW5vRmxhZ3M+fSBjb250ZXh0IC0gVGhlIG9wZXJhdGlvbiBjb250ZXh0IGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvblxuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIHJlbGF0aW9uIG1ldGFkYXRhXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBzZXQgd2l0aCB0aGUgdXNlcm5hbWVcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgYmVpbmcgY3JlYXRlZCBvciB1cGRhdGVkXG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVcbiAqIEBmdW5jdGlvbiBjcmVhdGVkQnlPbk5hbm9DcmVhdGVVcGRhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLW5hbm9cbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgRiBhcyBjcmVhdGVkQnlPbk5hbm9DcmVhdGVVcGRhdGVcbiAqICAgcGFydGljaXBhbnQgQyBhcyBDb250ZXh0XG4gKiAgIHBhcnRpY2lwYW50IE0gYXMgTW9kZWxcbiAqICAgRi0+PkM6IGdldChcInVzZXJcIilcbiAqICAgQy0tPj5GOiB1c2VyIG9iamVjdFxuICogICBGLT4+TTogc2V0IGtleSB0byB1c2VyLm5hbWVcbiAqICAgTm90ZSBvdmVyIEY6IElmIG5vIHVzZXIgaW4gY29udGV4dFxuICogICBGLS0+PkY6IHRocm93IFVuc3VwcG9ydGVkRXJyb3JcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZWRCeU9uTmFub0NyZWF0ZVVwZGF0ZTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgTmFub1JlcG9zaXRvcnk8TT4sXG4gIFYgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4oXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IENvbnRleHQ8TmFub0ZsYWdzPixcbiAgZGF0YTogVixcbiAga2V5OiBrZXlvZiBNLFxuICBtb2RlbDogTVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdXNlciA9IGNvbnRleHQuZ2V0KFwidXNlclwiKTtcbiAgICBtb2RlbFtrZXldID0gdXNlci5uYW1lIGFzIE1bdHlwZW9mIGtleV07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgICBcIk5vIFVzZXIgZm91bmQgaW4gY29udGV4dC4gUGxlYXNlIHByb3ZpZGUgYSB1c2VyIGluIHRoZSBjb250ZXh0XCJcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEFkYXB0ZXIgZm9yIGludGVyYWN0aW5nIHdpdGggTmFubyBkYXRhYmFzZXNcbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgc3RhbmRhcmRpemVkIGludGVyZmFjZSBmb3IgcGVyZm9ybWluZyBDUlVEIG9wZXJhdGlvbnMgb24gTmFubyBkYXRhYmFzZXMsXG4gKiBleHRlbmRpbmcgdGhlIENvdWNoREIgYWRhcHRlciB3aXRoIE5hbm8tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS4gVGhpcyBhZGFwdGVyIGhhbmRsZXMgZG9jdW1lbnRcbiAqIGNyZWF0aW9uLCByZWFkaW5nLCB1cGRhdGluZywgYW5kIGRlbGV0aW9uLCBhcyB3ZWxsIGFzIGJ1bGsgb3BlcmF0aW9ucyBhbmQgaW5kZXggbWFuYWdlbWVudC5cbiAqIEB0ZW1wbGF0ZSBEb2N1bWVudFNjb3BlIC0gVGhlIE5hbm8gZG9jdW1lbnQgc2NvcGUgdHlwZVxuICogQHRlbXBsYXRlIE5hbm9GbGFncyAtIENvbmZpZ3VyYXRpb24gZmxhZ3MgZm9yIE5hbm8gb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIENvbnRleHQgLSBDb250ZXh0IHR5cGUgZm9yIG9wZXJhdGlvbnNcbiAqIEBwYXJhbSB7RG9jdW1lbnRTY29wZTxhbnk+fSBzY29wZSAtIFRoZSBOYW5vIGRvY3VtZW50IHNjb3BlIHRvIHVzZSBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IFthbGlhc10gLSBPcHRpb25hbCBhbGlhcyBmb3IgdGhlIGFkYXB0ZXJcbiAqIEBjbGFzcyBOYW5vQWRhcHRlclxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENvbm5lY3QgdG8gYSBOYW5vIGRhdGFiYXNlXG4gKiBjb25zdCBzZXJ2ZXIgPSBOYW5vQWRhcHRlci5jb25uZWN0KCdhZG1pbicsICdwYXNzd29yZCcsICdsb2NhbGhvc3Q6NTk4NCcpO1xuICogY29uc3QgZGIgPSBzZXJ2ZXIuZGIudXNlKCdteV9kYXRhYmFzZScpO1xuICpcbiAqIC8vIENyZWF0ZSBhbiBhZGFwdGVyIGluc3RhbmNlXG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IE5hbm9BZGFwdGVyKGRiKTtcbiAqXG4gKiAvLyBVc2UgdGhlIGFkYXB0ZXIgZm9yIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIGNvbnN0IGRvY3VtZW50ID0gYXdhaXQgYWRhcHRlci5yZWFkKCd1c2VycycsICcxMjMnKTtcbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIGNsYXNzRGlhZ3JhbVxuICogICBjbGFzcyBDb3VjaERCQWRhcHRlciB7XG4gKiAgICAgK2ZsYWdzKClcbiAqICAgICArRGlzcGF0Y2goKVxuICogICAgICtpbmRleCgpXG4gKiAgICAgK2NyZWF0ZSgpXG4gKiAgICAgK3JlYWQoKVxuICogICAgICt1cGRhdGUoKVxuICogICAgICtkZWxldGUoKVxuICogICB9XG4gKiAgIGNsYXNzIE5hbm9BZGFwdGVyIHtcbiAqICAgICArZmxhZ3MoKVxuICogICAgICtEaXNwYXRjaCgpXG4gKiAgICAgK2luZGV4KClcbiAqICAgICArY3JlYXRlKClcbiAqICAgICArY3JlYXRlQWxsKClcbiAqICAgICArcmVhZCgpXG4gKiAgICAgK3JlYWRBbGwoKVxuICogICAgICt1cGRhdGUoKVxuICogICAgICt1cGRhdGVBbGwoKVxuICogICAgICtkZWxldGUoKVxuICogICAgICtkZWxldGVBbGwoKVxuICogICAgICtyYXcoKVxuICogICAgICtzdGF0aWMgY29ubmVjdCgpXG4gKiAgICAgK3N0YXRpYyBjcmVhdGVEYXRhYmFzZSgpXG4gKiAgICAgK3N0YXRpYyBkZWxldGVEYXRhYmFzZSgpXG4gKiAgICAgK3N0YXRpYyBjcmVhdGVVc2VyKClcbiAqICAgICArc3RhdGljIGRlbGV0ZVVzZXIoKVxuICogICAgICtzdGF0aWMgZGVjb3JhdGlvbigpXG4gKiAgIH1cbiAqICAgQ291Y2hEQkFkYXB0ZXIgPHwtLSBOYW5vQWRhcHRlclxuICovXG5leHBvcnQgY2xhc3MgTmFub0FkYXB0ZXIgZXh0ZW5kcyBDb3VjaERCQWRhcHRlcjxcbiAgTmFub0NvbmZpZyxcbiAgRG9jdW1lbnRTY29wZTxhbnk+LFxuICBOYW5vRmxhZ3MsXG4gIENvbnRleHQ8TmFub0ZsYWdzPlxuPiB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBOYW5vQ29uZmlnLCBhbGlhcz86IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBOYW5vRmxhdm91ciwgYWxpYXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTaHV0cyBkb3duIHRoZSBhZGFwdGVyIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IENsZWFucyB1cCBpbnRlcm5hbCByZXNvdXJjZXMgYW5kIGNsZWFycyB0aGUgY2FjaGVkIE5hbm8gY2xpZW50IGluc3RhbmNlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gc2h1dGRvd24gY29tcGxldGVzXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNodXRkb3duUHJveGllcygpO1xuICAgIGlmICh0aGlzLl9jbGllbnQpIHRoaXMuX2NsaWVudCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGF6aWx5IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlIE5hbm8gRG9jdW1lbnRTY29wZSBjbGllbnRcbiAgICogQHN1bW1hcnkgVXNlcyB0aGUgYWRhcHRlciBjb25maWd1cmF0aW9uIHRvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gYW5kIHdyYXAgYSBkYXRhYmFzZSBzY29wZSB3aXRoIGNyZWRlbnRpYWxzXG4gICAqIEByZXR1cm4ge0RvY3VtZW50U2NvcGU8YW55Pn0gVGhlIHJlYWR5LXRvLXVzZSBOYW5vIERvY3VtZW50U2NvcGUgZm9yIHRoZSBjb25maWd1cmVkIGRhdGFiYXNlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q2xpZW50KCkge1xuICAgIGNvbnN0IHsgdXNlciwgcGFzc3dvcmQsIGhvc3QsIGRiTmFtZSB9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgY29uID0gTmFub0FkYXB0ZXIuY29ubmVjdCh1c2VyLCBwYXNzd29yZCwgaG9zdCk7XG4gICAgcmV0dXJuIHdyYXBEb2N1bWVudFNjb3BlKGNvbiwgZGJOYW1lLCB1c2VyLCBwYXNzd29yZCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBmbGFncyBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgc2V0IG9mIGZsYWdzIGZvciBhIHNwZWNpZmljIG9wZXJhdGlvbiwgaW5jbHVkaW5nIHVzZXIgaW5mb3JtYXRpb25cbiAgICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXN9IG9wZXJhdGlvbiAtIFRoZSBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkIChjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgZGVsZXRlKVxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBtb2RlbCAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge1BhcnRpYWw8TmFub0ZsYWdzPn0gZmxhZ3MgLSBQYXJ0aWFsIGZsYWdzIHRvIGJlIG1lcmdlZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPE5hbm9GbGFncz59IENvbXBsZXRlIGZsYWdzIGZvciB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmxhZ3M8TSBleHRlbmRzIE1vZGVsPihcbiAgICBvcGVyYXRpb246IE9wZXJhdGlvbktleXMsXG4gICAgbW9kZWw6IENvbnN0cnVjdG9yPE0+LFxuICAgIGZsYWdzOiBQYXJ0aWFsPE5hbm9GbGFncz5cbiAgKTogUHJvbWlzZTxOYW5vRmxhZ3M+IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhd2FpdCBzdXBlci5mbGFncyhvcGVyYXRpb24sIG1vZGVsLCBmbGFncyksIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogdGhpcy5jb25maWcudXNlcixcbiAgICAgIH0sXG4gICAgfSkgYXMgTmFub0ZsYWdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IE5hbm9EaXNwYXRjaCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgZGlzcGF0Y2hlciBmb3IgaGFuZGxpbmcgTmFuby1zcGVjaWZpYyBvcGVyYXRpb25zXG4gICAqIEByZXR1cm4ge05hbm9EaXNwYXRjaH0gQSBuZXcgTmFub0Rpc3BhdGNoIGluc3RhbmNlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgRGlzcGF0Y2goKTogTmFub0Rpc3BhdGNoIHtcbiAgICByZXR1cm4gbmV3IE5hbm9EaXNwYXRjaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGRhdGFiYXNlIGluZGV4ZXMgZm9yIG1vZGVsc1xuICAgKiBAc3VtbWFyeSBHZW5lcmF0ZXMgYW5kIGNyZWF0ZXMgaW5kZXhlcyBpbiB0aGUgTmFubyBkYXRhYmFzZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbW9kZWxzXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICogQHBhcmFtIG1vZGVscyAtIE1vZGVsIGNvbnN0cnVjdG9ycyB0byBjcmVhdGUgaW5kZXhlcyBmb3JcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgaW5kZXhlcyBhcmUgY3JlYXRlZFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIE5hbm9BZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgRyBhcyBnZW5lcmF0ZUluZGV4ZXNcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIERhdGFiYXNlXG4gICAqICAgQS0+Pkc6IGdlbmVyYXRlSW5kZXhlcyhtb2RlbHMpXG4gICAqICAgRy0tPj5BOiBpbmRleGVzXG4gICAqICAgbG9vcCBGb3IgZWFjaCBpbmRleFxuICAgKiAgICAgQS0+PkRCOiBjcmVhdGVJbmRleChpbmRleClcbiAgICogICAgIERCLS0+PkE6IHJlc3BvbnNlXG4gICAqICAgICBOb3RlIG92ZXIgQTogQ2hlY2sgaWYgaW5kZXggYWxyZWFkeSBleGlzdHNcbiAgICogICAgIGFsdCBJbmRleCBleGlzdHNcbiAgICogICAgICAgQS0tPj5BOiB0aHJvdyBDb25mbGljdEVycm9yXG4gICAqICAgICBlbmRcbiAgICogICBlbmRcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBpbmRleDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIC4uLm1vZGVsczogQ29uc3RydWN0b3I8TT5bXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpbmRleGVzOiBDcmVhdGVJbmRleFJlcXVlc3RbXSA9IGdlbmVyYXRlSW5kZXhlcyhtb2RlbHMpO1xuICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5kZXhlcykge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jbGllbnQuY3JlYXRlSW5kZXgoaW5kZXgpO1xuICAgICAgY29uc3QgeyByZXN1bHQsIGlkLCBuYW1lIH0gPSByZXM7XG4gICAgICBpZiAocmVzdWx0ID09PSBcImV4aXN0aW5nXCIpXG4gICAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKGBJbmRleCBmb3IgdGFibGUgJHtuYW1lfSB3aXRoIGlkICR7aWR9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGRvY3VtZW50IGluIHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBJbnNlcnRzIGEgbmV3IGRvY3VtZW50IGludG8gdGhlIE5hbm8gZGF0YWJhc2Ugd2l0aCB0aGUgcHJvdmlkZWQgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IGlkIC0gVGhlIGRvY3VtZW50IGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBtb2RlbCAtIFRoZSBkb2N1bWVudCBkYXRhIHRvIGluc2VydFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3JlYXRlZCBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIERhdGFiYXNlXG4gICAqICAgQS0+PkRCOiBpbnNlcnQobW9kZWwpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIERCLS0+PkE6IHJlc3BvbnNlIHdpdGggb2s9dHJ1ZVxuICAgKiAgICAgQS0+PkE6IGFzc2lnbk1ldGFkYXRhKG1vZGVsLCByZXNwb25zZS5yZXYpXG4gICAqICAgICBBLS0+PkE6IHJldHVybiBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgREItLT4+QTogZXJyb3JcbiAgICogICAgIEEtLT4+QTogdGhyb3cgcGFyc2VFcnJvcihlKVxuICAgKiAgIGVsc2UgTm90IE9LXG4gICAqICAgICBEQi0tPj5BOiByZXNwb25zZSB3aXRoIG9rPWZhbHNlXG4gICAqICAgICBBLS0+PkE6IHRocm93IEludGVybmFsRXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGxldCByZXNwb25zZTogRG9jdW1lbnRJbnNlcnRSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5pbnNlcnQobW9kZWwpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2Uub2spXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBpbnNlcnQgZG9jIGlkOiAke2lkfSBpbiB0YWJsZSAke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIHJldHVybiB0aGlzLmFzc2lnbk1ldGFkYXRhKG1vZGVsLCByZXNwb25zZS5yZXYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIG11bHRpcGxlIGRvY3VtZW50cyBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgSW5zZXJ0cyBtdWx0aXBsZSBkb2N1bWVudHMgaW50byB0aGUgTmFubyBkYXRhYmFzZSBpbiBhIHNpbmdsZSBidWxrIG9wZXJhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmdbXSB8IG51bWJlcltdfSBpZHMgLSBBcnJheSBvZiBkb2N1bWVudCBpZGVudGlmaWVyc1xuICAgKiBAcGFyYW0gbW9kZWxzIC0gQXJyYXkgb2YgZG9jdW1lbnQgZGF0YSB0byBpbnNlcnRcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBjcmVhdGVkIGRvY3VtZW50cyB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIERhdGFiYXNlXG4gICAqICAgQS0+PkRCOiBidWxrKHtkb2NzOiBtb2RlbHN9KVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBEQi0tPj5BOiByZXNwb25zZSBhcnJheVxuICAgKiAgICAgQS0+PkE6IENoZWNrIGlmIGFsbCByZXNwb25zZXMgaGF2ZSBubyBlcnJvcnNcbiAgICogICAgIGFsdCBBbGwgT0tcbiAgICogICAgICAgQS0+PkE6IGFzc2lnbk11bHRpcGxlTWV0YWRhdGEobW9kZWxzLCByZXZzKVxuICAgKiAgICAgICBBLS0+PkE6IHJldHVybiBkb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKiAgICAgZWxzZSBTb21lIGVycm9yc1xuICAgKiAgICAgICBBLT4+QTogQ29sbGVjdCBlcnJvciBtZXNzYWdlc1xuICAgKiAgICAgICBBLS0+PkE6IHRocm93IEludGVybmFsRXJyb3Igd2l0aCBjb2xsZWN0ZWQgbWVzc2FnZXNcbiAgICogICAgIGVuZFxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIERCLS0+PkE6IGVycm9yXG4gICAqICAgICBBLS0+PkE6IHRocm93IHBhcnNlRXJyb3IoZSlcbiAgICogICBlbmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IHN0cmluZ1tdIHwgbnVtYmVyW10sXG4gICAgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBsZXQgcmVzcG9uc2U6IERvY3VtZW50QnVsa1Jlc3BvbnNlW107XG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQuYnVsayh7IGRvY3M6IG1vZGVscyB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgaWYgKCFyZXNwb25zZS5ldmVyeSgocikgPT4gIXIuZXJyb3IpKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSByZXNwb25zZS5yZWR1Y2UoKGFjY3VtOiBzdHJpbmdbXSwgZWwsIGkpID0+IHtcbiAgICAgICAgaWYgKGVsLmVycm9yKVxuICAgICAgICAgIGFjY3VtLnB1c2goXG4gICAgICAgICAgICBgZWwgJHtpfTogJHtlbC5lcnJvcn0ke2VsLnJlYXNvbiA/IGAgLSAke2VsLnJlYXNvbn1gIDogXCJcIn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSwgW10pO1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZXJyb3JzLmpvaW4oXCJcXG5cIikpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFzc2lnbk11bHRpcGxlTWV0YWRhdGEoXG4gICAgICBtb2RlbHMsXG4gICAgICByZXNwb25zZS5tYXAoKHIpID0+IHIucmV2IGFzIHN0cmluZylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSBkb2N1bWVudCBmcm9tIHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBGZXRjaGVzIGEgc2luZ2xlIGRvY3VtZW50IGZyb20gdGhlIE5hbm8gZGF0YWJhc2UgYnkgaXRzIElEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gaWQgLSBUaGUgZG9jdW1lbnQgaWRlbnRpZmllclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmV0cmlldmVkIGRvY3VtZW50IHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBOYW5vQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IERCIGFzIE5hbm8gRGF0YWJhc2VcbiAgICogICBBLT4+QTogZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKVxuICAgKiAgIEEtPj5EQjogZ2V0KF9pZClcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgREItLT4+QTogcmVjb3JkXG4gICAqICAgICBBLT4+QTogYXNzaWduTWV0YWRhdGEocmVjb3JkLCByZWNvcmQuX3JldilcbiAgICogICAgIEEtLT4+QTogcmV0dXJuIGRvY3VtZW50IHdpdGggbWV0YWRhdGFcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBEQi0tPj5BOiBlcnJvclxuICAgKiAgICAgQS0tPj5BOiB0aHJvdyBwYXJzZUVycm9yKGUpXG4gICAqICAgZW5kXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyByZWFkKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgX2lkID0gdGhpcy5nZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQpO1xuICAgIGxldCByZWNvcmQ6IERvY3VtZW50R2V0UmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHJlY29yZCA9IGF3YWl0IHRoaXMuY2xpZW50LmdldChfaWQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3NpZ25NZXRhZGF0YShyZWNvcmQsIHJlY29yZC5fcmV2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIG11bHRpcGxlIGRvY3VtZW50cyBmcm9tIHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBGZXRjaGVzIG11bHRpcGxlIGRvY3VtZW50cyBmcm9tIHRoZSBOYW5vIGRhdGFiYXNlIGJ5IHRoZWlyIElEcyBpbiBhIHNpbmdsZSBvcGVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50Pn0gaWRzIC0gQXJyYXkgb2YgZG9jdW1lbnQgaWRlbnRpZmllcnNcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiByZXRyaWV2ZWQgZG9jdW1lbnRzIHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBOYW5vQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IERCIGFzIE5hbm8gRGF0YWJhc2VcbiAgICogICBBLT4+QTogTWFwIGlkcyB0byBnZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQpXG4gICAqICAgQS0+PkRCOiBmZXRjaCh7a2V5czogbWFwcGVkSWRzfSwge30pXG4gICAqICAgREItLT4+QTogcmVzdWx0c1xuICAgKiAgIEEtPj5BOiBQcm9jZXNzIGVhY2ggcmVzdWx0IHJvd1xuICAgKiAgIGxvb3AgRm9yIGVhY2ggcm93XG4gICAqICAgICBhbHQgUm93IGhhcyBlcnJvclxuICAgKiAgICAgICBBLS0+PkE6IHRocm93IEludGVybmFsRXJyb3JcbiAgICogICAgIGVsc2UgUm93IGhhcyBkb2N1bWVudFxuICAgKiAgICAgICBBLT4+QTogYXNzaWduTWV0YWRhdGEoZG9jLCBkb2MuX3JldilcbiAgICogICAgIGVsc2UgTm8gZG9jdW1lbnRcbiAgICogICAgICAgQS0tPj5BOiB0aHJvdyBJbnRlcm5hbEVycm9yXG4gICAqICAgICBlbmRcbiAgICogICBlbmRcbiAgICogICBBLS0+PkE6IHJldHVybiBkb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgcmVhZEFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IChzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpW11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goXG4gICAgICB7IGtleXM6IGlkcy5tYXAoKGlkKSA9PiB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCBhcyBhbnkpKSB9LFxuICAgICAge31cbiAgICApO1xuICAgIHJldHVybiByZXN1bHRzLnJvd3MubWFwKChyKSA9PiB7XG4gICAgICBpZiAoKHIgYXMgYW55KS5lcnJvcikgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKHIgYXMgYW55KS5lcnJvcik7XG4gICAgICBpZiAoKHIgYXMgYW55KS5kb2MpIHtcbiAgICAgICAgY29uc3QgcmVzID0gT2JqZWN0LmFzc2lnbih7fSwgKHIgYXMgYW55KS5kb2MpO1xuICAgICAgICByZXR1cm4gdGhpcy5hc3NpZ25NZXRhZGF0YShyZXMsIChyIGFzIGFueSkuZG9jW0NvdWNoREJLZXlzLlJFVl0pO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJTaG91bGQgYmUgaW1wb3NzaWJsZVwiKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlcyBhIGRvY3VtZW50IGluIHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBVcGRhdGVzIGFuIGV4aXN0aW5nIGRvY3VtZW50IGluIHRoZSBOYW5vIGRhdGFiYXNlIHdpdGggdGhlIHByb3ZpZGVkIGRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSBkb2N1bWVudCBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gbW9kZWwgLSBUaGUgdXBkYXRlZCBkb2N1bWVudCBkYXRhXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGRvY3VtZW50IHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBOYW5vQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IERCIGFzIE5hbm8gRGF0YWJhc2VcbiAgICogICBBLT4+REI6IGluc2VydChtb2RlbClcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgREItLT4+QTogcmVzcG9uc2Ugd2l0aCBvaz10cnVlXG4gICAqICAgICBBLT4+QTogYXNzaWduTWV0YWRhdGEobW9kZWwsIHJlc3BvbnNlLnJldilcbiAgICogICAgIEEtLT4+QTogcmV0dXJuIGRvY3VtZW50IHdpdGggbWV0YWRhdGFcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBEQi0tPj5BOiBlcnJvclxuICAgKiAgICAgQS0tPj5BOiB0aHJvdyBwYXJzZUVycm9yKGUpXG4gICAqICAgZWxzZSBOb3QgT0tcbiAgICogICAgIERCLS0+PkE6IHJlc3BvbnNlIHdpdGggb2s9ZmFsc2VcbiAgICogICAgIEEtLT4+QTogdGhyb3cgSW50ZXJuYWxFcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgbGV0IHJlc3BvbnNlOiBEb2N1bWVudEluc2VydFJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50Lmluc2VydChtb2RlbCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXNwb25zZS5vaylcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIHVwZGF0ZSBkb2MgaWQ6ICR7aWR9IGluIHRhYmxlICR7dGFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYXNzaWduTWV0YWRhdGEobW9kZWwsIHJlc3BvbnNlLnJldik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgbXVsdGlwbGUgZG9jdW1lbnRzIGluIHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBQZXJmb3JtcyBhIGJ1bGsgdXBkYXRlIG9wZXJhdGlvbiBvbiB0aGUgTmFubyBkYXRhYmFzZSBmb3IgdGhlIHByb3ZpZGVkIGRvY3VtZW50c1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmd8bnVtYmVyPn0gaWRzIC0gQXJyYXkgb2YgZG9jdW1lbnQgaWRlbnRpZmllcnNcbiAgICogQHBhcmFtIHtQcm9taXNlPEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+Pn0gbW9kZWxzIC0gQXJyYXkgb2YgdXBkYXRlZCBkb2N1bWVudCBkYXRhXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UHJvbWlzZTxBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgdXBkYXRlZCBkb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogc3RyaW5nW10gfCBudW1iZXJbXSxcbiAgICBtb2RlbHM6IFJlY29yZDxzdHJpbmcsIGFueT5bXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGxldCByZXNwb25zZTogRG9jdW1lbnRCdWxrUmVzcG9uc2VbXTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5idWxrKHsgZG9jczogbW9kZWxzIH0pO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICBpZiAoIXJlc3BvbnNlLmV2ZXJ5KChyKSA9PiAhci5lcnJvcikpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3BvbnNlLnJlZHVjZSgoYWNjdW06IHN0cmluZ1tdLCBlbCwgaSkgPT4ge1xuICAgICAgICBpZiAoZWwuZXJyb3IpXG4gICAgICAgICAgYWNjdW0ucHVzaChcbiAgICAgICAgICAgIGBlbCAke2l9OiAke2VsLmVycm9yfSR7ZWwucmVhc29uID8gYCAtICR7ZWwucmVhc29ufWAgOiBcIlwifWBcbiAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICB9LCBbXSk7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlcnJvcnMuam9pbihcIlxcblwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXNzaWduTXVsdGlwbGVNZXRhZGF0YShcbiAgICAgIG1vZGVscyxcbiAgICAgIHJlc3BvbnNlLm1hcCgocikgPT4gci5yZXYgYXMgc3RyaW5nKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgYSBkb2N1bWVudCBmcm9tIHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBSZW1vdmVzIGEgc2luZ2xlIGRvY3VtZW50IGZyb20gdGhlIE5hbm8gZGF0YWJhc2UgYnkgaXRzIElEIGFuZCByZXR1cm5zIHRoZSBkZWxldGVkIGRvY3VtZW50IG1ldGFkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGlkIC0gVGhlIGRvY3VtZW50IGlkZW50aWZpZXJcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRlbGV0ZWQgZG9jdW1lbnQgd2l0aCBtZXRhZGF0YVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgZGVsZXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgX2lkID0gdGhpcy5nZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQpO1xuICAgIGxldCByZWNvcmQ6IERvY3VtZW50R2V0UmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHJlY29yZCA9IGF3YWl0IHRoaXMuY2xpZW50LmdldChfaWQpO1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQuZGVzdHJveShfaWQsIHJlY29yZC5fcmV2KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXNzaWduTWV0YWRhdGEocmVjb3JkLCByZWNvcmQuX3Jldik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgbXVsdGlwbGUgZG9jdW1lbnRzIGZyb20gdGhlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IFBlcmZvcm1zIGEgYnVsayBkZWxldGUgb3BlcmF0aW9uIGZvciB0aGUgcHJvdmlkZWQgSURzIGFuZCByZXR1cm5zIHRoZSBkZWxldGVkIGRvY3VtZW50cyBtZXRhZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmd8bnVtYmVyfGJpZ2ludD59IGlkcyAtIEFycmF5IG9mIGRvY3VtZW50IGlkZW50aWZpZXJzIHRvIGRlbGV0ZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+Pn0gQSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgZGVsZXRlZCBkb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgZGVsZXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogKHN0cmluZyB8IG51bWJlciB8IGJpZ2ludClbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChcbiAgICAgIHsga2V5czogaWRzLm1hcCgoaWQpID0+IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkIGFzIGFueSkpIH0sXG4gICAgICB7fVxuICAgICk7XG4gICAgY29uc3QgZGVsZXRpb246IERvY3VtZW50QnVsa1Jlc3BvbnNlW10gPSBhd2FpdCB0aGlzLmNsaWVudC5idWxrKHtcbiAgICAgIGRvY3M6IHJlc3VsdHMucm93cy5tYXAoKHIpID0+IHtcbiAgICAgICAgKHIgYXMgYW55KVtDb3VjaERCS2V5cy5ERUxFVEVEXSA9IHRydWU7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSksXG4gICAgfSk7XG4gICAgZGVsZXRpb24uZm9yRWFjaCgoZDogRG9jdW1lbnRCdWxrUmVzcG9uc2UpID0+IHtcbiAgICAgIGlmIChkLmVycm9yKSBjb25zb2xlLmVycm9yKGQuZXJyb3IpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHRzLnJvd3MubWFwKChyKSA9PiB7XG4gICAgICBpZiAoKHIgYXMgYW55KS5lcnJvcikgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKHIgYXMgYW55KS5lcnJvcik7XG4gICAgICBpZiAoKHIgYXMgYW55KS5kb2MpIHtcbiAgICAgICAgY29uc3QgcmVzID0gT2JqZWN0LmFzc2lnbih7fSwgKHIgYXMgYW55KS5kb2MpO1xuICAgICAgICByZXR1cm4gdGhpcy5hc3NpZ25NZXRhZGF0YShyZXMsIChyIGFzIGFueSkuZG9jW0NvdWNoREJLZXlzLlJFVl0pO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJTaG91bGQgYmUgaW1wb3NzaWJsZVwiKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgYSByYXcgTWFuZ28gcXVlcnkgYWdhaW5zdCB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgUnVucyBhIE1hbmdvIHF1ZXJ5IHVzaW5nIE5hbm8ncyBmaW5kIEFQSSBhbmQgb3B0aW9uYWxseSByZXR1cm5zIG9ubHkgdGhlIGRvY3VtZW50cyBhcnJheVxuICAgKiBAdGVtcGxhdGUgUiAtIFRoZSBleHBlY3RlZCByZXNwb25zZSBvciBkb2N1bWVudCBhcnJheSB0eXBlXG4gICAqIEBwYXJhbSB7TWFuZ29RdWVyeX0gcmF3SW5wdXQgLSBUaGUgTWFuZ28gcXVlcnkgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtkb2NzT25seT10cnVlXSAtIFdoZXRoZXIgdG8gcmV0dXJuIG9ubHkgdGhlIGRvY3MgYXJyYXkgb3IgdGhlIGZ1bGwgcmVzcG9uc2VcbiAgICogQHJldHVybiB7UHJvbWlzZTxSPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHF1ZXJ5IHJlc3VsdCwgc2hhcGVkIGFjY29yZGluZyB0byBkb2NzT25seVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgcmF3PFI+KHJhd0lucHV0OiBNYW5nb1F1ZXJ5LCBkb2NzT25seSA9IHRydWUpOiBQcm9taXNlPFI+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IE1hbmdvUmVzcG9uc2U8Uj4gPSBhd2FpdCB0aGlzLmNsaWVudC5maW5kKHJhd0lucHV0KTtcbiAgICAgIGlmIChyZXNwb25zZS53YXJuaW5nKSBjb25zb2xlLndhcm4ocmVzcG9uc2Uud2FybmluZyk7XG4gICAgICBpZiAoZG9jc09ubHkpIHJldHVybiByZXNwb25zZS5kb2NzIGFzIFI7XG4gICAgICByZXR1cm4gcmVzcG9uc2UgYXMgUjtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEVzdGFibGlzaGVzIGEgY29ubmVjdGlvbiB0byBhIE5hbm8gKENvdWNoREIpIHNlcnZlclxuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGFuZCByZXR1cm5zIGEgTmFubyBTZXJ2ZXJTY29wZSB1c2luZyB0aGUgZ2l2ZW4gY3JlZGVudGlhbHMsIGhvc3QsIGFuZCBwcm90b2NvbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlciAtIFVzZXJuYW1lIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQgdXNlZCBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtob3N0PVwibG9jYWxob3N0OjU5ODRcIl0gLSBIb3N0IGFuZCBwb3J0IG9mIHRoZSBDb3VjaERCIHNlcnZlclxuICAgKiBAcGFyYW0geyhcImh0dHBcInxcImh0dHBzXCIpfSBbcHJvdG9jb2w9XCJodHRwXCJdIC0gUHJvdG9jb2wgdG8gdXNlIGZvciB0aGUgY29ubmVjdGlvblxuICAgKiBAcmV0dXJuIHtTZXJ2ZXJTY29wZX0gVGhlIE5hbm8gU2VydmVyU2NvcGUgY29ubmVjdGlvblxuICAgKi9cbiAgc3RhdGljIGNvbm5lY3QoXG4gICAgdXNlcjogc3RyaW5nLFxuICAgIHBhc3M6IHN0cmluZyxcbiAgICBob3N0ID0gXCJsb2NhbGhvc3Q6NTk4NFwiLFxuICAgIHByb3RvY29sOiBcImh0dHBcIiB8IFwiaHR0cHNcIiA9IFwiaHR0cFwiXG4gICk6IFNlcnZlclNjb3BlIHtcbiAgICByZXR1cm4gTmFubyhgJHtwcm90b2NvbH06Ly8ke3VzZXJ9OiR7cGFzc31AJHtob3N0fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGRhdGFiYXNlIG9uIHRoZSBOYW5vIHNlcnZlclxuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIG9uIHRoZSBjb25uZWN0ZWQgTmFubyBzZXJ2ZXJcbiAgICogQHBhcmFtIHtTZXJ2ZXJTY29wZX0gY29uIC0gVGhlIE5hbm8gc2VydmVyIGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgdG8gY3JlYXRlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGRhdGFiYXNlIGlzIGNyZWF0ZWRcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBOYW5vQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IERCIGFzIE5hbm8gU2VydmVyXG4gICAqICAgQS0+PkRCOiBkYi5jcmVhdGUobmFtZSlcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgREItLT4+QTogcmVzdWx0IHdpdGggb2s9dHJ1ZVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIERCLS0+PkE6IGVycm9yXG4gICAqICAgICBBLS0+PkE6IHRocm93IHBhcnNlRXJyb3IoZSlcbiAgICogICBlbHNlIE5vdCBPS1xuICAgKiAgICAgREItLT4+QTogcmVzdWx0IHdpdGggb2s9ZmFsc2VcbiAgICogICAgIEEtLT4+QTogdGhyb3cgcGFyc2VFcnJvcihlcnJvciwgcmVhc29uKVxuICAgKiAgIGVuZFxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZURhdGFiYXNlKGNvbjogU2VydmVyU2NvcGUsIG5hbWU6IHN0cmluZykge1xuICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY29uLmRiLmNyZWF0ZShuYW1lKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IENvdWNoREJBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgb2ssIGVycm9yLCByZWFzb24gfSA9IHJlc3VsdDtcbiAgICBpZiAoIW9rKSB0aHJvdyBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGVycm9yIGFzIHN0cmluZywgcmVhc29uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlcyBhIGRhdGFiYXNlIGZyb20gdGhlIE5hbm8gc2VydmVyXG4gICAqIEBzdW1tYXJ5IFJlbW92ZXMgYW4gZXhpc3RpbmcgZGF0YWJhc2Ugd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZnJvbSB0aGUgY29ubmVjdGVkIE5hbm8gc2VydmVyXG4gICAqIEBwYXJhbSB7U2VydmVyU2NvcGV9IGNvbiAtIFRoZSBOYW5vIHNlcnZlciBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIHRvIGRlbGV0ZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBkYXRhYmFzZSBpcyBkZWxldGVkXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIFNlcnZlclxuICAgKiAgIEEtPj5EQjogZGIuZGVzdHJveShuYW1lKVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBEQi0tPj5BOiByZXN1bHQgd2l0aCBvaz10cnVlXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgREItLT4+QTogZXJyb3JcbiAgICogICAgIEEtLT4+QTogdGhyb3cgcGFyc2VFcnJvcihlKVxuICAgKiAgIGVsc2UgTm90IE9LXG4gICAqICAgICBEQi0tPj5BOiByZXN1bHQgd2l0aCBvaz1mYWxzZVxuICAgKiAgICAgQS0tPj5BOiB0aHJvdyBJbnRlcm5hbEVycm9yXG4gICAqICAgZW5kXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgZGVsZXRlRGF0YWJhc2UoY29uOiBTZXJ2ZXJTY29wZSwgbmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY29uLmRiLmRlc3Ryb3kobmFtZSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICBjb25zdCB7IG9rIH0gPSByZXN1bHQ7XG4gICAgaWYgKCFvaylcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gZGVsZXRlIGRhdGFiYXNlIHdpdGggbmFtZSAke25hbWV9YCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgdXNlciBhbmQgZ3JhbnRzIGFjY2VzcyB0byBhIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBuZXcgdXNlciBpbiB0aGUgTmFubyBzZXJ2ZXIgYW5kIGNvbmZpZ3VyZXMgc2VjdXJpdHkgdG8gZ3JhbnQgdGhlIHVzZXIgYWNjZXNzIHRvIGEgc3BlY2lmaWMgZGF0YWJhc2VcbiAgICogQHBhcmFtIHtTZXJ2ZXJTY29wZX0gY29uIC0gVGhlIE5hbm8gc2VydmVyIGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRiTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSB0byBncmFudCBhY2Nlc3MgdG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXIgLSBUaGUgdXNlcm5hbWUgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzIC0gVGhlIHBhc3N3b3JkIGZvciB0aGUgbmV3IHVzZXJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW3JvbGVzPVtcInJlYWRlclwiLCBcIndyaXRlclwiXV0gLSBUaGUgcm9sZXMgdG8gYXNzaWduIHRvIHRoZSB1c2VyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHVzZXIgaXMgY3JlYXRlZCBhbmQgZ3JhbnRlZCBhY2Nlc3NcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBOYW5vQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgX3VzZXJzIERhdGFiYXNlXG4gICAqICAgcGFydGljaXBhbnQgUyBhcyBTZWN1cml0eSBBUElcbiAgICogICBBLT4+QTogQ3JlYXRlIHVzZXIgb2JqZWN0XG4gICAqICAgQS0+PlU6IGluc2VydCh1c2VyKVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBVLS0+PkE6IHJlc3BvbnNlIHdpdGggb2s9dHJ1ZVxuICAgKiAgICAgQS0+PlM6IFBVVCBfc2VjdXJpdHkgd2l0aCB1c2VyIHBlcm1pc3Npb25zXG4gICAqICAgICBhbHQgU2VjdXJpdHkgU3VjY2Vzc1xuICAgKiAgICAgICBTLS0+PkE6IHNlY3VyaXR5IHJlc3BvbnNlIHdpdGggb2s9dHJ1ZVxuICAgKiAgICAgZWxzZSBTZWN1cml0eSBGYWlsdXJlXG4gICAqICAgICAgIFMtLT4+QTogc2VjdXJpdHkgcmVzcG9uc2Ugd2l0aCBvaz1mYWxzZVxuICAgKiAgICAgICBBLS0+PkE6IHRocm93IEludGVybmFsRXJyb3JcbiAgICogICAgIGVuZFxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIFUtLT4+QTogZXJyb3JcbiAgICogICAgIEEtLT4+QTogdGhyb3cgcGFyc2VFcnJvcihlKVxuICAgKiAgIGVsc2UgTm90IE9LXG4gICAqICAgICBVLS0+PkE6IHJlc3BvbnNlIHdpdGggb2s9ZmFsc2VcbiAgICogICAgIEEtLT4+QTogdGhyb3cgSW50ZXJuYWxFcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVVzZXIoXG4gICAgY29uOiBTZXJ2ZXJTY29wZSxcbiAgICBkYk5hbWU6IHN0cmluZyxcbiAgICB1c2VyOiBzdHJpbmcsXG4gICAgcGFzczogc3RyaW5nLFxuICAgIHJvbGVzOiBzdHJpbmdbXSA9IFtcInJlYWRlclwiLCBcIndyaXRlclwiXVxuICApIHtcbiAgICBjb25zdCB1c2VycyA9IGNvbi5kYi51c2UoXCJfdXNlcnNcIik7XG4gICAgY29uc3QgdXNyID0ge1xuICAgICAgX2lkOiBcIm9yZy5jb3VjaGRiLnVzZXI6XCIgKyB1c2VyLFxuICAgICAgbmFtZTogdXNlcixcbiAgICAgIHBhc3N3b3JkOiBwYXNzLFxuICAgICAgcm9sZXM6IHJvbGVzLFxuICAgICAgdHlwZTogXCJ1c2VyXCIsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3JlYXRlZDogRG9jdW1lbnRJbnNlcnRSZXNwb25zZSA9IGF3YWl0IHVzZXJzLmluc2VydChcbiAgICAgICAgdXNyIGFzIE1heWJlRG9jdW1lbnRcbiAgICAgICk7XG4gICAgICBjb25zdCB7IG9rIH0gPSBjcmVhdGVkO1xuICAgICAgaWYgKCFvaykgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgdXNlciAke3VzZXJ9YCk7XG4gICAgICBjb25zdCBzZWN1cml0eTogYW55ID0gYXdhaXQgY29uLnJlcXVlc3Qoe1xuICAgICAgICBkYjogZGJOYW1lLFxuICAgICAgICBtZXRob2Q6IFwicHV0XCIsXG4gICAgICAgIHBhdGg6IFwiX3NlY3VyaXR5XCIsXG4gICAgICAgIC8vIGhlYWRlcnM6IHtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gfSxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIGFkbWluczoge1xuICAgICAgICAgICAgbmFtZXM6IFt1c2VyXSxcbiAgICAgICAgICAgIHJvbGVzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lbWJlcnM6IHtcbiAgICAgICAgICAgIG5hbWVzOiBbdXNlcl0sXG4gICAgICAgICAgICByb2xlczogcm9sZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFzZWN1cml0eS5vaylcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBhdXRob3JpemUgdXNlciAke3VzZXJ9IHRvIGRiICR7ZGJOYW1lfWBcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IENvdWNoREJBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGVzIGEgdXNlciBmcm9tIHRoZSBOYW5vIHNlcnZlclxuICAgKiBAc3VtbWFyeSBSZW1vdmVzIGFuIGV4aXN0aW5nIHVzZXIgZnJvbSB0aGUgTmFubyBzZXJ2ZXJcbiAgICogQHBhcmFtIHtTZXJ2ZXJTY29wZX0gY29uIC0gVGhlIE5hbm8gc2VydmVyIGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRiTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSAodXNlZCBmb3IgbG9nZ2luZyBwdXJwb3NlcylcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXIgLSBUaGUgdXNlcm5hbWUgdG8gZGVsZXRlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHVzZXIgaXMgZGVsZXRlZFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIE5hbm9BZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBfdXNlcnMgRGF0YWJhc2VcbiAgICogICBBLT4+QTogR2VuZXJhdGUgdXNlciBJRFxuICAgKiAgIEEtPj5VOiBnZXQoaWQpXG4gICAqICAgVS0tPj5BOiB1c2VyIGRvY3VtZW50XG4gICAqICAgQS0+PlU6IGRlc3Ryb3koaWQsIHVzZXIuX3JldilcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgVS0tPj5BOiBzdWNjZXNzIHJlc3BvbnNlXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgVS0tPj5BOiBlcnJvclxuICAgKiAgICAgQS0tPj5BOiB0aHJvdyBwYXJzZUVycm9yKGUpXG4gICAqICAgZW5kXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgZGVsZXRlVXNlcihjb246IFNlcnZlclNjb3BlLCBkYk5hbWU6IHN0cmluZywgdXNlcjogc3RyaW5nKSB7XG4gICAgY29uc3QgdXNlcnMgPSBjb24uZGIudXNlKFwiX3VzZXJzXCIpO1xuICAgIGNvbnN0IGlkID0gXCJvcmcuY291Y2hkYi51c2VyOlwiICsgdXNlcjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNyID0gYXdhaXQgdXNlcnMuZ2V0KGlkKTtcbiAgICAgIGF3YWl0IHVzZXJzLmRlc3Ryb3koaWQsIHVzci5fcmV2KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IENvdWNoREJBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZXRzIHVwIGRlY29yYXRpb25zIGZvciBOYW5vLXNwZWNpZmljIG1vZGVsIHByb3BlcnRpZXNcbiAgICogQHN1bW1hcnkgQ29uZmlndXJlcyBkZWNvcmF0b3JzIGZvciBjcmVhdGVkX2J5IGFuZCB1cGRhdGVkX2J5IGZpZWxkcyBpbiBtb2RlbHMgdG8gYmUgYXV0b21hdGljYWxseVxuICAgKiBwb3B1bGF0ZWQgd2l0aCB0aGUgdXNlciBmcm9tIHRoZSBjb250ZXh0IHdoZW4gZG9jdW1lbnRzIGFyZSBjcmVhdGVkIG9yIHVwZGF0ZWRcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBOYW5vQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IEQgYXMgRGVjb3JhdGlvblxuICAgKiAgIHBhcnRpY2lwYW50IFIgYXMgUmVwb3NpdG9yeVxuICAgKiAgIEEtPj5SOiBrZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpXG4gICAqICAgUi0tPj5BOiBjcmVhdGVkQnlLZXlcbiAgICogICBBLT4+RDogZmxhdm91cmVkQXMoXCJuYW5vXCIpXG4gICAqICAgQS0+PkQ6IGZvcihjcmVhdGVkQnlLZXkpXG4gICAqICAgQS0+PkQ6IGRlZmluZShvbkNyZWF0ZShjcmVhdGVkQnlPbk5hbm9DcmVhdGVVcGRhdGUpLCBwcm9wTWV0YWRhdGEpXG4gICAqICAgQS0+PkQ6IGFwcGx5KClcbiAgICogICBBLT4+Ujoga2V5KFBlcnNpc3RlbmNlS2V5cy5VUERBVEVEX0JZKVxuICAgKiAgIFItLT4+QTogdXBkYXRlZEJ5S2V5XG4gICAqICAgQS0+PkQ6IGZsYXZvdXJlZEFzKFwibmFub1wiKVxuICAgKiAgIEEtPj5EOiBmb3IodXBkYXRlZEJ5S2V5KVxuICAgKiAgIEEtPj5EOiBkZWZpbmUob25DcmVhdGUoY3JlYXRlZEJ5T25OYW5vQ3JlYXRlVXBkYXRlKSwgcHJvcE1ldGFkYXRhKVxuICAgKiAgIEEtPj5EOiBhcHBseSgpXG4gICAqL1xuICBzdGF0aWMgb3ZlcnJpZGUgZGVjb3JhdGlvbigpIHtcbiAgICBzdXBlci5kZWNvcmF0aW9uKCk7XG4gICAgY29uc3QgY3JlYXRlZEJ5S2V5ID0gUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpO1xuICAgIGNvbnN0IHVwZGF0ZWRCeUtleSA9IFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5VUERBVEVEX0JZKTtcbiAgICBEZWNvcmF0aW9uLmZsYXZvdXJlZEFzKFwibmFub1wiKVxuICAgICAgLmZvcihjcmVhdGVkQnlLZXkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZShjcmVhdGVkQnlPbk5hbm9DcmVhdGVVcGRhdGUpLFxuICAgICAgICBwcm9wTWV0YWRhdGEoY3JlYXRlZEJ5S2V5LCB7fSlcbiAgICAgIClcbiAgICAgIC5hcHBseSgpO1xuXG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhcIm5hbm9cIilcbiAgICAgIC5mb3IodXBkYXRlZEJ5S2V5KVxuICAgICAgLmRlZmluZShcbiAgICAgICAgb25DcmVhdGVVcGRhdGUoY3JlYXRlZEJ5T25OYW5vQ3JlYXRlVXBkYXRlKSxcbiAgICAgICAgcHJvcE1ldGFkYXRhKHVwZGF0ZWRCeUtleSwge30pXG4gICAgICApXG4gICAgICAuYXBwbHkoKTtcbiAgfVxufVxuXG5BZGFwdGVyLnNldEN1cnJlbnQoTmFub0ZsYXZvdXIpO1xuIiwiaW1wb3J0IHsgTmFub0FkYXB0ZXIgfSBmcm9tIFwiLi9hZGFwdGVyXCI7XG5cbi8vIEZvcmNlcyBvdmVycmlkZSBmb3IgTmFubyBEZWNvcmF0aW9uXG5OYW5vQWRhcHRlci5kZWNvcmF0aW9uKCk7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vTmFub1JlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4vLyBMZWZ0IHRvIHRoZSBlbmQgb24gcHVycG9zZVxuZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIFR5cGVTY3JpcHQgbW9kdWxlIGZvciBpbnRlcmFjdGluZyB3aXRoIE5hbm8gZGF0YWJhc2VzXG4gKiBAc3VtbWFyeSBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNldCBvZiB1dGlsaXRpZXMsIGNsYXNzZXMsIGFuZCB0eXBlcyBmb3Igd29ya2luZyB3aXRoIE5hbm8gZGF0YWJhc2VzLiBJdCBpbmNsdWRlcyByZXBvc2l0b3J5IHBhdHRlcm5zLCBhZGFwdGVycywgYW5kIHR5cGUgZGVmaW5pdGlvbnMgdG8gc2ltcGxpZnkgZGF0YWJhc2Ugb3BlcmF0aW9ucy4gS2V5IGV4cG9ydHMgaW5jbHVkZSB7QGxpbmsgTmFub0FkYXB0ZXJ9LCB7QGxpbmsgTmFub1JlcG9zaXRvcnl9LCB7QGxpbmsgTmFub0ZsYWdzfSwgYW5kIHtAbGluayBOYW5vRmxhdm91cn0uXG4gKiBAbW9kdWxlIGZvci1uYW5vXG4gKi9cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUGFja2FnZSB2ZXJzaW9uIGlkZW50aWZpZXJcbiAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgY3VycmVudCBwYWNrYWdlIHZlcnNpb24gc3RyaW5nIGZvciB0aGUgZm9yLW5hbm8gbW9kdWxlXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItbmFub1xuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9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
@@ -13,4 +13,4 @@ export * from "./adapter";
13
13
  * @const VERSION
14
14
  * @memberOf module:for-nano
15
15
  */
16
- export declare const VERSION = "0.1.9";
16
+ export declare const VERSION = "0.1.10";
package/lib/esm/index.js CHANGED
@@ -17,5 +17,5 @@ export * from "./adapter.js";
17
17
  * @const VERSION
18
18
  * @memberOf module:for-nano
19
19
  */
20
- export const VERSION = "0.1.9";
20
+ export const VERSION = "0.1.10";
21
21
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxxQkFBa0I7QUFFeEMsc0NBQXNDO0FBQ3RDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUV6QiwrQkFBNEI7QUFDNUIsb0NBQWlDO0FBQ2pDLDJCQUF3QjtBQUN4Qiw2QkFBNkI7QUFDN0IsNkJBQTBCO0FBRTFCOzs7O0dBSUc7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYW5vQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJcIjtcblxuLy8gRm9yY2VzIG92ZXJyaWRlIGZvciBOYW5vIERlY29yYXRpb25cbk5hbm9BZGFwdGVyLmRlY29yYXRpb24oKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9OYW5vUmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbi8vIExlZnQgdG8gdGhlIGVuZCBvbiBwdXJwb3NlXG5leHBvcnQgKiBmcm9tIFwiLi9hZGFwdGVyXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgVHlwZVNjcmlwdCBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggTmFubyBkYXRhYmFzZXNcbiAqIEBzdW1tYXJ5IFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdGllcywgY2xhc3NlcywgYW5kIHR5cGVzIGZvciB3b3JraW5nIHdpdGggTmFubyBkYXRhYmFzZXMuIEl0IGluY2x1ZGVzIHJlcG9zaXRvcnkgcGF0dGVybnMsIGFkYXB0ZXJzLCBhbmQgdHlwZSBkZWZpbml0aW9ucyB0byBzaW1wbGlmeSBkYXRhYmFzZSBvcGVyYXRpb25zLiBLZXkgZXhwb3J0cyBpbmNsdWRlIHtAbGluayBOYW5vQWRhcHRlcn0sIHtAbGluayBOYW5vUmVwb3NpdG9yeX0sIHtAbGluayBOYW5vRmxhZ3N9LCBhbmQge0BsaW5rIE5hbm9GbGF2b3VyfS5cbiAqIEBtb2R1bGUgZm9yLW5hbm9cbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYWNrYWdlIHZlcnNpb24gaWRlbnRpZmllclxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBmb3ItbmFubyBtb2R1bGVcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1uYW5vXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl19
package/lib/index.cjs CHANGED
@@ -34,5 +34,5 @@ __exportStar(require("./adapter.cjs"), exports);
34
34
  * @const VERSION
35
35
  * @memberOf module:for-nano
36
36
  */
37
- exports.VERSION = "0.1.9";
37
+ exports.VERSION = "0.1.10";
38
38
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBd0M7QUFFeEMsc0NBQXNDO0FBQ3RDLHFCQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7QUFFekIsa0RBQTRCO0FBQzVCLHVEQUFpQztBQUNqQyw4Q0FBd0I7QUFDeEIsNkJBQTZCO0FBQzdCLGdEQUEwQjtBQUUxQjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYW5vQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJcIjtcblxuLy8gRm9yY2VzIG92ZXJyaWRlIGZvciBOYW5vIERlY29yYXRpb25cbk5hbm9BZGFwdGVyLmRlY29yYXRpb24oKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9OYW5vUmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbi8vIExlZnQgdG8gdGhlIGVuZCBvbiBwdXJwb3NlXG5leHBvcnQgKiBmcm9tIFwiLi9hZGFwdGVyXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgVHlwZVNjcmlwdCBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggTmFubyBkYXRhYmFzZXNcbiAqIEBzdW1tYXJ5IFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdGllcywgY2xhc3NlcywgYW5kIHR5cGVzIGZvciB3b3JraW5nIHdpdGggTmFubyBkYXRhYmFzZXMuIEl0IGluY2x1ZGVzIHJlcG9zaXRvcnkgcGF0dGVybnMsIGFkYXB0ZXJzLCBhbmQgdHlwZSBkZWZpbml0aW9ucyB0byBzaW1wbGlmeSBkYXRhYmFzZSBvcGVyYXRpb25zLiBLZXkgZXhwb3J0cyBpbmNsdWRlIHtAbGluayBOYW5vQWRhcHRlcn0sIHtAbGluayBOYW5vUmVwb3NpdG9yeX0sIHtAbGluayBOYW5vRmxhZ3N9LCBhbmQge0BsaW5rIE5hbm9GbGF2b3VyfS5cbiAqIEBtb2R1bGUgZm9yLW5hbm9cbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYWNrYWdlIHZlcnNpb24gaWRlbnRpZmllclxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBmb3ItbmFubyBtb2R1bGVcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1uYW5vXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl19
package/lib/index.d.ts CHANGED
@@ -13,4 +13,4 @@ export * from "./adapter";
13
13
  * @const VERSION
14
14
  * @memberOf module:for-nano
15
15
  */
16
- export declare const VERSION = "0.1.9";
16
+ export declare const VERSION = "0.1.10";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/for-nano",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "decaf-ts persistence adapter for CouchDB via nano",
5
5
  "type": "module",
6
6
  "exports": {