New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@kizahasi/util

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@kizahasi/util - npm Package Compare versions

Comparing version 0.3.0 to 0.4.0

dist/cjs/internal/keyNames.js

10

dist/cjs/index.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.recordForEachAsync = exports.recordForEach = exports.mapToRecord = exports.mapRecord = exports.mapDualKeyRecord = exports.isRecordEmpty = exports.dualKeyRecordForEach = exports.dualKeyRecordFind = exports.chooseRecord = exports.chooseDualKeyRecord = exports.both = exports.right = exports.left = exports.createStateMap = exports.compositeKeyEquals = exports.stateMapToJsonString = exports.stringToCompositeKey = exports.compositeKeyToString = exports.groupJoinSet = exports.webServerRequiresUpdate = exports.apiServerRequiresUpdate = exports.ok = exports.rc = exports.beta = exports.alpha = exports.SemVer = exports.PublicChannelKey = exports.groupJoinMap = exports.JsonObject = exports.isStrIndex100 = exports.strIndex100Array = exports.isStrIndex20 = exports.strIndex20Array = exports.isStrIndex10 = exports.strIndex10Array = exports.isStrIndex5 = exports.strIndex5Array = exports.groupJoin4DualKeyMap = exports.groupJoin3DualKeyMap = exports.groupJoinDualKeyMap = exports.dualKeyToJsonString = exports.dualKeyToString = exports.DualKeyMap = exports.groupJoinCustomDualKeyMap = exports.CustomDualKeyMap = exports.$system = exports.$free = exports.authToken = exports.anonymous = exports.createFirebaseConfig = void 0;
exports.recordToMap = exports.dualKeyRecordToDualKeyMap = exports.recordToDualKeyMap = exports.recordToArray = void 0;
exports.recordToArray = exports.recordForEachAsync = exports.recordForEach = exports.mapToRecord = exports.mapRecord = exports.mapDualKeyRecord = exports.isRecordEmpty = exports.dualKeyRecordForEach = exports.dualKeyRecordFind = exports.chooseRecord = exports.chooseDualKeyRecord = exports.both = exports.right = exports.left = exports.createStateMap = exports.compositeKeyEquals = exports.stateMapToJsonString = exports.stringToCompositeKey = exports.groupJoinSet = exports.webServerRequiresUpdate = exports.apiServerRequiresUpdate = exports.ok = exports.rc = exports.beta = exports.alpha = exports.SemVer = exports.PublicChannelKey = exports.groupJoinMap = exports.keyNames = exports.JsonObject = exports.isStrIndex100 = exports.strIndex100Array = exports.isStrIndex20 = exports.strIndex20Array = exports.isStrIndex10 = exports.strIndex10Array = exports.isStrIndex5 = exports.strIndex5Array = exports.groupJoin4DualKeyMap = exports.groupJoin3DualKeyMap = exports.groupJoinDualKeyMap = exports.dualKeyToJsonString = exports.DualKeyMap = exports.groupJoinCustomDualKeyMap = exports.CustomDualKeyMap = exports.$system = exports.$free = exports.authToken = exports.anonymous = exports.createFirebaseConfig = void 0;
exports.recordToMap = exports.dualKeyRecordToDualKeyMap = exports.recordToDualKeyMap = void 0;
var config_1 = require("./internal/config");

@@ -17,3 +17,2 @@ Object.defineProperty(exports, "createFirebaseConfig", { enumerable: true, get: function () { return config_1.createFirebaseConfig; } });

Object.defineProperty(exports, "DualKeyMap", { enumerable: true, get: function () { return dualKeyMap_1.DualKeyMap; } });
Object.defineProperty(exports, "dualKeyToString", { enumerable: true, get: function () { return dualKeyMap_1.dualKeyToString; } });
Object.defineProperty(exports, "dualKeyToJsonString", { enumerable: true, get: function () { return dualKeyMap_1.toJsonString; } });

@@ -34,2 +33,4 @@ Object.defineProperty(exports, "groupJoinDualKeyMap", { enumerable: true, get: function () { return dualKeyMap_1.groupJoin; } });

Object.defineProperty(exports, "JsonObject", { enumerable: true, get: function () { return jsonObject_1.JsonObject; } });
var keyNames_1 = require("./internal/keyNames");
Object.defineProperty(exports, "keyNames", { enumerable: true, get: function () { return keyNames_1.keyNames; } });
var map_1 = require("./internal/map");

@@ -50,3 +51,2 @@ Object.defineProperty(exports, "groupJoinMap", { enumerable: true, get: function () { return map_1.groupJoin; } });

var stateMap_1 = require("./internal/stateMap");
Object.defineProperty(exports, "compositeKeyToString", { enumerable: true, get: function () { return stateMap_1.compositeKeyToString; } });
Object.defineProperty(exports, "stringToCompositeKey", { enumerable: true, get: function () { return stateMap_1.stringToCompositeKey; } });

@@ -75,2 +75,2 @@ Object.defineProperty(exports, "stateMapToJsonString", { enumerable: true, get: function () { return stateMap_1.toJsonString; } });

Object.defineProperty(exports, "recordToMap", { enumerable: true, get: function () { return utils_1.recordToMap; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDRDQUF5RTtBQUFoRCw4R0FBQSxvQkFBb0IsT0FBQTtBQUM3QyxrREFBNEU7QUFBbkUsc0dBQUEsU0FBUyxPQUFBO0FBQUUsc0dBQUEsU0FBUyxPQUFBO0FBQUUsa0dBQUEsS0FBSyxPQUFBO0FBQUUsb0dBQUEsT0FBTyxPQUFBO0FBQzdDLGdFQUtxQztBQUhqQyxvSEFBQSxnQkFBZ0IsT0FBQTtBQUVoQiw2SEFBQSxTQUFTLE9BQTZCO0FBRTFDLG9EQVUrQjtBQVIzQix3R0FBQSxVQUFVLE9BQUE7QUFHViw2R0FBQSxlQUFlLE9BQUE7QUFDZixpSEFBQSxZQUFZLE9BQXVCO0FBQ25DLGlIQUFBLFNBQVMsT0FBdUI7QUFDaEMsa0hBQUEsVUFBVSxPQUF3QjtBQUNsQyxrSEFBQSxVQUFVLE9BQXdCO0FBRXRDLDhDQWE0QjtBQVh4Qix5R0FBQSxjQUFjLE9BQUE7QUFDZCxzR0FBQSxXQUFXLE9BQUE7QUFFWCwwR0FBQSxlQUFlLE9BQUE7QUFDZix1R0FBQSxZQUFZLE9BQUE7QUFFWiwwR0FBQSxlQUFlLE9BQUE7QUFDZix1R0FBQSxZQUFZLE9BQUE7QUFFWiwyR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQix3R0FBQSxhQUFhLE9BQUE7QUFFakIsb0RBQW1EO0FBQTFDLHdHQUFBLFVBQVUsT0FBQTtBQUNuQixzQ0FBMkQ7QUFBbEQsbUdBQUEsU0FBUyxPQUFnQjtBQUNsQyxnRUFBK0Q7QUFBdEQsb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsNENBVTJCO0FBVHZCLGdHQUFBLE1BQU0sT0FBQTtBQUNOLCtGQUFBLEtBQUssT0FBQTtBQUNMLDhGQUFBLElBQUksT0FBQTtBQUNKLDRGQUFBLEVBQUUsT0FBQTtBQUdGLDRGQUFBLEVBQUUsT0FBQTtBQUNGLGlIQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLGlIQUFBLHVCQUF1QixPQUFBO0FBRTNCLHNDQUEyRDtBQUFsRCxtR0FBQSxTQUFTLE9BQWdCO0FBQ2xDLGdEQVM2QjtBQVB6QixnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQixnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQixnSEFBQSxZQUFZLE9BQXdCO0FBQ3BDLDhHQUFBLE1BQU0sT0FBc0I7QUFHNUIsMEdBQUEsY0FBYyxPQUFBO0FBRWxCLDBDQUFxRDtBQUE1Qyw2RkFBQSxJQUFJLE9BQUE7QUFBRSw4RkFBQSxLQUFLLE9BQUE7QUFBRSw2RkFBQSxJQUFJLE9BQUE7QUFDMUIsMENBZTBCO0FBZHRCLDRHQUFBLG1CQUFtQixPQUFBO0FBQ25CLHFHQUFBLFlBQVksT0FBQTtBQUNaLDBHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDZHQUFBLG9CQUFvQixPQUFBO0FBQ3BCLHNHQUFBLGFBQWEsT0FBQTtBQUNiLHlHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLGtHQUFBLFNBQVMsT0FBQTtBQUNULG9HQUFBLFdBQVcsT0FBQTtBQUNYLHNHQUFBLGFBQWEsT0FBQTtBQUNiLDJHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLHNHQUFBLGFBQWEsT0FBQTtBQUNiLDJHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGtIQUFBLHlCQUF5QixPQUFBO0FBQ3pCLG9HQUFBLFdBQVcsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZpcmViYXNlQ29uZmlnLCBjcmVhdGVGaXJlYmFzZUNvbmZpZyB9IGZyb20gJy4vaW50ZXJuYWwvY29uZmlnJztcclxuZXhwb3J0IHsgYW5vbnltb3VzLCBhdXRoVG9rZW4sICRmcmVlLCAkc3lzdGVtIH0gZnJvbSAnLi9pbnRlcm5hbC9jb25zdGFudHMnO1xyXG5leHBvcnQge1xyXG4gICAgS2V5RmFjdG9yeSxcclxuICAgIEN1c3RvbUR1YWxLZXlNYXAsXHJcbiAgICBSZWFkb25seUN1c3RvbUR1YWxLZXlNYXAsXHJcbiAgICBncm91cEpvaW4gYXMgZ3JvdXBKb2luQ3VzdG9tRHVhbEtleU1hcCxcclxufSBmcm9tICcuL2ludGVybmFsL2N1c3RvbUR1YWxLZXlNYXAnO1xyXG5leHBvcnQge1xyXG4gICAgRHVhbEtleSxcclxuICAgIER1YWxLZXlNYXAsXHJcbiAgICBSZWFkb25seUR1YWxLZXlNYXAsXHJcbiAgICBEdWFsS2V5TWFwU291cmNlLFxyXG4gICAgZHVhbEtleVRvU3RyaW5nLFxyXG4gICAgdG9Kc29uU3RyaW5nIGFzIGR1YWxLZXlUb0pzb25TdHJpbmcsXHJcbiAgICBncm91cEpvaW4gYXMgZ3JvdXBKb2luRHVhbEtleU1hcCxcclxuICAgIGdyb3VwSm9pbjMgYXMgZ3JvdXBKb2luM0R1YWxLZXlNYXAsXHJcbiAgICBncm91cEpvaW40IGFzIGdyb3VwSm9pbjREdWFsS2V5TWFwLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvZHVhbEtleU1hcCc7XHJcbmV4cG9ydCB7XHJcbiAgICBTdHJJbmRleDUsXHJcbiAgICBzdHJJbmRleDVBcnJheSxcclxuICAgIGlzU3RySW5kZXg1LFxyXG4gICAgU3RySW5kZXgxMCxcclxuICAgIHN0ckluZGV4MTBBcnJheSxcclxuICAgIGlzU3RySW5kZXgxMCxcclxuICAgIFN0ckluZGV4MjAsXHJcbiAgICBzdHJJbmRleDIwQXJyYXksXHJcbiAgICBpc1N0ckluZGV4MjAsXHJcbiAgICBTdHJJbmRleDEwMCxcclxuICAgIHN0ckluZGV4MTAwQXJyYXksXHJcbiAgICBpc1N0ckluZGV4MTAwLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvaW5kZXhlcyc7XHJcbmV4cG9ydCB7IEpzb25PYmplY3QgfSBmcm9tICcuL2ludGVybmFsL2pzb25PYmplY3QnO1xyXG5leHBvcnQgeyBncm91cEpvaW4gYXMgZ3JvdXBKb2luTWFwIH0gZnJvbSAnLi9pbnRlcm5hbC9tYXAnO1xyXG5leHBvcnQgeyBQdWJsaWNDaGFubmVsS2V5IH0gZnJvbSAnLi9pbnRlcm5hbC9wdWJsaWNDaGFubmVsS2V5JztcclxuZXhwb3J0IHtcclxuICAgIFNlbVZlcixcclxuICAgIGFscGhhLFxyXG4gICAgYmV0YSxcclxuICAgIHJjLFxyXG4gICAgT3BlcmF0b3IsXHJcbiAgICBTZW12ZXJPcHRpb24sXHJcbiAgICBvayxcclxuICAgIGFwaVNlcnZlclJlcXVpcmVzVXBkYXRlLFxyXG4gICAgd2ViU2VydmVyUmVxdWlyZXNVcGRhdGUsXHJcbn0gZnJvbSAnLi9pbnRlcm5hbC9zZW12ZXInO1xyXG5leHBvcnQgeyBncm91cEpvaW4gYXMgZ3JvdXBKb2luU2V0IH0gZnJvbSAnLi9pbnRlcm5hbC9zZXQnO1xyXG5leHBvcnQge1xyXG4gICAgQ29tcG9zaXRlS2V5LFxyXG4gICAgY29tcG9zaXRlS2V5VG9TdHJpbmcsXHJcbiAgICBzdHJpbmdUb0NvbXBvc2l0ZUtleSxcclxuICAgIHRvSnNvblN0cmluZyBhcyBzdGF0ZU1hcFRvSnNvblN0cmluZyxcclxuICAgIGVxdWFscyBhcyBjb21wb3NpdGVLZXlFcXVhbHMsXHJcbiAgICBTdGF0ZU1hcCxcclxuICAgIFJlYWRvbmx5U3RhdGVNYXAsXHJcbiAgICBjcmVhdGVTdGF0ZU1hcCxcclxufSBmcm9tICcuL2ludGVybmFsL3N0YXRlTWFwJztcclxuZXhwb3J0IHsgbGVmdCwgcmlnaHQsIGJvdGggfSBmcm9tICcuL2ludGVybmFsL3R5cGVzJztcclxuZXhwb3J0IHtcclxuICAgIGNob29zZUR1YWxLZXlSZWNvcmQsXHJcbiAgICBjaG9vc2VSZWNvcmQsXHJcbiAgICBkdWFsS2V5UmVjb3JkRmluZCxcclxuICAgIGR1YWxLZXlSZWNvcmRGb3JFYWNoLFxyXG4gICAgaXNSZWNvcmRFbXB0eSxcclxuICAgIG1hcER1YWxLZXlSZWNvcmQsXHJcbiAgICBtYXBSZWNvcmQsXHJcbiAgICBtYXBUb1JlY29yZCxcclxuICAgIHJlY29yZEZvckVhY2gsXHJcbiAgICByZWNvcmRGb3JFYWNoQXN5bmMsXHJcbiAgICByZWNvcmRUb0FycmF5LFxyXG4gICAgcmVjb3JkVG9EdWFsS2V5TWFwLFxyXG4gICAgZHVhbEtleVJlY29yZFRvRHVhbEtleU1hcCxcclxuICAgIHJlY29yZFRvTWFwLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvdXRpbHMnO1xyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDRDQUF5RTtBQUFoRCw4R0FBQSxvQkFBb0IsT0FBQTtBQUM3QyxrREFBNEU7QUFBbkUsc0dBQUEsU0FBUyxPQUFBO0FBQUUsc0dBQUEsU0FBUyxPQUFBO0FBQUUsa0dBQUEsS0FBSyxPQUFBO0FBQUUsb0dBQUEsT0FBTyxPQUFBO0FBQzdDLGdFQUtxQztBQUhqQyxvSEFBQSxnQkFBZ0IsT0FBQTtBQUVoQiw2SEFBQSxTQUFTLE9BQTZCO0FBRTFDLG9EQVMrQjtBQVAzQix3R0FBQSxVQUFVLE9BQUE7QUFHVixpSEFBQSxZQUFZLE9BQXVCO0FBQ25DLGlIQUFBLFNBQVMsT0FBdUI7QUFDaEMsa0hBQUEsVUFBVSxPQUF3QjtBQUNsQyxrSEFBQSxVQUFVLE9BQXdCO0FBRXRDLDhDQWE0QjtBQVh4Qix5R0FBQSxjQUFjLE9BQUE7QUFDZCxzR0FBQSxXQUFXLE9BQUE7QUFFWCwwR0FBQSxlQUFlLE9BQUE7QUFDZix1R0FBQSxZQUFZLE9BQUE7QUFFWiwwR0FBQSxlQUFlLE9BQUE7QUFDZix1R0FBQSxZQUFZLE9BQUE7QUFFWiwyR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQix3R0FBQSxhQUFhLE9BQUE7QUFFakIsb0RBQW1EO0FBQTFDLHdHQUFBLFVBQVUsT0FBQTtBQUNuQixnREFBK0M7QUFBdEMsb0dBQUEsUUFBUSxPQUFBO0FBQ2pCLHNDQUEyRDtBQUFsRCxtR0FBQSxTQUFTLE9BQWdCO0FBQ2xDLGdFQUErRDtBQUF0RCxvSEFBQSxnQkFBZ0IsT0FBQTtBQUN6Qiw0Q0FVMkI7QUFUdkIsZ0dBQUEsTUFBTSxPQUFBO0FBQ04sK0ZBQUEsS0FBSyxPQUFBO0FBQ0wsOEZBQUEsSUFBSSxPQUFBO0FBQ0osNEZBQUEsRUFBRSxPQUFBO0FBR0YsNEZBQUEsRUFBRSxPQUFBO0FBQ0YsaUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsaUhBQUEsdUJBQXVCLE9BQUE7QUFFM0Isc0NBQTJEO0FBQWxELG1HQUFBLFNBQVMsT0FBZ0I7QUFDbEMsZ0RBUTZCO0FBTnpCLGdIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLGdIQUFBLFlBQVksT0FBd0I7QUFDcEMsOEdBQUEsTUFBTSxPQUFzQjtBQUc1QiwwR0FBQSxjQUFjLE9BQUE7QUFFbEIsMENBQXFEO0FBQTVDLDZGQUFBLElBQUksT0FBQTtBQUFFLDhGQUFBLEtBQUssT0FBQTtBQUFFLDZGQUFBLElBQUksT0FBQTtBQUMxQiwwQ0FlMEI7QUFkdEIsNEdBQUEsbUJBQW1CLE9BQUE7QUFDbkIscUdBQUEsWUFBWSxPQUFBO0FBQ1osMEdBQUEsaUJBQWlCLE9BQUE7QUFDakIsNkdBQUEsb0JBQW9CLE9BQUE7QUFDcEIsc0dBQUEsYUFBYSxPQUFBO0FBQ2IseUdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsa0dBQUEsU0FBUyxPQUFBO0FBQ1Qsb0dBQUEsV0FBVyxPQUFBO0FBQ1gsc0dBQUEsYUFBYSxPQUFBO0FBQ2IsMkdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsc0dBQUEsYUFBYSxPQUFBO0FBQ2IsMkdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsa0hBQUEseUJBQXlCLE9BQUE7QUFDekIsb0dBQUEsV0FBVyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRmlyZWJhc2VDb25maWcsIGNyZWF0ZUZpcmViYXNlQ29uZmlnIH0gZnJvbSAnLi9pbnRlcm5hbC9jb25maWcnO1xyXG5leHBvcnQgeyBhbm9ueW1vdXMsIGF1dGhUb2tlbiwgJGZyZWUsICRzeXN0ZW0gfSBmcm9tICcuL2ludGVybmFsL2NvbnN0YW50cyc7XHJcbmV4cG9ydCB7XHJcbiAgICBLZXlGYWN0b3J5LFxyXG4gICAgQ3VzdG9tRHVhbEtleU1hcCxcclxuICAgIFJlYWRvbmx5Q3VzdG9tRHVhbEtleU1hcCxcclxuICAgIGdyb3VwSm9pbiBhcyBncm91cEpvaW5DdXN0b21EdWFsS2V5TWFwLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvY3VzdG9tRHVhbEtleU1hcCc7XHJcbmV4cG9ydCB7XHJcbiAgICBEdWFsS2V5LFxyXG4gICAgRHVhbEtleU1hcCxcclxuICAgIFJlYWRvbmx5RHVhbEtleU1hcCxcclxuICAgIER1YWxLZXlNYXBTb3VyY2UsXHJcbiAgICB0b0pzb25TdHJpbmcgYXMgZHVhbEtleVRvSnNvblN0cmluZyxcclxuICAgIGdyb3VwSm9pbiBhcyBncm91cEpvaW5EdWFsS2V5TWFwLFxyXG4gICAgZ3JvdXBKb2luMyBhcyBncm91cEpvaW4zRHVhbEtleU1hcCxcclxuICAgIGdyb3VwSm9pbjQgYXMgZ3JvdXBKb2luNER1YWxLZXlNYXAsXHJcbn0gZnJvbSAnLi9pbnRlcm5hbC9kdWFsS2V5TWFwJztcclxuZXhwb3J0IHtcclxuICAgIFN0ckluZGV4NSxcclxuICAgIHN0ckluZGV4NUFycmF5LFxyXG4gICAgaXNTdHJJbmRleDUsXHJcbiAgICBTdHJJbmRleDEwLFxyXG4gICAgc3RySW5kZXgxMEFycmF5LFxyXG4gICAgaXNTdHJJbmRleDEwLFxyXG4gICAgU3RySW5kZXgyMCxcclxuICAgIHN0ckluZGV4MjBBcnJheSxcclxuICAgIGlzU3RySW5kZXgyMCxcclxuICAgIFN0ckluZGV4MTAwLFxyXG4gICAgc3RySW5kZXgxMDBBcnJheSxcclxuICAgIGlzU3RySW5kZXgxMDAsXHJcbn0gZnJvbSAnLi9pbnRlcm5hbC9pbmRleGVzJztcclxuZXhwb3J0IHsgSnNvbk9iamVjdCB9IGZyb20gJy4vaW50ZXJuYWwvanNvbk9iamVjdCc7XHJcbmV4cG9ydCB7IGtleU5hbWVzIH0gZnJvbSAnLi9pbnRlcm5hbC9rZXlOYW1lcyc7XHJcbmV4cG9ydCB7IGdyb3VwSm9pbiBhcyBncm91cEpvaW5NYXAgfSBmcm9tICcuL2ludGVybmFsL21hcCc7XHJcbmV4cG9ydCB7IFB1YmxpY0NoYW5uZWxLZXkgfSBmcm9tICcuL2ludGVybmFsL3B1YmxpY0NoYW5uZWxLZXknO1xyXG5leHBvcnQge1xyXG4gICAgU2VtVmVyLFxyXG4gICAgYWxwaGEsXHJcbiAgICBiZXRhLFxyXG4gICAgcmMsXHJcbiAgICBPcGVyYXRvcixcclxuICAgIFNlbXZlck9wdGlvbixcclxuICAgIG9rLFxyXG4gICAgYXBpU2VydmVyUmVxdWlyZXNVcGRhdGUsXHJcbiAgICB3ZWJTZXJ2ZXJSZXF1aXJlc1VwZGF0ZSxcclxufSBmcm9tICcuL2ludGVybmFsL3NlbXZlcic7XHJcbmV4cG9ydCB7IGdyb3VwSm9pbiBhcyBncm91cEpvaW5TZXQgfSBmcm9tICcuL2ludGVybmFsL3NldCc7XHJcbmV4cG9ydCB7XHJcbiAgICBDb21wb3NpdGVLZXksXHJcbiAgICBzdHJpbmdUb0NvbXBvc2l0ZUtleSxcclxuICAgIHRvSnNvblN0cmluZyBhcyBzdGF0ZU1hcFRvSnNvblN0cmluZyxcclxuICAgIGVxdWFscyBhcyBjb21wb3NpdGVLZXlFcXVhbHMsXHJcbiAgICBTdGF0ZU1hcCxcclxuICAgIFJlYWRvbmx5U3RhdGVNYXAsXHJcbiAgICBjcmVhdGVTdGF0ZU1hcCxcclxufSBmcm9tICcuL2ludGVybmFsL3N0YXRlTWFwJztcclxuZXhwb3J0IHsgbGVmdCwgcmlnaHQsIGJvdGggfSBmcm9tICcuL2ludGVybmFsL3R5cGVzJztcclxuZXhwb3J0IHtcclxuICAgIGNob29zZUR1YWxLZXlSZWNvcmQsXHJcbiAgICBjaG9vc2VSZWNvcmQsXHJcbiAgICBkdWFsS2V5UmVjb3JkRmluZCxcclxuICAgIGR1YWxLZXlSZWNvcmRGb3JFYWNoLFxyXG4gICAgaXNSZWNvcmRFbXB0eSxcclxuICAgIG1hcER1YWxLZXlSZWNvcmQsXHJcbiAgICBtYXBSZWNvcmQsXHJcbiAgICBtYXBUb1JlY29yZCxcclxuICAgIHJlY29yZEZvckVhY2gsXHJcbiAgICByZWNvcmRGb3JFYWNoQXN5bmMsXHJcbiAgICByZWNvcmRUb0FycmF5LFxyXG4gICAgcmVjb3JkVG9EdWFsS2V5TWFwLFxyXG4gICAgZHVhbEtleVJlY29yZFRvRHVhbEtleU1hcCxcclxuICAgIHJlY29yZFRvTWFwLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvdXRpbHMnO1xyXG4iXX0=
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.groupJoin4 = exports.groupJoin3 = exports.groupJoin = exports.DualKeyMap = exports.toJsonString = exports.dualKeyToString = void 0;
exports.groupJoin4 = exports.groupJoin3 = exports.groupJoin = exports.DualKeyMap = exports.toJsonString = void 0;
const types_1 = require("./types");
const utils_1 = require("./utils");
const dualKeyToString = (source) => {
return `${source.first}@${source.second}`;
};
exports.dualKeyToString = dualKeyToString;
const toJsonString = (source) => {

@@ -214,2 +210,2 @@ return `{ first: ${source.first}, second: ${source.second} }`;

exports.groupJoin4 = groupJoin4;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVhbEtleU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcm5hbC9kdWFsS2V5TWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUE2RDtBQUM3RCxtQ0FBc0M7QUFPL0IsTUFBTSxlQUFlLEdBQUcsQ0FBUyxNQUF1QixFQUFVLEVBQUU7SUFDdkUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUZXLFFBQUEsZUFBZSxtQkFFMUI7QUFFSyxNQUFNLFlBQVksR0FBRyxDQUFTLE1BQXVCLEVBQVUsRUFBRTtJQUNwRSxPQUFPLFlBQVksTUFBTSxDQUFDLEtBQUssYUFBYSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRlcsUUFBQSxZQUFZLGdCQUV2QjtBQVVGLE1BQWEsVUFBVTtJQUduQixZQUFtQixTQUFrRDtRQUNqRSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7SUFDdEQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxNQUFNLENBQ2pCLE1BQStDLEVBQy9DLE9BQWlFO1FBRWpFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3JELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLEVBQUU7WUFDcEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDbEIsU0FBUzthQUNaO1lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENB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QUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBdEJXLFFBQUEsVUFBVSxjQXNCckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib3RoLCBHcm91cEpvaW5SZXN1bHQsIGxlZnQsIHJpZ2h0IH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IG1hcFRvUmVjb3JkIH0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5leHBvcnQgdHlwZSBEdWFsS2V5PFQxLCBUMj4gPSB7XHJcbiAgICByZWFkb25seSBmaXJzdDogVDE7XHJcbiAgICByZWFkb25seSBzZWNvbmQ6IFQyO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGR1YWxLZXlUb1N0cmluZyA9IDxUMSwgVDI+KHNvdXJjZTogRHVhbEtleTxUMSwgVDI+KTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiBgJHtzb3VyY2UuZmlyc3R9QCR7c291cmNlLnNlY29uZH1gO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvSnNvblN0cmluZyA9IDxUMSwgVDI+KHNvdXJjZTogRHVhbEtleTxUMSwgVDI+KTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiBgeyBmaXJzdDogJHtzb3VyY2UuZmlyc3R9LCBzZWNvbmQ6ICR7c291cmNlLnNlY29uZH0gfWA7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBEdWFsS2V5TWFwU291cmNlPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiA9XHJcbiAgICB8IE1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWU+PlxyXG4gICAgfCBNYXA8VEtleTEsIFJlYWRvbmx5TWFwPFRLZXkyLCBUVmFsdWU+PlxyXG4gICAgfCBSZWFkb25seU1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWU+PlxyXG4gICAgfCBSZWFkb25seU1hcDxUS2V5MSwgUmVhZG9ubHlNYXA8VEtleTIsIFRWYWx1ZT4+O1xyXG5cclxudHlwZSBSZWNvcmRLZXkgPSBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w7XHJcblxyXG5leHBvcnQgY2xhc3MgRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRWYWx1ZT4ge1xyXG4gICAgcHJpdmF0ZSBfY29yZTogTWFwPFRLZXkxLCBNYXA8VEtleTIsIFRWYWx1ZT4+O1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihzb3VyY2VNYXA/OiBEdWFsS2V5TWFwU291cmNlPFRLZXkxLCBUS2V5MiwgVFZhbHVlPikge1xyXG4gICAgICAgIGlmIChzb3VyY2VNYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jb3JlID0gRHVhbEtleU1hcC5tYXBNYXAoc291cmNlTWFwLCB4ID0+IHgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NvcmUgPSBuZXcgTWFwPFRLZXkxLCBNYXA8VEtleTIsIFRWYWx1ZT4+KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgbWFwTWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlMSwgVFZhbHVlMj4oXHJcbiAgICAgICAgc291cmNlOiBEdWFsS2V5TWFwU291cmNlPFRLZXkxLCBUS2V5MiwgVFZhbHVlMT4sXHJcbiAgICAgICAgbWFwcGluZzogKHNvdXJjZTogVFZhbHVlMSwga2V5OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pID0+IFRWYWx1ZTJcclxuICAgICk6IE1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWUyPj4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8VEtleTEsIE1hcDxUS2V5MiwgVFZhbHVlMj4+KCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBbZmlyc3RLZXksIGZpcnN0XSBvZiBzb3VyY2UpIHtcclxuICAgICAgICAgICAgaWYgKGZpcnN0LnNpemUgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHRvU2V0ID0gbmV3IE1hcDxUS2V5MiwgVFZhbHVlMj4oKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBbc2Vjb25kS2V5LCBzZWNvbmRdIG9mIGZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgICB0b1NldC5zZXQoc2Vjb25kS2V5LCBtYXBwaW5nKHNlY29uZCwgeyBmaXJzdDogZmlyc3RLZXksIHNlY29uZDogc2Vjb25kS2V5IH0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQuc2V0KGZpcnN0S2V5LCB0b1NldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlPFRLZXkxLCBUS2V5MiwgVFZhbHVlMSwgVFZhbHVlMj4oXHJcbiAgICAgICAgc291cmNlOiBEdWFsS2V5TWFwU291cmNlPFRLZXkxLCBUS2V5MiwgVFZhbHVlMT4gfCBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlMT4sXHJcbiAgICAgICAgbWFwcGluZzogKHNvdXJjZTogVFZhbHVlMSwga2V5OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pID0+IFRWYWx1ZTJcclxuICAgICk6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWUyPiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWUyPigpO1xyXG4gICAgICAgIHJlc3VsdC5fY29yZSA9IER1YWxLZXlNYXAubWFwTWFwKFxyXG4gICAgICAgICAgICBzb3VyY2UgaW5zdGFuY2VvZiBEdWFsS2V5TWFwID8gc291cmNlLl9jb3JlIDogc291cmNlLFxyXG4gICAgICAgICAgICBtYXBwaW5nXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgb2ZSZWNvcmQ8VEtleTEgZXh0ZW5kcyBSZWNvcmRLZXksIFRLZXkyIGV4dGVuZHMgUmVjb3JkS2V5LCBUVmFsdWU+KFxyXG4gICAgICAgIHNvdXJjZTogUmVjb3JkPFRLZXkxLCBSZWNvcmQ8VEtleTIsIFRWYWx1ZSB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ+XHJcbiAgICApOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+KCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkxIGluIHNvdXJjZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbm5lcjogUmVjb3JkPFRLZXkyLCBUVmFsdWUgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkID0gc291cmNlW2tleTFdO1xyXG4gICAgICAgICAgICBpZiAoaW5uZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkyIGluIGlubmVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTogVFZhbHVlIHwgdW5kZWZpbmVkID0gaW5uZXJba2V5Ml07XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoeyBmaXJzdDoga2V5MSwgc2Vjb25kOiBrZXkyIH0sIHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtYXA8VFJlc3VsdD4oXHJcbiAgICAgICAgbWFwcGluZzogKHNvdXJjZTogVFZhbHVlLCBrZXk6IER1YWxLZXk8VEtleTEsIFRLZXkyPikgPT4gVFJlc3VsdFxyXG4gICAgKTogRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gRHVhbEtleU1hcC5jcmVhdGUodGhpcywgbWFwcGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb25lKCk6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+IHtcclxuICAgICAgICByZXR1cm4gRHVhbEtleU1hcC5jcmVhdGUodGhpcywgeCA9PiB4KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0KHsgZmlyc3QsIHNlY29uZCB9OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pOiBUVmFsdWUgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGlubmVyID0gdGhpcy5fY29yZS5nZXQoZmlyc3QpO1xyXG4gICAgICAgIGlmIChpbm5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbm5lci5nZXQoc2Vjb25kKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QnlGaXJzdChmaXJzdDogVEtleTEpOiBNYXA8VEtleTIsIFRWYWx1ZT4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb3JlLmdldChmaXJzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldChcclxuICAgICAgICB7IGZpcnN0LCBzZWNvbmQgfTogRHVhbEtleTxUS2V5MSwgVEtleTI+LFxyXG4gICAgICAgIHZhbHVlOiBUVmFsdWVcclxuICAgICk6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+IHtcclxuICAgICAgICBsZXQgaW5uZXIgPSB0aGlzLl9jb3JlLmdldChmaXJzdCk7XHJcbiAgICAgICAgaWYgKGlubmVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaW5uZXIgPSBuZXcgTWFwPFRLZXkyLCBUVmFsdWU+KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuc2V0KGZpcnN0LCBpbm5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlubmVyLnNldChzZWNvbmQsIHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGVsZXRlKHsgZmlyc3QsIHNlY29uZCB9OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBpbm5lciA9IHRoaXMuX2NvcmUuZ2V0KGZpcnN0KTtcclxuICAgICAgICBpZiAoaW5uZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGlubmVyLmRlbGV0ZShzZWNvbmQpO1xyXG4gICAgICAgIGlmIChpbm5lci5zaXplID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuZGVsZXRlKGZpcnN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFzKGtleTogRHVhbEtleTxUS2V5MSwgVEtleTI+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkgIT09IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxyZWFkb25seSBbRHVhbEtleTxUS2V5MSwgVEtleTI+LCBUVmFsdWVdPiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBbZmlyc3RLZXksIGZpcnN0XSBvZiB0aGlzLl9jb3JlKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3NlY29uZEtleSwgc2Vjb25kXSBvZiBmaXJzdCkge1xyXG4gICAgICAgICAgICAgICAgeWllbGQgW3sgZmlyc3Q6IGZpcnN0S2V5LCBzZWNvbmQ6IHNlY29uZEtleSB9LCBzZWNvbmRdIGFzIGNvbnN0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0FycmF5KCkge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b01hcCgpIHtcclxuICAgICAgICByZXR1cm4gRHVhbEtleU1hcC5tYXBNYXAodGhpcy5fY29yZSwgeCA9PiB4KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9TdHJpbmdSZWNvcmQoXHJcbiAgICAgICAgY3JlYXRlU3RyaW5nS2V5MTogKGZpcnN0OiBUS2V5MSkgPT4gc3RyaW5nLFxyXG4gICAgICAgIGNyZWF0ZVN0cmluZ0tleTI6IChzZWNvbmQ6IFRLZXkyKSA9PiBzdHJpbmdcclxuICAgICk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFRWYWx1ZT4+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgUmVjb3JkPHN0cmluZywgVFZhbHVlPj4oKTtcclxuICAgICAgICB0aGlzLl9jb3JlLmZvckVhY2goKGlubmVyLCBmaXJzdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbm5lclJlY29yZCA9IG5ldyBNYXA8c3RyaW5nLCBUVmFsdWU+KCk7XHJcbiAgICAgICAgICAgIGlubmVyLmZvckVhY2goKHZhbHVlLCBzZWNvbmQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlubmVyUmVjb3JkLnNldChjcmVhdGVTdHJpbmdLZXkyKHNlY29uZCksIHZhbHVlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5zZXQoY3JlYXRlU3RyaW5nS2V5MShmaXJzdCksIG1hcFRvUmVjb3JkKGlubmVyUmVjb3JkKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG1hcFRvUmVjb3JkKHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZm9yRWFjaChhY3Rpb246ICh2YWx1ZTogVFZhbHVlLCBrZXk6IER1YWxLZXk8VEtleTEsIFRLZXkyPikgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMpIHtcclxuICAgICAgICAgICAgYWN0aW9uKHZhbHVlLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVkdWNlPFRSZXN1bHQ+KFxyXG4gICAgICAgIHJlZHVjZXI6IChzZWVkOiBUUmVzdWx0LCBlbGVtZW50OiBUVmFsdWUsIGtleTogRHVhbEtleTxUS2V5MSwgVEtleTI+KSA9PiBUUmVzdWx0LFxyXG4gICAgICAgIHNlZWQ6IFRSZXN1bHRcclxuICAgICk6IFRSZXN1bHQge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBzZWVkO1xyXG4gICAgICAgIHRoaXMuZm9yRWFjaCgoZWxlbWVudCwga2V5KSA9PiAocmVzdWx0ID0gcmVkdWNlcihyZXN1bHQsIGVsZW1lbnQsIGtleSkpKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOS4u+OBquS9v+eUqOebrueahOOBr+ODh+ODkOODg+OCsOOBruOBn+OCgeOBq+aWh+Wtl+WIl+WMluOBleOBm+OCi+OBn+OCgVxyXG4gICAgcHVibGljIHRvSlNPTih2YWx1ZVRvU3RyaW5nPzogKHZhbHVlOiBUVmFsdWUpID0+IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgICAgICBbLi4udGhpcy5fY29yZV0ubWFwKChba2V5MSwgdmFsdWVdKSA9PiBbXHJcbiAgICAgICAgICAgICAgICBrZXkxLFxyXG4gICAgICAgICAgICAgICAgWy4uLnZhbHVlXS5tYXAoKFtrZXkyLCB2YWx1ZV0pID0+IFtcclxuICAgICAgICAgICAgICAgICAgICBrZXkyLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlVG9TdHJpbmcgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogdmFsdWVUb1N0cmluZyh2YWx1ZSksXHJcbiAgICAgICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+ID0gT21pdDxcclxuICAgIFJlYWRvbmx5PER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+PixcclxuICAgICdzZXQnIHwgJ2RlbGV0ZScgfCAnZ2V0QnlGaXJzdCdcclxuPiAmIHtcclxuICAgIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8cmVhZG9ubHkgW0R1YWxLZXk8VEtleTEsIFRLZXkyPiwgVFZhbHVlXT47XHJcbiAgICBnZXRCeUZpcnN0KGtleTogVEtleTEpOiBSZWFkb25seU1hcDxUS2V5MiwgVFZhbHVlPiB8IHVuZGVmaW5lZDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBncm91cEpvaW4gPSA8VEtleTEsIFRLZXkyLCBUTGVmdCwgVFJpZ2h0PihcclxuICAgIGxlZnQ6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRMZWZ0PixcclxuICAgIHJpZ2h0OiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUUmlnaHQ+XHJcbik6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBHcm91cEpvaW5SZXN1bHQ8VExlZnQsIFRSaWdodD4+ID0+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgR3JvdXBKb2luUmVzdWx0PFRMZWZ0LCBUUmlnaHQ+PigpO1xyXG4gICAgY29uc3QgcmlnaHRDbG9uZSA9IHJpZ2h0LmNsb25lKCk7XHJcbiAgICBsZWZ0LmZvckVhY2goKGxlZnRFbGVtZW50LCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCByaWdodEVsZW1lbnQgPSByaWdodENsb25lLmdldChrZXkpO1xyXG4gICAgICAgIHJpZ2h0Q2xvbmUuZGVsZXRlKGtleSk7XHJcbiAgICAgICAgaWYgKHJpZ2h0RWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB7IHR5cGU6ICdsZWZ0JywgbGVmdDogbGVmdEVsZW1lbnQgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LnNldChrZXksIHtcclxuICAgICAgICAgICAgdHlwZTogJ2JvdGgnLFxyXG4gICAgICAgICAgICBsZWZ0OiBsZWZ0RWxlbWVudCxcclxuICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0RWxlbWVudCxcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmlnaHRDbG9uZS5mb3JFYWNoKChyaWdodEVsZW1lbnQsIGtleSkgPT4ge1xyXG4gICAgICAgIHJlc3VsdC5zZXQoa2V5LCB7IHR5cGU6ICdyaWdodCcsIHJpZ2h0OiByaWdodEVsZW1lbnQgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG4vLyBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF3jgYzov5TjgZXjgozjgovjgZPjgajjga/jgarjgYRcclxuZXhwb3J0IGNvbnN0IGdyb3VwSm9pbjMgPSA8VEtleTEsIFRLZXkyLCBUMSwgVDIsIFQzPihcclxuICAgIHNvdXJjZTE6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQxPixcclxuICAgIHNvdXJjZTI6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQyPixcclxuICAgIHNvdXJjZTM6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQzPlxyXG4pOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgcmVhZG9ubHkgW1QxIHwgdW5kZWZpbmVkLCBUMiB8IHVuZGVmaW5lZCwgVDMgfCB1bmRlZmluZWRdPiA9PiB7XHJcbiAgICBjb25zdCBzb3VyY2UgPSBncm91cEpvaW4oc291cmNlMSwgZ3JvdXBKb2luKHNvdXJjZTIsIHNvdXJjZTMpKTtcclxuICAgIHJldHVybiBzb3VyY2UubWFwKGdyb3VwID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGdyb3VwLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBsZWZ0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtncm91cC5sZWZ0LCB1bmRlZmluZWQsIHVuZGVmaW5lZF07XHJcbiAgICAgICAgICAgIGNhc2UgcmlnaHQ6XHJcbiAgICAgICAgICAgIGNhc2UgYm90aDoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0MSA9ICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwLnR5cGUgPT09IGJvdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyb3VwLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICB9KSgpO1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChncm91cC5yaWdodC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBsZWZ0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3Jlc3VsdDEsIGdyb3VwLnJpZ2h0LmxlZnQsIHVuZGVmaW5lZF07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSByaWdodDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQxLCB1bmRlZmluZWQsIGdyb3VwLnJpZ2h0LnJpZ2h0XTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIGJvdGg6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbcmVzdWx0MSwgZ3JvdXAucmlnaHQubGVmdCwgZ3JvdXAucmlnaHQucmlnaHRdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn07XHJcblxyXG4vLyBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXeOBjOi/lOOBleOCjOOCi+OBk+OBqOOBr+OBquOBhFxyXG5leHBvcnQgY29uc3QgZ3JvdXBKb2luNCA9IDxUS2V5MSwgVEtleTIsIFQxLCBUMiwgVDMsIFQ0PihcclxuICAgIHNvdXJjZTE6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQxPixcclxuICAgIHNvdXJjZTI6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQyPixcclxuICAgIHNvdXJjZTM6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQzPixcclxuICAgIHNvdXJjZTQ6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQ0PlxyXG4pOiBEdWFsS2V5TWFwPFxyXG4gICAgVEtleTEsXHJcbiAgICBUS2V5MixcclxuICAgIHJlYWRvbmx5IFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWQsIFQzIHwgdW5kZWZpbmVkLCBUNCB8IHVuZGVmaW5lZF1cclxuPiA9PiB7XHJcbiAgICBjb25zdCBzb3VyY2UgPSBncm91cEpvaW4oZ3JvdXBKb2luMyhzb3VyY2UxLCBzb3VyY2UyLCBzb3VyY2UzKSwgc291cmNlNCk7XHJcbiAgICByZXR1cm4gc291cmNlLm1hcChncm91cCA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChncm91cC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgbGVmdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZ3JvdXAubGVmdCwgdW5kZWZpbmVkXTtcclxuICAgICAgICAgICAgY2FzZSByaWdodDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZ3JvdXAucmlnaHRdO1xyXG4gICAgICAgICAgICBjYXNlIGJvdGg6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZ3JvdXAubGVmdCwgZ3JvdXAucmlnaHRdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn07XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVhbEtleU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcm5hbC9kdWFsS2V5TWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUE2RDtBQUM3RCxtQ0FBc0M7QUFPL0IsTUFBTSxZQUFZLEdBQUcsQ0FBUyxNQUF1QixFQUFVLEVBQUU7SUFDcEUsT0FBTyxZQUFZLE1BQU0sQ0FBQyxLQUFLLGFBQWEsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDO0FBQ2xFLENBQUMsQ0FBQztBQUZXLFFBQUEsWUFBWSxnQkFFdkI7QUFVRixNQUFhLFVBQVU7SUFHbkIsWUFBbUIsU0FBa0Q7UUFDakUsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0lBQ3RELENBQUM7SUFFTyxNQUFNLENBQUMsTUFBTSxDQUNqQixNQUErQyxFQUMvQyxPQUFpRTtRQUVqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUNyRCxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxFQUFFO1lBQ3BDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2xCLFNBQVM7YUFDWjtZQUNELE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1lBQ3hDLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUU7Z0JBQ3JDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFF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RSxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbkQsS0FBSyxZQUFJO3dCQUNMLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDN0Q7YUFDSjtTQUNKO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUE3QlcsUUFBQSxVQUFVLGNBNkJyQjtBQUVGLHlEQUF5RDtBQUNsRCxNQUFNLFVBQVUsR0FBRyxDQUN0QixPQUE2QyxFQUM3QyxPQUE2QyxFQUM3QyxPQUE2QyxFQUM3QyxPQUE2QyxFQUsvQyxFQUFFO0lBQ0EsTUFBTSxNQUFNLEdBQUcsaUJBQVMsQ0FBQyxrQkFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3RCLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNoQixLQUFLLFlBQUk7Z0JBQ0wsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN0QyxLQUFLLGFBQUs7Z0JBQ04sT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxLQUFLLFlBQUksQ0FBQyxDQUFDO2dCQUNQLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZDO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQXRCVyxRQUFBLFVBQVUsY0FzQnJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm90aCwgR3JvdXBKb2luUmVzdWx0LCBsZWZ0LCByaWdodCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBtYXBUb1JlY29yZCB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IHR5cGUgRHVhbEtleTxUMSwgVDI+ID0ge1xyXG4gICAgcmVhZG9ubHkgZmlyc3Q6IFQxO1xyXG4gICAgcmVhZG9ubHkgc2Vjb25kOiBUMjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB0b0pzb25TdHJpbmcgPSA8VDEsIFQyPihzb3VyY2U6IER1YWxLZXk8VDEsIFQyPik6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gYHsgZmlyc3Q6ICR7c291cmNlLmZpcnN0fSwgc2Vjb25kOiAke3NvdXJjZS5zZWNvbmR9IH1gO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRHVhbEtleU1hcFNvdXJjZTxUS2V5MSwgVEtleTIsIFRWYWx1ZT4gPVxyXG4gICAgfCBNYXA8VEtleTEsIE1hcDxUS2V5MiwgVFZhbHVlPj5cclxuICAgIHwgTWFwPFRLZXkxLCBSZWFkb25seU1hcDxUS2V5MiwgVFZhbHVlPj5cclxuICAgIHwgUmVhZG9ubHlNYXA8VEtleTEsIE1hcDxUS2V5MiwgVFZhbHVlPj5cclxuICAgIHwgUmVhZG9ubHlNYXA8VEtleTEsIFJlYWRvbmx5TWFwPFRLZXkyLCBUVmFsdWU+PjtcclxuXHJcbnR5cGUgUmVjb3JkS2V5ID0gc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sO1xyXG5cclxuZXhwb3J0IGNsYXNzIER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+IHtcclxuICAgIHByaXZhdGUgX2NvcmU6IE1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWU+PjtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc291cmNlTWFwPzogRHVhbEtleU1hcFNvdXJjZTxUS2V5MSwgVEtleTIsIFRWYWx1ZT4pIHtcclxuICAgICAgICBpZiAoc291cmNlTWFwICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29yZSA9IER1YWxLZXlNYXAubWFwTWFwKHNvdXJjZU1hcCwgeCA9PiB4KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb3JlID0gbmV3IE1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWU+PigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIG1hcE1hcDxUS2V5MSwgVEtleTIsIFRWYWx1ZTEsIFRWYWx1ZTI+KFxyXG4gICAgICAgIHNvdXJjZTogRHVhbEtleU1hcFNvdXJjZTxUS2V5MSwgVEtleTIsIFRWYWx1ZTE+LFxyXG4gICAgICAgIG1hcHBpbmc6IChzb3VyY2U6IFRWYWx1ZTEsIGtleTogRHVhbEtleTxUS2V5MSwgVEtleTI+KSA9PiBUVmFsdWUyXHJcbiAgICApOiBNYXA8VEtleTEsIE1hcDxUS2V5MiwgVFZhbHVlMj4+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPFRLZXkxLCBNYXA8VEtleTIsIFRWYWx1ZTI+PigpO1xyXG4gICAgICAgIGZvciAoY29uc3QgW2ZpcnN0S2V5LCBmaXJzdF0gb2Ygc291cmNlKSB7XHJcbiAgICAgICAgICAgIGlmIChmaXJzdC5zaXplID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB0b1NldCA9IG5ldyBNYXA8VEtleTIsIFRWYWx1ZTI+KCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3NlY29uZEtleSwgc2Vjb25kXSBvZiBmaXJzdCkge1xyXG4gICAgICAgICAgICAgICAgdG9TZXQuc2V0KHNlY29uZEtleSwgbWFwcGluZyhzZWNvbmQsIHsgZmlyc3Q6IGZpcnN0S2V5LCBzZWNvbmQ6IHNlY29uZEtleSB9KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdWx0LnNldChmaXJzdEtleSwgdG9TZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGNyZWF0ZTxUS2V5MSwgVEtleTIsIFRWYWx1ZTEsIFRWYWx1ZTI+KFxyXG4gICAgICAgIHNvdXJjZTogRHVhbEtleU1hcFNvdXJjZTxUS2V5MSwgVEtleTIsIFRWYWx1ZTE+IHwgRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRWYWx1ZTE+LFxyXG4gICAgICAgIG1hcHBpbmc6IChzb3VyY2U6IFRWYWx1ZTEsIGtleTogRHVhbEtleTxUS2V5MSwgVEtleTI+KSA9PiBUVmFsdWUyXHJcbiAgICApOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlMj4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlMj4oKTtcclxuICAgICAgICByZXN1bHQuX2NvcmUgPSBEdWFsS2V5TWFwLm1hcE1hcChcclxuICAgICAgICAgICAgc291cmNlIGluc3RhbmNlb2YgRHVhbEtleU1hcCA/IHNvdXJjZS5fY29yZSA6IHNvdXJjZSxcclxuICAgICAgICAgICAgbWFwcGluZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG9mUmVjb3JkPFRLZXkxIGV4dGVuZHMgUmVjb3JkS2V5LCBUS2V5MiBleHRlbmRzIFJlY29yZEtleSwgVFZhbHVlPihcclxuICAgICAgICBzb3VyY2U6IFJlY29yZDxUS2V5MSwgUmVjb3JkPFRLZXkyLCBUVmFsdWUgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkPlxyXG4gICAgKTogRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRWYWx1ZT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5MSBpbiBzb3VyY2UpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5uZXI6IFJlY29yZDxUS2V5MiwgVFZhbHVlIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCA9IHNvdXJjZVtrZXkxXTtcclxuICAgICAgICAgICAgaWYgKGlubmVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5MiBpbiBpbm5lcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWU6IFRWYWx1ZSB8IHVuZGVmaW5lZCA9IGlubmVyW2tleTJdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHsgZmlyc3Q6IGtleTEsIHNlY29uZDoga2V5MiB9LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWFwPFRSZXN1bHQ+KFxyXG4gICAgICAgIG1hcHBpbmc6IChzb3VyY2U6IFRWYWx1ZSwga2V5OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pID0+IFRSZXN1bHRcclxuICAgICk6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIER1YWxLZXlNYXAuY3JlYXRlKHRoaXMsIG1hcHBpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbG9uZSgpOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiB7XHJcbiAgICAgICAgcmV0dXJuIER1YWxLZXlNYXAuY3JlYXRlKHRoaXMsIHggPT4geCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCh7IGZpcnN0LCBzZWNvbmQgfTogRHVhbEtleTxUS2V5MSwgVEtleTI+KTogVFZhbHVlIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBpbm5lciA9IHRoaXMuX2NvcmUuZ2V0KGZpcnN0KTtcclxuICAgICAgICBpZiAoaW5uZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaW5uZXIuZ2V0KHNlY29uZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEJ5Rmlyc3QoZmlyc3Q6IFRLZXkxKTogTWFwPFRLZXkyLCBUVmFsdWU+IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY29yZS5nZXQoZmlyc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQoXHJcbiAgICAgICAgeyBmaXJzdCwgc2Vjb25kIH06IER1YWxLZXk8VEtleTEsIFRLZXkyPixcclxuICAgICAgICB2YWx1ZTogVFZhbHVlXHJcbiAgICApOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiB7XHJcbiAgICAgICAgbGV0IGlubmVyID0gdGhpcy5fY29yZS5nZXQoZmlyc3QpO1xyXG4gICAgICAgIGlmIChpbm5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlubmVyID0gbmV3IE1hcDxUS2V5MiwgVFZhbHVlPigpO1xyXG4gICAgICAgICAgICB0aGlzLl9jb3JlLnNldChmaXJzdCwgaW5uZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbm5lci5zZXQoc2Vjb25kLCB2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZSh7IGZpcnN0LCBzZWNvbmQgfTogRHVhbEtleTxUS2V5MSwgVEtleTI+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgaW5uZXIgPSB0aGlzLl9jb3JlLmdldChmaXJzdCk7XHJcbiAgICAgICAgaWYgKGlubmVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBpbm5lci5kZWxldGUoc2Vjb25kKTtcclxuICAgICAgICBpZiAoaW5uZXIuc2l6ZSA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jb3JlLmRlbGV0ZShmaXJzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhcyhrZXk6IER1YWxLZXk8VEtleTEsIFRLZXkyPik6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgKltTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8cmVhZG9ubHkgW0R1YWxLZXk8VEtleTEsIFRLZXkyPiwgVFZhbHVlXT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgW2ZpcnN0S2V5LCBmaXJzdF0gb2YgdGhpcy5fY29yZSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtzZWNvbmRLZXksIHNlY29uZF0gb2YgZmlyc3QpIHtcclxuICAgICAgICAgICAgICAgIHlpZWxkIFt7IGZpcnN0OiBmaXJzdEtleSwgc2Vjb25kOiBzZWNvbmRLZXkgfSwgc2Vjb25kXSBhcyBjb25zdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9BcnJheSgpIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9NYXAoKSB7XHJcbiAgICAgICAgcmV0dXJuIER1YWxLZXlNYXAubWFwTWFwKHRoaXMuX2NvcmUsIHggPT4geCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvU3RyaW5nUmVjb3JkKFxyXG4gICAgICAgIGNyZWF0ZVN0cmluZ0tleTE6IChmaXJzdDogVEtleTEpID0+IHN0cmluZyxcclxuICAgICAgICBjcmVhdGVTdHJpbmdLZXkyOiAoc2Vjb25kOiBUS2V5MikgPT4gc3RyaW5nXHJcbiAgICApOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBUVmFsdWU+PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFRWYWx1ZT4+KCk7XHJcbiAgICAgICAgdGhpcy5fY29yZS5mb3JFYWNoKChpbm5lciwgZmlyc3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5uZXJSZWNvcmQgPSBuZXcgTWFwPHN0cmluZywgVFZhbHVlPigpO1xyXG4gICAgICAgICAgICBpbm5lci5mb3JFYWNoKCh2YWx1ZSwgc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpbm5lclJlY29yZC5zZXQoY3JlYXRlU3RyaW5nS2V5MihzZWNvbmQpLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXN1bHQuc2V0KGNyZWF0ZVN0cmluZ0tleTEoZmlyc3QpLCBtYXBUb1JlY29yZChpbm5lclJlY29yZCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBtYXBUb1JlY29yZChyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpemUgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGZvckVhY2goYWN0aW9uOiAodmFsdWU6IFRWYWx1ZSwga2V5OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzKSB7XHJcbiAgICAgICAgICAgIGFjdGlvbih2YWx1ZSwga2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZHVjZTxUUmVzdWx0PihcclxuICAgICAgICByZWR1Y2VyOiAoc2VlZDogVFJlc3VsdCwgZWxlbWVudDogVFZhbHVlLCBrZXk6IER1YWxLZXk8VEtleTEsIFRLZXkyPikgPT4gVFJlc3VsdCxcclxuICAgICAgICBzZWVkOiBUUmVzdWx0XHJcbiAgICApOiBUUmVzdWx0IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gc2VlZDtcclxuICAgICAgICB0aGlzLmZvckVhY2goKGVsZW1lbnQsIGtleSkgPT4gKHJlc3VsdCA9IHJlZHVjZXIocmVzdWx0LCBlbGVtZW50LCBrZXkpKSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvLyDkuLvjgarkvb/nlKjnm67nmoTjga/jg4fjg5Djg4PjgrDjga7jgZ/jgoHjgavmloflrZfliJfljJbjgZXjgZvjgovjgZ/jgoFcclxuICAgIHB1YmxpYyB0b0pTT04odmFsdWVUb1N0cmluZz86ICh2YWx1ZTogVFZhbHVlKSA9PiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcclxuICAgICAgICAgICAgWy4uLnRoaXMuX2NvcmVdLm1hcCgoW2tleTEsIHZhbHVlXSkgPT4gW1xyXG4gICAgICAgICAgICAgICAga2V5MSxcclxuICAgICAgICAgICAgICAgIFsuLi52YWx1ZV0ubWFwKChba2V5MiwgdmFsdWVdKSA9PiBbXHJcbiAgICAgICAgICAgICAgICAgICAga2V5MixcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvU3RyaW5nID09PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHZhbHVlVG9TdHJpbmcodmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVhZG9ubHlEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiA9IE9taXQ8XHJcbiAgICBSZWFkb25seTxEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPj4sXHJcbiAgICAnc2V0JyB8ICdkZWxldGUnIHwgJ2dldEJ5Rmlyc3QnXHJcbj4gJiB7XHJcbiAgICBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPHJlYWRvbmx5IFtEdWFsS2V5PFRLZXkxLCBUS2V5Mj4sIFRWYWx1ZV0+O1xyXG4gICAgZ2V0QnlGaXJzdChrZXk6IFRLZXkxKTogUmVhZG9ubHlNYXA8VEtleTIsIFRWYWx1ZT4gfCB1bmRlZmluZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ3JvdXBKb2luID0gPFRLZXkxLCBUS2V5MiwgVExlZnQsIFRSaWdodD4oXHJcbiAgICBsZWZ0OiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUTGVmdD4sXHJcbiAgICByaWdodDogUmVhZG9ubHlEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFJpZ2h0PlxyXG4pOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgR3JvdXBKb2luUmVzdWx0PFRMZWZ0LCBUUmlnaHQ+PiA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIEdyb3VwSm9pblJlc3VsdDxUTGVmdCwgVFJpZ2h0Pj4oKTtcclxuICAgIGNvbnN0IHJpZ2h0Q2xvbmUgPSByaWdodC5jbG9uZSgpO1xyXG4gICAgbGVmdC5mb3JFYWNoKChsZWZ0RWxlbWVudCwga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmlnaHRFbGVtZW50ID0gcmlnaHRDbG9uZS5nZXQoa2V5KTtcclxuICAgICAgICByaWdodENsb25lLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgIGlmIChyaWdodEVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgeyB0eXBlOiAnbGVmdCcsIGxlZnQ6IGxlZnRFbGVtZW50IH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5zZXQoa2V5LCB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdib3RoJyxcclxuICAgICAgICAgICAgbGVmdDogbGVmdEVsZW1lbnQsXHJcbiAgICAgICAgICAgIHJpZ2h0OiByaWdodEVsZW1lbnQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJpZ2h0Q2xvbmUuZm9yRWFjaCgocmlnaHRFbGVtZW50LCBrZXkpID0+IHtcclxuICAgICAgICByZXN1bHQuc2V0KGtleSwgeyB0eXBlOiAncmlnaHQnLCByaWdodDogcmlnaHRFbGVtZW50IH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuLy8gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRd44GM6L+U44GV44KM44KL44GT44Go44Gv44Gq44GEXHJcbmV4cG9ydCBjb25zdCBncm91cEpvaW4zID0gPFRLZXkxLCBUS2V5MiwgVDEsIFQyLCBUMz4oXHJcbiAgICBzb3VyY2UxOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMT4sXHJcbiAgICBzb3VyY2UyOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMj4sXHJcbiAgICBzb3VyY2UzOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMz5cclxuKTogRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIHJlYWRvbmx5IFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWQsIFQzIHwgdW5kZWZpbmVkXT4gPT4ge1xyXG4gICAgY29uc3Qgc291cmNlID0gZ3JvdXBKb2luKHNvdXJjZTEsIGdyb3VwSm9pbihzb3VyY2UyLCBzb3VyY2UzKSk7XHJcbiAgICByZXR1cm4gc291cmNlLm1hcChncm91cCA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChncm91cC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgbGVmdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbZ3JvdXAubGVmdCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xyXG4gICAgICAgICAgICBjYXNlIHJpZ2h0OlxyXG4gICAgICAgICAgICBjYXNlIGJvdGg6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDEgPSAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cC50eXBlID09PSBib3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cC5sZWZ0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZ3JvdXAucmlnaHQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbGVmdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQxLCBncm91cC5yaWdodC5sZWZ0LCB1bmRlZmluZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgcmlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbcmVzdWx0MSwgdW5kZWZpbmVkLCBncm91cC5yaWdodC5yaWdodF07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBib3RoOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3Jlc3VsdDEsIGdyb3VwLnJpZ2h0LmxlZnQsIGdyb3VwLnJpZ2h0LnJpZ2h0XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59O1xyXG5cclxuLy8gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF3jgYzov5TjgZXjgozjgovjgZPjgajjga/jgarjgYRcclxuZXhwb3J0IGNvbnN0IGdyb3VwSm9pbjQgPSA8VEtleTEsIFRLZXkyLCBUMSwgVDIsIFQzLCBUND4oXHJcbiAgICBzb3VyY2UxOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMT4sXHJcbiAgICBzb3VyY2UyOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMj4sXHJcbiAgICBzb3VyY2UzOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMz4sXHJcbiAgICBzb3VyY2U0OiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUND5cclxuKTogRHVhbEtleU1hcDxcclxuICAgIFRLZXkxLFxyXG4gICAgVEtleTIsXHJcbiAgICByZWFkb25seSBbVDEgfCB1bmRlZmluZWQsIFQyIHwgdW5kZWZpbmVkLCBUMyB8IHVuZGVmaW5lZCwgVDQgfCB1bmRlZmluZWRdXHJcbj4gPT4ge1xyXG4gICAgY29uc3Qgc291cmNlID0gZ3JvdXBKb2luKGdyb3VwSm9pbjMoc291cmNlMSwgc291cmNlMiwgc291cmNlMyksIHNvdXJjZTQpO1xyXG4gICAgcmV0dXJuIHNvdXJjZS5tYXAoZ3JvdXAgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoZ3JvdXAudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIGxlZnQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmdyb3VwLmxlZnQsIHVuZGVmaW5lZF07XHJcbiAgICAgICAgICAgIGNhc2UgcmlnaHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGdyb3VwLnJpZ2h0XTtcclxuICAgICAgICAgICAgY2FzZSBib3RoOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmdyb3VwLmxlZnQsIGdyb3VwLnJpZ2h0XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59O1xyXG4iXX0=
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createStateMap = exports.equals = exports.toJsonString = exports.stringToCompositeKey = exports.compositeKeyToString = void 0;
exports.createStateMap = exports.equals = exports.toJsonString = exports.stringToCompositeKey = void 0;
const customDualKeyMap_1 = require("./customDualKeyMap");
const compositeKeyToString = (source) => {
return `${source.id}@${source.createdBy}`;
};
exports.compositeKeyToString = compositeKeyToString;
const stringToCompositeKey = (source) => {

@@ -33,2 +29,2 @@ const array = source.split('@');

exports.createStateMap = createStateMap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvc3RhdGVNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQTRGO0FBUXJGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFvQixFQUFVLEVBQUU7SUFDakUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUZXLFFBQUEsb0JBQW9CLHdCQUUvQjtBQUVLLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQXVCLEVBQUU7SUFDeEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBTlcsUUFBQSxvQkFBb0Isd0JBTS9CO0FBRUssTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFvQixFQUFVLEVBQUU7SUFDekQsT0FBTyxTQUFTLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixNQUFNLENBQUMsU0FBUyxJQUFJLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRlcsUUFBQSxZQUFZLGdCQUV2QjtBQUVLLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBZSxFQUFFLENBQWUsRUFBVyxFQUFFO0lBQ2hFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFGVyxRQUFBLE1BQU0sVUFFakI7QUFFRixNQUFNLFVBQVUsR0FBNkM7SUFDekQsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUQsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Q0FDekQsQ0FBQztBQUtLLE1BQU0sY0FBYyxHQUFHLENBQzFCLE1BQTRFLEVBQ2pFLEVBQUU7SUFDYixPQUFPLElBQUksbUNBQWdCLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFKVyxRQUFBLGNBQWMsa0JBSXpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tRHVhbEtleU1hcCwgS2V5RmFjdG9yeSwgUmVhZG9ubHlDdXN0b21EdWFsS2V5TWFwIH0gZnJvbSAnLi9jdXN0b21EdWFsS2V5TWFwJztcclxuaW1wb3J0IHsgRHVhbEtleU1hcCwgRHVhbEtleU1hcFNvdXJjZSB9IGZyb20gJy4vZHVhbEtleU1hcCc7XHJcblxyXG5leHBvcnQgdHlwZSBDb21wb3NpdGVLZXkgPSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgY3JlYXRlZEJ5OiBzdHJpbmc7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY29tcG9zaXRlS2V5VG9TdHJpbmcgPSAoc291cmNlOiBDb21wb3NpdGVLZXkpOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIGAke3NvdXJjZS5pZH1AJHtzb3VyY2UuY3JlYXRlZEJ5fWA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc3RyaW5nVG9Db21wb3NpdGVLZXkgPSAoc291cmNlOiBzdHJpbmcpOiBDb21wb3NpdGVLZXkgfCBudWxsID0+IHtcclxuICAgIGNvbnN0IGFycmF5ID0gc291cmNlLnNwbGl0KCdAJyk7XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoICE9PSAyKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBpZDogYXJyYXlbMF0hLCBjcmVhdGVkQnk6IGFycmF5WzFdISB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvSnNvblN0cmluZyA9IChzb3VyY2U6IENvbXBvc2l0ZUtleSk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gYHsgaWQ6ICR7c291cmNlLmlkfSwgY3JlYXRlZEJ5OiAke3NvdXJjZS5jcmVhdGVkQnl9IH1gO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGVxdWFscyA9ICh4OiBDb21wb3NpdGVLZXksIHk6IENvbXBvc2l0ZUtleSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgcmV0dXJuIHguY3JlYXRlZEJ5ID09PSB5LmNyZWF0ZWRCeSAmJiB4LmlkID09PSB5LmlkO1xyXG59O1xyXG5cclxuY29uc3Qga2V5RmFjdG9yeTogS2V5RmFjdG9yeTxDb21wb3NpdGVLZXksIHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgIGNyZWF0ZUR1YWxLZXk6IHggPT4gKHsgZmlyc3Q6IHguY3JlYXRlZEJ5LCBzZWNvbmQ6IHguaWQgfSksXHJcbiAgICBjcmVhdGVLZXk6IHggPT4gKHsgY3JlYXRlZEJ5OiB4LmZpcnN0LCBpZDogeC5zZWNvbmQgfSksXHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBTdGF0ZU1hcDxUPiA9IEN1c3RvbUR1YWxLZXlNYXA8Q29tcG9zaXRlS2V5LCBzdHJpbmcsIHN0cmluZywgVD47XHJcbmV4cG9ydCB0eXBlIFJlYWRvbmx5U3RhdGVNYXA8VD4gPSBSZWFkb25seUN1c3RvbUR1YWxLZXlNYXA8Q29tcG9zaXRlS2V5LCBzdHJpbmcsIHN0cmluZywgVD47XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlU3RhdGVNYXAgPSA8VD4oXHJcbiAgICBzb3VyY2U/OiBEdWFsS2V5TWFwU291cmNlPHN0cmluZywgc3RyaW5nLCBUPiB8IER1YWxLZXlNYXA8c3RyaW5nLCBzdHJpbmcsIFQ+XHJcbik6IFN0YXRlTWFwPFQ+ID0+IHtcclxuICAgIHJldHVybiBuZXcgQ3VzdG9tRHVhbEtleU1hcCh7IC4uLmtleUZhY3RvcnksIHNvdXJjZU1hcDogc291cmNlIH0pO1xyXG59O1xyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvc3RhdGVNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQTRGO0FBUXJGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQXVCLEVBQUU7SUFDeEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBTlcsUUFBQSxvQkFBb0Isd0JBTS9CO0FBRUssTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFvQixFQUFVLEVBQUU7SUFDekQsT0FBTyxTQUFTLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixNQUFNLENBQUMsU0FBUyxJQUFJLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRlcsUUFBQSxZQUFZLGdCQUV2QjtBQUVLLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBZSxFQUFFLENBQWUsRUFBVyxFQUFFO0lBQ2hFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFGVyxRQUFBLE1BQU0sVUFFakI7QUFFRixNQUFNLFVBQVUsR0FBNkM7SUFDekQsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUQsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Q0FDekQsQ0FBQztBQUtLLE1BQU0sY0FBYyxHQUFHLENBQzFCLE1BQTRFLEVBQ2pFLEVBQUU7SUFDYixPQUFPLElBQUksbUNBQWdCLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFKVyxRQUFBLGNBQWMsa0JBSXpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tRHVhbEtleU1hcCwgS2V5RmFjdG9yeSwgUmVhZG9ubHlDdXN0b21EdWFsS2V5TWFwIH0gZnJvbSAnLi9jdXN0b21EdWFsS2V5TWFwJztcclxuaW1wb3J0IHsgRHVhbEtleU1hcCwgRHVhbEtleU1hcFNvdXJjZSB9IGZyb20gJy4vZHVhbEtleU1hcCc7XHJcblxyXG5leHBvcnQgdHlwZSBDb21wb3NpdGVLZXkgPSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgY3JlYXRlZEJ5OiBzdHJpbmc7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc3RyaW5nVG9Db21wb3NpdGVLZXkgPSAoc291cmNlOiBzdHJpbmcpOiBDb21wb3NpdGVLZXkgfCBudWxsID0+IHtcclxuICAgIGNvbnN0IGFycmF5ID0gc291cmNlLnNwbGl0KCdAJyk7XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoICE9PSAyKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBpZDogYXJyYXlbMF0hLCBjcmVhdGVkQnk6IGFycmF5WzFdISB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvSnNvblN0cmluZyA9IChzb3VyY2U6IENvbXBvc2l0ZUtleSk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gYHsgaWQ6ICR7c291cmNlLmlkfSwgY3JlYXRlZEJ5OiAke3NvdXJjZS5jcmVhdGVkQnl9IH1gO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGVxdWFscyA9ICh4OiBDb21wb3NpdGVLZXksIHk6IENvbXBvc2l0ZUtleSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgcmV0dXJuIHguY3JlYXRlZEJ5ID09PSB5LmNyZWF0ZWRCeSAmJiB4LmlkID09PSB5LmlkO1xyXG59O1xyXG5cclxuY29uc3Qga2V5RmFjdG9yeTogS2V5RmFjdG9yeTxDb21wb3NpdGVLZXksIHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgIGNyZWF0ZUR1YWxLZXk6IHggPT4gKHsgZmlyc3Q6IHguY3JlYXRlZEJ5LCBzZWNvbmQ6IHguaWQgfSksXHJcbiAgICBjcmVhdGVLZXk6IHggPT4gKHsgY3JlYXRlZEJ5OiB4LmZpcnN0LCBpZDogeC5zZWNvbmQgfSksXHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBTdGF0ZU1hcDxUPiA9IEN1c3RvbUR1YWxLZXlNYXA8Q29tcG9zaXRlS2V5LCBzdHJpbmcsIHN0cmluZywgVD47XHJcbmV4cG9ydCB0eXBlIFJlYWRvbmx5U3RhdGVNYXA8VD4gPSBSZWFkb25seUN1c3RvbUR1YWxLZXlNYXA8Q29tcG9zaXRlS2V5LCBzdHJpbmcsIHN0cmluZywgVD47XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlU3RhdGVNYXAgPSA8VD4oXHJcbiAgICBzb3VyY2U/OiBEdWFsS2V5TWFwU291cmNlPHN0cmluZywgc3RyaW5nLCBUPiB8IER1YWxLZXlNYXA8c3RyaW5nLCBzdHJpbmcsIFQ+XHJcbik6IFN0YXRlTWFwPFQ+ID0+IHtcclxuICAgIHJldHVybiBuZXcgQ3VzdG9tRHVhbEtleU1hcCh7IC4uLmtleUZhY3RvcnksIHNvdXJjZU1hcDogc291cmNlIH0pO1xyXG59O1xyXG4iXX0=
export { createFirebaseConfig } from './internal/config';
export { anonymous, authToken, $free, $system } from './internal/constants';
export { CustomDualKeyMap, groupJoin as groupJoinCustomDualKeyMap, } from './internal/customDualKeyMap';
export { DualKeyMap, dualKeyToString, toJsonString as dualKeyToJsonString, groupJoin as groupJoinDualKeyMap, groupJoin3 as groupJoin3DualKeyMap, groupJoin4 as groupJoin4DualKeyMap, } from './internal/dualKeyMap';
export { DualKeyMap, toJsonString as dualKeyToJsonString, groupJoin as groupJoinDualKeyMap, groupJoin3 as groupJoin3DualKeyMap, groupJoin4 as groupJoin4DualKeyMap, } from './internal/dualKeyMap';
export { strIndex5Array, isStrIndex5, strIndex10Array, isStrIndex10, strIndex20Array, isStrIndex20, strIndex100Array, isStrIndex100, } from './internal/indexes';
export { JsonObject } from './internal/jsonObject';
export { keyNames } from './internal/keyNames';
export { groupJoin as groupJoinMap } from './internal/map';

@@ -11,5 +12,5 @@ export { PublicChannelKey } from './internal/publicChannelKey';

export { groupJoin as groupJoinSet } from './internal/set';
export { compositeKeyToString, stringToCompositeKey, toJsonString as stateMapToJsonString, equals as compositeKeyEquals, createStateMap, } from './internal/stateMap';
export { stringToCompositeKey, toJsonString as stateMapToJsonString, equals as compositeKeyEquals, createStateMap, } from './internal/stateMap';
export { left, right, both } from './internal/types';
export { chooseDualKeyRecord, chooseRecord, dualKeyRecordFind, dualKeyRecordForEach, isRecordEmpty, mapDualKeyRecord, mapRecord, mapToRecord, recordForEach, recordForEachAsync, recordToArray, recordToDualKeyMap, dualKeyRecordToDualKeyMap, recordToMap, } from './internal/utils';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBRUgsZ0JBQWdCLEVBRWhCLFNBQVMsSUFBSSx5QkFBeUIsR0FDekMsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBRUgsVUFBVSxFQUdWLGVBQWUsRUFDZixZQUFZLElBQUksbUJBQW1CLEVBQ25DLFNBQVMsSUFBSSxtQkFBbUIsRUFDaEMsVUFBVSxJQUFJLG9CQUFvQixFQUNsQyxVQUFVLElBQUksb0JBQW9CLEdBQ3JDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUVILGNBQWMsRUFDZCxXQUFXLEVBRVgsZUFBZSxFQUNmLFlBQVksRUFFWixlQUFlLEVBQ2YsWUFBWSxFQUVaLGdCQUFnQixFQUNoQixhQUFhLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLElBQUksWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUNILE1BQU0sRUFDTixLQUFLLEVBQ0wsSUFBSSxFQUNKLEVBQUUsRUFHRixFQUFFLEVBQ0YsdUJBQXVCLEVBQ3ZCLHVCQUF1QixHQUMxQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLElBQUksWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUVILG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsWUFBWSxJQUFJLG9CQUFvQixFQUNwQyxNQUFNLElBQUksa0JBQWtCLEVBRzVCLGNBQWMsR0FDakIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFdBQVcsRUFDWCxhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFdBQVcsR0FDZCxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRmlyZWJhc2VDb25maWcsIGNyZWF0ZUZpcmViYXNlQ29uZmlnIH0gZnJvbSAnLi9pbnRlcm5hbC9jb25maWcnO1xyXG5leHBvcnQgeyBhbm9ueW1vdXMsIGF1dGhUb2tlbiwgJGZyZWUsICRzeXN0ZW0gfSBmcm9tICcuL2ludGVybmFsL2NvbnN0YW50cyc7XHJcbmV4cG9ydCB7XHJcbiAgICBLZXlGYWN0b3J5LFxyXG4gICAgQ3VzdG9tRHVhbEtleU1hcCxcclxuICAgIFJlYWRvbmx5Q3VzdG9tRHVhbEtleU1hcCxcclxuICAgIGdyb3VwSm9pbiBhcyBncm91cEpvaW5DdXN0b21EdWFsS2V5TWFwLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvY3VzdG9tRHVhbEtleU1hcCc7XHJcbmV4cG9ydCB7XHJcbiAgICBEdWFsS2V5LFxyXG4gICAgRHVhbEtleU1hcCxcclxuICAgIFJlYWRvbmx5RHVhbEtleU1hcCxcclxuICAgIER1YWxLZXlNYXBTb3VyY2UsXHJcbiAgICBkdWFsS2V5VG9TdHJpbmcsXHJcbiAgICB0b0pzb25TdHJpbmcgYXMgZHVhbEtleVRvSnNvblN0cmluZyxcclxuICAgIGdyb3VwSm9pbiBhcyBncm91cEpvaW5EdWFsS2V5TWFwLFxyXG4gICAgZ3JvdXBKb2luMyBhcyBncm91cEpvaW4zRHVhbEtleU1hcCxcclxuICAgIGdyb3VwSm9pbjQgYXMgZ3JvdXBKb2luNER1YWxLZXlNYXAsXHJcbn0gZnJvbSAnLi9pbnRlcm5hbC9kdWFsS2V5TWFwJztcclxuZXhwb3J0IHtcclxuICAgIFN0ckluZGV4NSxcclxuICAgIHN0ckluZGV4NUFycmF5LFxyXG4gICAgaXNTdHJJbmRleDUsXHJcbiAgICBTdHJJbmRleDEwLFxyXG4gICAgc3RySW5kZXgxMEFycmF5LFxyXG4gICAgaXNTdHJJbmRleDEwLFxyXG4gICAgU3RySW5kZXgyMCxcclxuICAgIHN0ckluZGV4MjBBcnJheSxcclxuICAgIGlzU3RySW5kZXgyMCxcclxuICAgIFN0ckluZGV4MTAwLFxyXG4gICAgc3RySW5kZXgxMDBBcnJheSxcclxuICAgIGlzU3RySW5kZXgxMDAsXHJcbn0gZnJvbSAnLi9pbnRlcm5hbC9pbmRleGVzJztcclxuZXhwb3J0IHsgSnNvbk9iamVjdCB9IGZyb20gJy4vaW50ZXJuYWwvanNvbk9iamVjdCc7XHJcbmV4cG9ydCB7IGdyb3VwSm9pbiBhcyBncm91cEpvaW5NYXAgfSBmcm9tICcuL2ludGVybmFsL21hcCc7XHJcbmV4cG9ydCB7IFB1YmxpY0NoYW5uZWxLZXkgfSBmcm9tICcuL2ludGVybmFsL3B1YmxpY0NoYW5uZWxLZXknO1xyXG5leHBvcnQge1xyXG4gICAgU2VtVmVyLFxyXG4gICAgYWxwaGEsXHJcbiAgICBiZXRhLFxyXG4gICAgcmMsXHJcbiAgICBPcGVyYXRvcixcclxuICAgIFNlbXZlck9wdGlvbixcclxuICAgIG9rLFxyXG4gICAgYXBpU2VydmVyUmVxdWlyZXNVcGRhdGUsXHJcbiAgICB3ZWJTZXJ2ZXJSZXF1aXJlc1VwZGF0ZSxcclxufSBmcm9tICcuL2ludGVybmFsL3NlbXZlcic7XHJcbmV4cG9ydCB7IGdyb3VwSm9pbiBhcyBncm91cEpvaW5TZXQgfSBmcm9tICcuL2ludGVybmFsL3NldCc7XHJcbmV4cG9ydCB7XHJcbiAgICBDb21wb3NpdGVLZXksXHJcbiAgICBjb21wb3NpdGVLZXlUb1N0cmluZyxcclxuICAgIHN0cmluZ1RvQ29tcG9zaXRlS2V5LFxyXG4gICAgdG9Kc29uU3RyaW5nIGFzIHN0YXRlTWFwVG9Kc29uU3RyaW5nLFxyXG4gICAgZXF1YWxzIGFzIGNvbXBvc2l0ZUtleUVxdWFscyxcclxuICAgIFN0YXRlTWFwLFxyXG4gICAgUmVhZG9ubHlTdGF0ZU1hcCxcclxuICAgIGNyZWF0ZVN0YXRlTWFwLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvc3RhdGVNYXAnO1xyXG5leHBvcnQgeyBsZWZ0LCByaWdodCwgYm90aCB9IGZyb20gJy4vaW50ZXJuYWwvdHlwZXMnO1xyXG5leHBvcnQge1xyXG4gICAgY2hvb3NlRHVhbEtleVJlY29yZCxcclxuICAgIGNob29zZVJlY29yZCxcclxuICAgIGR1YWxLZXlSZWNvcmRGaW5kLFxyXG4gICAgZHVhbEtleVJlY29yZEZvckVhY2gsXHJcbiAgICBpc1JlY29yZEVtcHR5LFxyXG4gICAgbWFwRHVhbEtleVJlY29yZCxcclxuICAgIG1hcFJlY29yZCxcclxuICAgIG1hcFRvUmVjb3JkLFxyXG4gICAgcmVjb3JkRm9yRWFjaCxcclxuICAgIHJlY29yZEZvckVhY2hBc3luYyxcclxuICAgIHJlY29yZFRvQXJyYXksXHJcbiAgICByZWNvcmRUb0R1YWxLZXlNYXAsXHJcbiAgICBkdWFsS2V5UmVjb3JkVG9EdWFsS2V5TWFwLFxyXG4gICAgcmVjb3JkVG9NYXAsXHJcbn0gZnJvbSAnLi9pbnRlcm5hbC91dGlscyc7XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBRUgsZ0JBQWdCLEVBRWhCLFNBQVMsSUFBSSx5QkFBeUIsR0FDekMsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBRUgsVUFBVSxFQUdWLFlBQVksSUFBSSxtQkFBbUIsRUFDbkMsU0FBUyxJQUFJLG1CQUFtQixFQUNoQyxVQUFVLElBQUksb0JBQW9CLEVBQ2xDLFVBQVUsSUFBSSxvQkFBb0IsR0FDckMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBRUgsY0FBYyxFQUNkLFdBQVcsRUFFWCxlQUFlLEVBQ2YsWUFBWSxFQUVaLGVBQWUsRUFDZixZQUFZLEVBRVosZ0JBQWdCLEVBQ2hCLGFBQWEsR0FDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLElBQUksWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUNILE1BQU0sRUFDTixLQUFLLEVBQ0wsSUFBSSxFQUNKLEVBQUUsRUFHRixFQUFFLEVBQ0YsdUJBQXVCLEVBQ3ZCLHVCQUF1QixHQUMxQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLElBQUksWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUVILG9CQUFvQixFQUNwQixZQUFZLElBQUksb0JBQW9CLEVBQ3BDLE1BQU0sSUFBSSxrQkFBa0IsRUFHNUIsY0FBYyxHQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsV0FBVyxFQUNYLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsV0FBVyxHQUNkLE1BQU0sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGaXJlYmFzZUNvbmZpZywgY3JlYXRlRmlyZWJhc2VDb25maWcgfSBmcm9tICcuL2ludGVybmFsL2NvbmZpZyc7XHJcbmV4cG9ydCB7IGFub255bW91cywgYXV0aFRva2VuLCAkZnJlZSwgJHN5c3RlbSB9IGZyb20gJy4vaW50ZXJuYWwvY29uc3RhbnRzJztcclxuZXhwb3J0IHtcclxuICAgIEtleUZhY3RvcnksXHJcbiAgICBDdXN0b21EdWFsS2V5TWFwLFxyXG4gICAgUmVhZG9ubHlDdXN0b21EdWFsS2V5TWFwLFxyXG4gICAgZ3JvdXBKb2luIGFzIGdyb3VwSm9pbkN1c3RvbUR1YWxLZXlNYXAsXHJcbn0gZnJvbSAnLi9pbnRlcm5hbC9jdXN0b21EdWFsS2V5TWFwJztcclxuZXhwb3J0IHtcclxuICAgIER1YWxLZXksXHJcbiAgICBEdWFsS2V5TWFwLFxyXG4gICAgUmVhZG9ubHlEdWFsS2V5TWFwLFxyXG4gICAgRHVhbEtleU1hcFNvdXJjZSxcclxuICAgIHRvSnNvblN0cmluZyBhcyBkdWFsS2V5VG9Kc29uU3RyaW5nLFxyXG4gICAgZ3JvdXBKb2luIGFzIGdyb3VwSm9pbkR1YWxLZXlNYXAsXHJcbiAgICBncm91cEpvaW4zIGFzIGdyb3VwSm9pbjNEdWFsS2V5TWFwLFxyXG4gICAgZ3JvdXBKb2luNCBhcyBncm91cEpvaW40RHVhbEtleU1hcCxcclxufSBmcm9tICcuL2ludGVybmFsL2R1YWxLZXlNYXAnO1xyXG5leHBvcnQge1xyXG4gICAgU3RySW5kZXg1LFxyXG4gICAgc3RySW5kZXg1QXJyYXksXHJcbiAgICBpc1N0ckluZGV4NSxcclxuICAgIFN0ckluZGV4MTAsXHJcbiAgICBzdHJJbmRleDEwQXJyYXksXHJcbiAgICBpc1N0ckluZGV4MTAsXHJcbiAgICBTdHJJbmRleDIwLFxyXG4gICAgc3RySW5kZXgyMEFycmF5LFxyXG4gICAgaXNTdHJJbmRleDIwLFxyXG4gICAgU3RySW5kZXgxMDAsXHJcbiAgICBzdHJJbmRleDEwMEFycmF5LFxyXG4gICAgaXNTdHJJbmRleDEwMCxcclxufSBmcm9tICcuL2ludGVybmFsL2luZGV4ZXMnO1xyXG5leHBvcnQgeyBKc29uT2JqZWN0IH0gZnJvbSAnLi9pbnRlcm5hbC9qc29uT2JqZWN0JztcclxuZXhwb3J0IHsga2V5TmFtZXMgfSBmcm9tICcuL2ludGVybmFsL2tleU5hbWVzJztcclxuZXhwb3J0IHsgZ3JvdXBKb2luIGFzIGdyb3VwSm9pbk1hcCB9IGZyb20gJy4vaW50ZXJuYWwvbWFwJztcclxuZXhwb3J0IHsgUHVibGljQ2hhbm5lbEtleSB9IGZyb20gJy4vaW50ZXJuYWwvcHVibGljQ2hhbm5lbEtleSc7XHJcbmV4cG9ydCB7XHJcbiAgICBTZW1WZXIsXHJcbiAgICBhbHBoYSxcclxuICAgIGJldGEsXHJcbiAgICByYyxcclxuICAgIE9wZXJhdG9yLFxyXG4gICAgU2VtdmVyT3B0aW9uLFxyXG4gICAgb2ssXHJcbiAgICBhcGlTZXJ2ZXJSZXF1aXJlc1VwZGF0ZSxcclxuICAgIHdlYlNlcnZlclJlcXVpcmVzVXBkYXRlLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvc2VtdmVyJztcclxuZXhwb3J0IHsgZ3JvdXBKb2luIGFzIGdyb3VwSm9pblNldCB9IGZyb20gJy4vaW50ZXJuYWwvc2V0JztcclxuZXhwb3J0IHtcclxuICAgIENvbXBvc2l0ZUtleSxcclxuICAgIHN0cmluZ1RvQ29tcG9zaXRlS2V5LFxyXG4gICAgdG9Kc29uU3RyaW5nIGFzIHN0YXRlTWFwVG9Kc29uU3RyaW5nLFxyXG4gICAgZXF1YWxzIGFzIGNvbXBvc2l0ZUtleUVxdWFscyxcclxuICAgIFN0YXRlTWFwLFxyXG4gICAgUmVhZG9ubHlTdGF0ZU1hcCxcclxuICAgIGNyZWF0ZVN0YXRlTWFwLFxyXG59IGZyb20gJy4vaW50ZXJuYWwvc3RhdGVNYXAnO1xyXG5leHBvcnQgeyBsZWZ0LCByaWdodCwgYm90aCB9IGZyb20gJy4vaW50ZXJuYWwvdHlwZXMnO1xyXG5leHBvcnQge1xyXG4gICAgY2hvb3NlRHVhbEtleVJlY29yZCxcclxuICAgIGNob29zZVJlY29yZCxcclxuICAgIGR1YWxLZXlSZWNvcmRGaW5kLFxyXG4gICAgZHVhbEtleVJlY29yZEZvckVhY2gsXHJcbiAgICBpc1JlY29yZEVtcHR5LFxyXG4gICAgbWFwRHVhbEtleVJlY29yZCxcclxuICAgIG1hcFJlY29yZCxcclxuICAgIG1hcFRvUmVjb3JkLFxyXG4gICAgcmVjb3JkRm9yRWFjaCxcclxuICAgIHJlY29yZEZvckVhY2hBc3luYyxcclxuICAgIHJlY29yZFRvQXJyYXksXHJcbiAgICByZWNvcmRUb0R1YWxLZXlNYXAsXHJcbiAgICBkdWFsS2V5UmVjb3JkVG9EdWFsS2V5TWFwLFxyXG4gICAgcmVjb3JkVG9NYXAsXHJcbn0gZnJvbSAnLi9pbnRlcm5hbC91dGlscyc7XHJcbiJdfQ==
import { both, left, right } from './types';
import { mapToRecord } from './utils';
export const dualKeyToString = (source) => {
return `${source.first}@${source.second}`;
};
export const toJsonString = (source) => {

@@ -205,2 +202,2 @@ return `{ first: ${source.first}, second: ${source.second} }`;

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVhbEtleU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcm5hbC9kdWFsS2V5TWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQW1CLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU90QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBUyxNQUF1QixFQUFVLEVBQUU7SUFDdkUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFTLE1BQXVCLEVBQVUsRUFBRTtJQUNwRSxPQUFPLFlBQVksTUFBTSxDQUFDLEtBQUssYUFBYSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBVUYsTUFBTSxPQUFPLFVBQVU7SUFHbkIsWUFBbUIsU0FBa0Q7UUFDakUsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0lBQ3RELENBQUM7SUFFTyxNQUFNLENBQUMsTUFBTSxDQUNqQixNQUErQyxFQUMvQyxPQUFpRTtRQUVqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUNyRCxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxFQUFFO1lBQ3BDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7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QzthQUN2QztTQUNKO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib3RoLCBHcm91cEpvaW5SZXN1bHQsIGxlZnQsIHJpZ2h0IH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IG1hcFRvUmVjb3JkIH0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5leHBvcnQgdHlwZSBEdWFsS2V5PFQxLCBUMj4gPSB7XHJcbiAgICByZWFkb25seSBmaXJzdDogVDE7XHJcbiAgICByZWFkb25seSBzZWNvbmQ6IFQyO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGR1YWxLZXlUb1N0cmluZyA9IDxUMSwgVDI+KHNvdXJjZTogRHVhbEtleTxUMSwgVDI+KTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiBgJHtzb3VyY2UuZmlyc3R9QCR7c291cmNlLnNlY29uZH1gO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvSnNvblN0cmluZyA9IDxUMSwgVDI+KHNvdXJjZTogRHVhbEtleTxUMSwgVDI+KTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiBgeyBmaXJzdDogJHtzb3VyY2UuZmlyc3R9LCBzZWNvbmQ6ICR7c291cmNlLnNlY29uZH0gfWA7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBEdWFsS2V5TWFwU291cmNlPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiA9XHJcbiAgICB8IE1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWU+PlxyXG4gICAgfCBNYXA8VEtleTEsIFJlYWRvbmx5TWFwPFRLZXkyLCBUVmFsdWU+PlxyXG4gICAgfCBSZWFkb25seU1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWU+PlxyXG4gICAgfCBSZWFkb25seU1hcDxUS2V5MSwgUmVhZG9ubHlNYXA8VEtleTIsIFRWYWx1ZT4+O1xyXG5cclxudHlwZSBSZWNvcmRLZXkgPSBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w7XHJcblxyXG5leHBvcnQgY2xhc3MgRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRWYWx1ZT4ge1xyXG4gICAgcHJpdmF0ZSBfY29yZTogTWFwPFRLZXkxLCBNYXA8VEtleTIsIFRWYWx1ZT4+O1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihzb3VyY2VNYXA/OiBEdWFsS2V5TWFwU291cmNlPFRLZXkxLCBUS2V5MiwgVFZhbHVlPikge1xyXG4gICAgICAgIGlmIChzb3VyY2VNYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jb3JlID0gRHVhbEtleU1hcC5tYXBNYXAoc291cmNlTWFwLCB4ID0+IHgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NvcmUgPSBuZXcgTWFwPFRLZXkxLCBNYXA8VEtleTIsIFRWYWx1ZT4+KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgbWFwTWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlMSwgVFZhbHVlMj4oXHJcbiAgICAgICAgc291cmNlOiBEdWFsS2V5TWFwU291cmNlPFRLZXkxLCBUS2V5MiwgVFZhbHVlMT4sXHJcbiAgICAgICAgbWFwcGluZzogKHNvdXJjZTogVFZhbHVlMSwga2V5OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pID0+IFRWYWx1ZTJcclxuICAgICk6IE1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWUyPj4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8VEtleTEsIE1hcDxUS2V5MiwgVFZhbHVlMj4+KCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBbZmlyc3RLZXksIGZpcnN0XSBvZiBzb3VyY2UpIHtcclxuICAgICAgICAgICAgaWYgKGZpcnN0LnNpemUgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHRvU2V0ID0gbmV3IE1hcDxUS2V5MiwgVFZhbHVlMj4oKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBbc2Vjb25kS2V5LCBzZWNvbmRdIG9mIGZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgICB0b1NldC5zZXQoc2Vjb25kS2V5LCBtYXBwaW5nKHNlY29uZCwgeyBmaXJzdDogZmlyc3RLZXksIHNlY29uZDogc2Vjb25kS2V5IH0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQuc2V0KGZpcnN0S2V5LCB0b1NldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlPFRLZXkxLCBUS2V5MiwgVFZhbHVlMSwgVFZhbHVlMj4oXHJcbiAgICAgICAgc291cmNlOiBEdWFsS2V5TWFwU291cmNlPFRLZXkxLCBUS2V5MiwgVFZhbHVlMT4gfCBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlMT4sXHJcbiAgICAgICAgbWFwcGluZzogKHNvdXJjZTogVFZhbHVlMSwga2V5OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pID0+IFRWYWx1ZTJcclxuICAgICk6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWUyPiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWUyPigpO1xyXG4gICAgICAgIHJlc3VsdC5fY29yZSA9IER1YWxLZXlNYXAubWFwTWFwKFxyXG4gICAgICAgICAgICBzb3VyY2UgaW5zdGFuY2VvZiBEdWFsS2V5TWFwID8gc291cmNlLl9jb3JlIDogc291cmNlLFxyXG4gICAgICAgICAgICBtYXBwaW5nXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgb2ZSZWNvcmQ8VEtleTEgZXh0ZW5kcyBSZWNvcmRLZXksIFRLZXkyIGV4dGVuZHMgUmVjb3JkS2V5LCBUVmFsdWU+KFxyXG4gICAgICAgIHNvdXJjZTogUmVjb3JkPFRLZXkxLCBSZWNvcmQ8VEtleTIsIFRWYWx1ZSB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ+XHJcbiAgICApOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+KCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkxIGluIHNvdXJjZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbm5lcjogUmVjb3JkPFRLZXkyLCBUVmFsdWUgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkID0gc291cmNlW2tleTFdO1xyXG4gICAgICAgICAgICBpZiAoaW5uZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkyIGluIGlubmVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTogVFZhbHVlIHwgdW5kZWZpbmVkID0gaW5uZXJba2V5Ml07XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoeyBmaXJzdDoga2V5MSwgc2Vjb25kOiBrZXkyIH0sIHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtYXA8VFJlc3VsdD4oXHJcbiAgICAgICAgbWFwcGluZzogKHNvdXJjZTogVFZhbHVlLCBrZXk6IER1YWxLZXk8VEtleTEsIFRLZXkyPikgPT4gVFJlc3VsdFxyXG4gICAgKTogRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gRHVhbEtleU1hcC5jcmVhdGUodGhpcywgbWFwcGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb25lKCk6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+IHtcclxuICAgICAgICByZXR1cm4gRHVhbEtleU1hcC5jcmVhdGUodGhpcywgeCA9PiB4KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0KHsgZmlyc3QsIHNlY29uZCB9OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pOiBUVmFsdWUgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGlubmVyID0gdGhpcy5fY29yZS5nZXQoZmlyc3QpO1xyXG4gICAgICAgIGlmIChpbm5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbm5lci5nZXQoc2Vjb25kKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QnlGaXJzdChmaXJzdDogVEtleTEpOiBNYXA8VEtleTIsIFRWYWx1ZT4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb3JlLmdldChmaXJzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldChcclxuICAgICAgICB7IGZpcnN0LCBzZWNvbmQgfTogRHVhbEtleTxUS2V5MSwgVEtleTI+LFxyXG4gICAgICAgIHZhbHVlOiBUVmFsdWVcclxuICAgICk6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+IHtcclxuICAgICAgICBsZXQgaW5uZXIgPSB0aGlzLl9jb3JlLmdldChmaXJzdCk7XHJcbiAgICAgICAgaWYgKGlubmVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaW5uZXIgPSBuZXcgTWFwPFRLZXkyLCBUVmFsdWU+KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuc2V0KGZpcnN0LCBpbm5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlubmVyLnNldChzZWNvbmQsIHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGVsZXRlKHsgZmlyc3QsIHNlY29uZCB9OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBpbm5lciA9IHRoaXMuX2NvcmUuZ2V0KGZpcnN0KTtcclxuICAgICAgICBpZiAoaW5uZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGlubmVyLmRlbGV0ZShzZWNvbmQpO1xyXG4gICAgICAgIGlmIChpbm5lci5zaXplID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuZGVsZXRlKGZpcnN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFzKGtleTogRHVhbEtleTxUS2V5MSwgVEtleTI+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkgIT09IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxyZWFkb25seSBbRHVhbEtleTxUS2V5MSwgVEtleTI+LCBUVmFsdWVdPiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBbZmlyc3RLZXksIGZpcnN0XSBvZiB0aGlzLl9jb3JlKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3NlY29uZEtleSwgc2Vjb25kXSBvZiBmaXJzdCkge1xyXG4gICAgICAgICAgICAgICAgeWllbGQgW3sgZmlyc3Q6IGZpcnN0S2V5LCBzZWNvbmQ6IHNlY29uZEtleSB9LCBzZWNvbmRdIGFzIGNvbnN0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0FycmF5KCkge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b01hcCgpIHtcclxuICAgICAgICByZXR1cm4gRHVhbEtleU1hcC5tYXBNYXAodGhpcy5fY29yZSwgeCA9PiB4KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9TdHJpbmdSZWNvcmQoXHJcbiAgICAgICAgY3JlYXRlU3RyaW5nS2V5MTogKGZpcnN0OiBUS2V5MSkgPT4gc3RyaW5nLFxyXG4gICAgICAgIGNyZWF0ZVN0cmluZ0tleTI6IChzZWNvbmQ6IFRLZXkyKSA9PiBzdHJpbmdcclxuICAgICk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFRWYWx1ZT4+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgUmVjb3JkPHN0cmluZywgVFZhbHVlPj4oKTtcclxuICAgICAgICB0aGlzLl9jb3JlLmZvckVhY2goKGlubmVyLCBmaXJzdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbm5lclJlY29yZCA9IG5ldyBNYXA8c3RyaW5nLCBUVmFsdWU+KCk7XHJcbiAgICAgICAgICAgIGlubmVyLmZvckVhY2goKHZhbHVlLCBzZWNvbmQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlubmVyUmVjb3JkLnNldChjcmVhdGVTdHJpbmdLZXkyKHNlY29uZCksIHZhbHVlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5zZXQoY3JlYXRlU3RyaW5nS2V5MShmaXJzdCksIG1hcFRvUmVjb3JkKGlubmVyUmVjb3JkKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG1hcFRvUmVjb3JkKHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZm9yRWFjaChhY3Rpb246ICh2YWx1ZTogVFZhbHVlLCBrZXk6IER1YWxLZXk8VEtleTEsIFRLZXkyPikgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMpIHtcclxuICAgICAgICAgICAgYWN0aW9uKHZhbHVlLCBrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVkdWNlPFRSZXN1bHQ+KFxyXG4gICAgICAgIHJlZHVjZXI6IChzZWVkOiBUUmVzdWx0LCBlbGVtZW50OiBUVmFsdWUsIGtleTogRHVhbEtleTxUS2V5MSwgVEtleTI+KSA9PiBUUmVzdWx0LFxyXG4gICAgICAgIHNlZWQ6IFRSZXN1bHRcclxuICAgICk6IFRSZXN1bHQge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBzZWVkO1xyXG4gICAgICAgIHRoaXMuZm9yRWFjaCgoZWxlbWVudCwga2V5KSA9PiAocmVzdWx0ID0gcmVkdWNlcihyZXN1bHQsIGVsZW1lbnQsIGtleSkpKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOS4u+OBquS9v+eUqOebrueahOOBr+ODh+ODkOODg+OCsOOBruOBn+OCgeOBq+aWh+Wtl+WIl+WMluOBleOBm+OCi+OBn+OCgVxyXG4gICAgcHVibGljIHRvSlNPTih2YWx1ZVRvU3RyaW5nPzogKHZhbHVlOiBUVmFsdWUpID0+IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgICAgICBbLi4udGhpcy5fY29yZV0ubWFwKChba2V5MSwgdmFsdWVdKSA9PiBbXHJcbiAgICAgICAgICAgICAgICBrZXkxLFxyXG4gICAgICAgICAgICAgICAgWy4uLnZhbHVlXS5tYXAoKFtrZXkyLCB2YWx1ZV0pID0+IFtcclxuICAgICAgICAgICAgICAgICAgICBrZXkyLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlVG9TdHJpbmcgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogdmFsdWVUb1N0cmluZyh2YWx1ZSksXHJcbiAgICAgICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+ID0gT21pdDxcclxuICAgIFJlYWRvbmx5PER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+PixcclxuICAgICdzZXQnIHwgJ2RlbGV0ZScgfCAnZ2V0QnlGaXJzdCdcclxuPiAmIHtcclxuICAgIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8cmVhZG9ubHkgW0R1YWxLZXk8VEtleTEsIFRLZXkyPiwgVFZhbHVlXT47XHJcbiAgICBnZXRCeUZpcnN0KGtleTogVEtleTEpOiBSZWFkb25seU1hcDxUS2V5MiwgVFZhbHVlPiB8IHVuZGVmaW5lZDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBncm91cEpvaW4gPSA8VEtleTEsIFRLZXkyLCBUTGVmdCwgVFJpZ2h0PihcclxuICAgIGxlZnQ6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRMZWZ0PixcclxuICAgIHJpZ2h0OiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUUmlnaHQ+XHJcbik6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBHcm91cEpvaW5SZXN1bHQ8VExlZnQsIFRSaWdodD4+ID0+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgR3JvdXBKb2luUmVzdWx0PFRMZWZ0LCBUUmlnaHQ+PigpO1xyXG4gICAgY29uc3QgcmlnaHRDbG9uZSA9IHJpZ2h0LmNsb25lKCk7XHJcbiAgICBsZWZ0LmZvckVhY2goKGxlZnRFbGVtZW50LCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCByaWdodEVsZW1lbnQgPSByaWdodENsb25lLmdldChrZXkpO1xyXG4gICAgICAgIHJpZ2h0Q2xvbmUuZGVsZXRlKGtleSk7XHJcbiAgICAgICAgaWYgKHJpZ2h0RWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB7IHR5cGU6ICdsZWZ0JywgbGVmdDogbGVmdEVsZW1lbnQgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LnNldChrZXksIHtcclxuICAgICAgICAgICAgdHlwZTogJ2JvdGgnLFxyXG4gICAgICAgICAgICBsZWZ0OiBsZWZ0RWxlbWVudCxcclxuICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0RWxlbWVudCxcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmlnaHRDbG9uZS5mb3JFYWNoKChyaWdodEVsZW1lbnQsIGtleSkgPT4ge1xyXG4gICAgICAgIHJlc3VsdC5zZXQoa2V5LCB7IHR5cGU6ICdyaWdodCcsIHJpZ2h0OiByaWdodEVsZW1lbnQgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG4vLyBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF3jgYzov5TjgZXjgozjgovjgZPjgajjga/jgarjgYRcclxuZXhwb3J0IGNvbnN0IGdyb3VwSm9pbjMgPSA8VEtleTEsIFRLZXkyLCBUMSwgVDIsIFQzPihcclxuICAgIHNvdXJjZTE6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQxPixcclxuICAgIHNvdXJjZTI6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQyPixcclxuICAgIHNvdXJjZTM6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQzPlxyXG4pOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgcmVhZG9ubHkgW1QxIHwgdW5kZWZpbmVkLCBUMiB8IHVuZGVmaW5lZCwgVDMgfCB1bmRlZmluZWRdPiA9PiB7XHJcbiAgICBjb25zdCBzb3VyY2UgPSBncm91cEpvaW4oc291cmNlMSwgZ3JvdXBKb2luKHNvdXJjZTIsIHNvdXJjZTMpKTtcclxuICAgIHJldHVybiBzb3VyY2UubWFwKGdyb3VwID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGdyb3VwLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBsZWZ0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtncm91cC5sZWZ0LCB1bmRlZmluZWQsIHVuZGVmaW5lZF07XHJcbiAgICAgICAgICAgIGNhc2UgcmlnaHQ6XHJcbiAgICAgICAgICAgIGNhc2UgYm90aDoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0MSA9ICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwLnR5cGUgPT09IGJvdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyb3VwLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICB9KSgpO1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChncm91cC5yaWdodC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBsZWZ0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3Jlc3VsdDEsIGdyb3VwLnJpZ2h0LmxlZnQsIHVuZGVmaW5lZF07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSByaWdodDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQxLCB1bmRlZmluZWQsIGdyb3VwLnJpZ2h0LnJpZ2h0XTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIGJvdGg6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbcmVzdWx0MSwgZ3JvdXAucmlnaHQubGVmdCwgZ3JvdXAucmlnaHQucmlnaHRdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn07XHJcblxyXG4vLyBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXeOBjOi/lOOBleOCjOOCi+OBk+OBqOOBr+OBquOBhFxyXG5leHBvcnQgY29uc3QgZ3JvdXBKb2luNCA9IDxUS2V5MSwgVEtleTIsIFQxLCBUMiwgVDMsIFQ0PihcclxuICAgIHNvdXJjZTE6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQxPixcclxuICAgIHNvdXJjZTI6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQyPixcclxuICAgIHNvdXJjZTM6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQzPixcclxuICAgIHNvdXJjZTQ6IFJlYWRvbmx5RHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFQ0PlxyXG4pOiBEdWFsS2V5TWFwPFxyXG4gICAgVEtleTEsXHJcbiAgICBUS2V5MixcclxuICAgIHJlYWRvbmx5IFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWQsIFQzIHwgdW5kZWZpbmVkLCBUNCB8IHVuZGVmaW5lZF1cclxuPiA9PiB7XHJcbiAgICBjb25zdCBzb3VyY2UgPSBncm91cEpvaW4oZ3JvdXBKb2luMyhzb3VyY2UxLCBzb3VyY2UyLCBzb3VyY2UzKSwgc291cmNlNCk7XHJcbiAgICByZXR1cm4gc291cmNlLm1hcChncm91cCA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChncm91cC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgbGVmdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZ3JvdXAubGVmdCwgdW5kZWZpbmVkXTtcclxuICAgICAgICAgICAgY2FzZSByaWdodDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZ3JvdXAucmlnaHRdO1xyXG4gICAgICAgICAgICBjYXNlIGJvdGg6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZ3JvdXAubGVmdCwgZ3JvdXAucmlnaHRdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn07XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVhbEtleU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcm5hbC9kdWFsS2V5TWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQW1CLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU90QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBUyxNQUF1QixFQUFVLEVBQUU7SUFDcEUsT0FBTyxZQUFZLE1BQU0sQ0FBQyxLQUFLLGFBQWEsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDO0FBQ2xFLENBQUMsQ0FBQztBQVVGLE1BQU0sT0FBTyxVQUFVO0lBR25CLFlBQW1CLFNBQWtEO1FBQ2pFLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEQsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUN0RCxDQUFDO0lBRU8sTUFBTSxDQUFDLE1BQU0sQ0FDakIsTUFBK0MsRUFDL0MsT0FBaUU7UUFFakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDckQsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sRUFBRTtZQUNwQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUNsQixTQUFTO2FBQ1o7WUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztZQUN4QyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO2dCQUNyQyxLQUFLLENB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LENBQUM7b0JBQ2xELEtBQUssS0FBSzt3QkFDTixPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNuRCxLQUFLLElBQUk7d0JBQ0wsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM3RDthQUNKO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLHlEQUF5RDtBQUN6RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FDdEIsT0FBNkMsRUFDN0MsT0FBNkMsRUFDN0MsT0FBNkMsRUFDN0MsT0FBNkMsRUFLL0MsRUFBRTtJQUNBLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdEIsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2hCLEtBQUssSUFBSTtnQkFDTCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLEtBQUssS0FBSztnQkFDTixPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdkM7U0FDSjtJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm90aCwgR3JvdXBKb2luUmVzdWx0LCBsZWZ0LCByaWdodCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBtYXBUb1JlY29yZCB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IHR5cGUgRHVhbEtleTxUMSwgVDI+ID0ge1xyXG4gICAgcmVhZG9ubHkgZmlyc3Q6IFQxO1xyXG4gICAgcmVhZG9ubHkgc2Vjb25kOiBUMjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB0b0pzb25TdHJpbmcgPSA8VDEsIFQyPihzb3VyY2U6IER1YWxLZXk8VDEsIFQyPik6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gYHsgZmlyc3Q6ICR7c291cmNlLmZpcnN0fSwgc2Vjb25kOiAke3NvdXJjZS5zZWNvbmR9IH1gO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRHVhbEtleU1hcFNvdXJjZTxUS2V5MSwgVEtleTIsIFRWYWx1ZT4gPVxyXG4gICAgfCBNYXA8VEtleTEsIE1hcDxUS2V5MiwgVFZhbHVlPj5cclxuICAgIHwgTWFwPFRLZXkxLCBSZWFkb25seU1hcDxUS2V5MiwgVFZhbHVlPj5cclxuICAgIHwgUmVhZG9ubHlNYXA8VEtleTEsIE1hcDxUS2V5MiwgVFZhbHVlPj5cclxuICAgIHwgUmVhZG9ubHlNYXA8VEtleTEsIFJlYWRvbmx5TWFwPFRLZXkyLCBUVmFsdWU+PjtcclxuXHJcbnR5cGUgUmVjb3JkS2V5ID0gc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sO1xyXG5cclxuZXhwb3J0IGNsYXNzIER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUVmFsdWU+IHtcclxuICAgIHByaXZhdGUgX2NvcmU6IE1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWU+PjtcclxuXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc291cmNlTWFwPzogRHVhbEtleU1hcFNvdXJjZTxUS2V5MSwgVEtleTIsIFRWYWx1ZT4pIHtcclxuICAgICAgICBpZiAoc291cmNlTWFwICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29yZSA9IER1YWxLZXlNYXAubWFwTWFwKHNvdXJjZU1hcCwgeCA9PiB4KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb3JlID0gbmV3IE1hcDxUS2V5MSwgTWFwPFRLZXkyLCBUVmFsdWU+PigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIG1hcE1hcDxUS2V5MSwgVEtleTIsIFRWYWx1ZTEsIFRWYWx1ZTI+KFxyXG4gICAgICAgIHNvdXJjZTogRHVhbEtleU1hcFNvdXJjZTxUS2V5MSwgVEtleTIsIFRWYWx1ZTE+LFxyXG4gICAgICAgIG1hcHBpbmc6IChzb3VyY2U6IFRWYWx1ZTEsIGtleTogRHVhbEtleTxUS2V5MSwgVEtleTI+KSA9PiBUVmFsdWUyXHJcbiAgICApOiBNYXA8VEtleTEsIE1hcDxUS2V5MiwgVFZhbHVlMj4+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPFRLZXkxLCBNYXA8VEtleTIsIFRWYWx1ZTI+PigpO1xyXG4gICAgICAgIGZvciAoY29uc3QgW2ZpcnN0S2V5LCBmaXJzdF0gb2Ygc291cmNlKSB7XHJcbiAgICAgICAgICAgIGlmIChmaXJzdC5zaXplID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB0b1NldCA9IG5ldyBNYXA8VEtleTIsIFRWYWx1ZTI+KCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3NlY29uZEtleSwgc2Vjb25kXSBvZiBmaXJzdCkge1xyXG4gICAgICAgICAgICAgICAgdG9TZXQuc2V0KHNlY29uZEtleSwgbWFwcGluZyhzZWNvbmQsIHsgZmlyc3Q6IGZpcnN0S2V5LCBzZWNvbmQ6IHNlY29uZEtleSB9KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdWx0LnNldChmaXJzdEtleSwgdG9TZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGNyZWF0ZTxUS2V5MSwgVEtleTIsIFRWYWx1ZTEsIFRWYWx1ZTI+KFxyXG4gICAgICAgIHNvdXJjZTogRHVhbEtleU1hcFNvdXJjZTxUS2V5MSwgVEtleTIsIFRWYWx1ZTE+IHwgRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRWYWx1ZTE+LFxyXG4gICAgICAgIG1hcHBpbmc6IChzb3VyY2U6IFRWYWx1ZTEsIGtleTogRHVhbEtleTxUS2V5MSwgVEtleTI+KSA9PiBUVmFsdWUyXHJcbiAgICApOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlMj4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlMj4oKTtcclxuICAgICAgICByZXN1bHQuX2NvcmUgPSBEdWFsS2V5TWFwLm1hcE1hcChcclxuICAgICAgICAgICAgc291cmNlIGluc3RhbmNlb2YgRHVhbEtleU1hcCA/IHNvdXJjZS5fY29yZSA6IHNvdXJjZSxcclxuICAgICAgICAgICAgbWFwcGluZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG9mUmVjb3JkPFRLZXkxIGV4dGVuZHMgUmVjb3JkS2V5LCBUS2V5MiBleHRlbmRzIFJlY29yZEtleSwgVFZhbHVlPihcclxuICAgICAgICBzb3VyY2U6IFJlY29yZDxUS2V5MSwgUmVjb3JkPFRLZXkyLCBUVmFsdWUgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkPlxyXG4gICAgKTogRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIFRWYWx1ZT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5MSBpbiBzb3VyY2UpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5uZXI6IFJlY29yZDxUS2V5MiwgVFZhbHVlIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCA9IHNvdXJjZVtrZXkxXTtcclxuICAgICAgICAgICAgaWYgKGlubmVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5MiBpbiBpbm5lcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWU6IFRWYWx1ZSB8IHVuZGVmaW5lZCA9IGlubmVyW2tleTJdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHsgZmlyc3Q6IGtleTEsIHNlY29uZDoga2V5MiB9LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWFwPFRSZXN1bHQ+KFxyXG4gICAgICAgIG1hcHBpbmc6IChzb3VyY2U6IFRWYWx1ZSwga2V5OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pID0+IFRSZXN1bHRcclxuICAgICk6IER1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIER1YWxLZXlNYXAuY3JlYXRlKHRoaXMsIG1hcHBpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbG9uZSgpOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiB7XHJcbiAgICAgICAgcmV0dXJuIER1YWxLZXlNYXAuY3JlYXRlKHRoaXMsIHggPT4geCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCh7IGZpcnN0LCBzZWNvbmQgfTogRHVhbEtleTxUS2V5MSwgVEtleTI+KTogVFZhbHVlIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBpbm5lciA9IHRoaXMuX2NvcmUuZ2V0KGZpcnN0KTtcclxuICAgICAgICBpZiAoaW5uZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaW5uZXIuZ2V0KHNlY29uZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEJ5Rmlyc3QoZmlyc3Q6IFRLZXkxKTogTWFwPFRLZXkyLCBUVmFsdWU+IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY29yZS5nZXQoZmlyc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQoXHJcbiAgICAgICAgeyBmaXJzdCwgc2Vjb25kIH06IER1YWxLZXk8VEtleTEsIFRLZXkyPixcclxuICAgICAgICB2YWx1ZTogVFZhbHVlXHJcbiAgICApOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiB7XHJcbiAgICAgICAgbGV0IGlubmVyID0gdGhpcy5fY29yZS5nZXQoZmlyc3QpO1xyXG4gICAgICAgIGlmIChpbm5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlubmVyID0gbmV3IE1hcDxUS2V5MiwgVFZhbHVlPigpO1xyXG4gICAgICAgICAgICB0aGlzLl9jb3JlLnNldChmaXJzdCwgaW5uZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbm5lci5zZXQoc2Vjb25kLCB2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZSh7IGZpcnN0LCBzZWNvbmQgfTogRHVhbEtleTxUS2V5MSwgVEtleTI+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgaW5uZXIgPSB0aGlzLl9jb3JlLmdldChmaXJzdCk7XHJcbiAgICAgICAgaWYgKGlubmVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBpbm5lci5kZWxldGUoc2Vjb25kKTtcclxuICAgICAgICBpZiAoaW5uZXIuc2l6ZSA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jb3JlLmRlbGV0ZShmaXJzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhcyhrZXk6IER1YWxLZXk8VEtleTEsIFRLZXkyPik6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgKltTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8cmVhZG9ubHkgW0R1YWxLZXk8VEtleTEsIFRLZXkyPiwgVFZhbHVlXT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgW2ZpcnN0S2V5LCBmaXJzdF0gb2YgdGhpcy5fY29yZSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtzZWNvbmRLZXksIHNlY29uZF0gb2YgZmlyc3QpIHtcclxuICAgICAgICAgICAgICAgIHlpZWxkIFt7IGZpcnN0OiBmaXJzdEtleSwgc2Vjb25kOiBzZWNvbmRLZXkgfSwgc2Vjb25kXSBhcyBjb25zdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9BcnJheSgpIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9NYXAoKSB7XHJcbiAgICAgICAgcmV0dXJuIER1YWxLZXlNYXAubWFwTWFwKHRoaXMuX2NvcmUsIHggPT4geCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvU3RyaW5nUmVjb3JkKFxyXG4gICAgICAgIGNyZWF0ZVN0cmluZ0tleTE6IChmaXJzdDogVEtleTEpID0+IHN0cmluZyxcclxuICAgICAgICBjcmVhdGVTdHJpbmdLZXkyOiAoc2Vjb25kOiBUS2V5MikgPT4gc3RyaW5nXHJcbiAgICApOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBUVmFsdWU+PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFRWYWx1ZT4+KCk7XHJcbiAgICAgICAgdGhpcy5fY29yZS5mb3JFYWNoKChpbm5lciwgZmlyc3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5uZXJSZWNvcmQgPSBuZXcgTWFwPHN0cmluZywgVFZhbHVlPigpO1xyXG4gICAgICAgICAgICBpbm5lci5mb3JFYWNoKCh2YWx1ZSwgc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpbm5lclJlY29yZC5zZXQoY3JlYXRlU3RyaW5nS2V5MihzZWNvbmQpLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXN1bHQuc2V0KGNyZWF0ZVN0cmluZ0tleTEoZmlyc3QpLCBtYXBUb1JlY29yZChpbm5lclJlY29yZCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBtYXBUb1JlY29yZChyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpemUgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGZvckVhY2goYWN0aW9uOiAodmFsdWU6IFRWYWx1ZSwga2V5OiBEdWFsS2V5PFRLZXkxLCBUS2V5Mj4pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzKSB7XHJcbiAgICAgICAgICAgIGFjdGlvbih2YWx1ZSwga2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZHVjZTxUUmVzdWx0PihcclxuICAgICAgICByZWR1Y2VyOiAoc2VlZDogVFJlc3VsdCwgZWxlbWVudDogVFZhbHVlLCBrZXk6IER1YWxLZXk8VEtleTEsIFRLZXkyPikgPT4gVFJlc3VsdCxcclxuICAgICAgICBzZWVkOiBUUmVzdWx0XHJcbiAgICApOiBUUmVzdWx0IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gc2VlZDtcclxuICAgICAgICB0aGlzLmZvckVhY2goKGVsZW1lbnQsIGtleSkgPT4gKHJlc3VsdCA9IHJlZHVjZXIocmVzdWx0LCBlbGVtZW50LCBrZXkpKSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvLyDkuLvjgarkvb/nlKjnm67nmoTjga/jg4fjg5Djg4PjgrDjga7jgZ/jgoHjgavmloflrZfliJfljJbjgZXjgZvjgovjgZ/jgoFcclxuICAgIHB1YmxpYyB0b0pTT04odmFsdWVUb1N0cmluZz86ICh2YWx1ZTogVFZhbHVlKSA9PiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcclxuICAgICAgICAgICAgWy4uLnRoaXMuX2NvcmVdLm1hcCgoW2tleTEsIHZhbHVlXSkgPT4gW1xyXG4gICAgICAgICAgICAgICAga2V5MSxcclxuICAgICAgICAgICAgICAgIFsuLi52YWx1ZV0ubWFwKChba2V5MiwgdmFsdWVdKSA9PiBbXHJcbiAgICAgICAgICAgICAgICAgICAga2V5MixcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvU3RyaW5nID09PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHZhbHVlVG9TdHJpbmcodmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmVhZG9ubHlEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPiA9IE9taXQ8XHJcbiAgICBSZWFkb25seTxEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFZhbHVlPj4sXHJcbiAgICAnc2V0JyB8ICdkZWxldGUnIHwgJ2dldEJ5Rmlyc3QnXHJcbj4gJiB7XHJcbiAgICBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPHJlYWRvbmx5IFtEdWFsS2V5PFRLZXkxLCBUS2V5Mj4sIFRWYWx1ZV0+O1xyXG4gICAgZ2V0QnlGaXJzdChrZXk6IFRLZXkxKTogUmVhZG9ubHlNYXA8VEtleTIsIFRWYWx1ZT4gfCB1bmRlZmluZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ3JvdXBKb2luID0gPFRLZXkxLCBUS2V5MiwgVExlZnQsIFRSaWdodD4oXHJcbiAgICBsZWZ0OiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUTGVmdD4sXHJcbiAgICByaWdodDogUmVhZG9ubHlEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgVFJpZ2h0PlxyXG4pOiBEdWFsS2V5TWFwPFRLZXkxLCBUS2V5MiwgR3JvdXBKb2luUmVzdWx0PFRMZWZ0LCBUUmlnaHQ+PiA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIEdyb3VwSm9pblJlc3VsdDxUTGVmdCwgVFJpZ2h0Pj4oKTtcclxuICAgIGNvbnN0IHJpZ2h0Q2xvbmUgPSByaWdodC5jbG9uZSgpO1xyXG4gICAgbGVmdC5mb3JFYWNoKChsZWZ0RWxlbWVudCwga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmlnaHRFbGVtZW50ID0gcmlnaHRDbG9uZS5nZXQoa2V5KTtcclxuICAgICAgICByaWdodENsb25lLmRlbGV0ZShrZXkpO1xyXG4gICAgICAgIGlmIChyaWdodEVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgeyB0eXBlOiAnbGVmdCcsIGxlZnQ6IGxlZnRFbGVtZW50IH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5zZXQoa2V5LCB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdib3RoJyxcclxuICAgICAgICAgICAgbGVmdDogbGVmdEVsZW1lbnQsXHJcbiAgICAgICAgICAgIHJpZ2h0OiByaWdodEVsZW1lbnQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJpZ2h0Q2xvbmUuZm9yRWFjaCgocmlnaHRFbGVtZW50LCBrZXkpID0+IHtcclxuICAgICAgICByZXN1bHQuc2V0KGtleSwgeyB0eXBlOiAncmlnaHQnLCByaWdodDogcmlnaHRFbGVtZW50IH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuLy8gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRd44GM6L+U44GV44KM44KL44GT44Go44Gv44Gq44GEXHJcbmV4cG9ydCBjb25zdCBncm91cEpvaW4zID0gPFRLZXkxLCBUS2V5MiwgVDEsIFQyLCBUMz4oXHJcbiAgICBzb3VyY2UxOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMT4sXHJcbiAgICBzb3VyY2UyOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMj4sXHJcbiAgICBzb3VyY2UzOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMz5cclxuKTogRHVhbEtleU1hcDxUS2V5MSwgVEtleTIsIHJlYWRvbmx5IFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWQsIFQzIHwgdW5kZWZpbmVkXT4gPT4ge1xyXG4gICAgY29uc3Qgc291cmNlID0gZ3JvdXBKb2luKHNvdXJjZTEsIGdyb3VwSm9pbihzb3VyY2UyLCBzb3VyY2UzKSk7XHJcbiAgICByZXR1cm4gc291cmNlLm1hcChncm91cCA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChncm91cC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgbGVmdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbZ3JvdXAubGVmdCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xyXG4gICAgICAgICAgICBjYXNlIHJpZ2h0OlxyXG4gICAgICAgICAgICBjYXNlIGJvdGg6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDEgPSAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cC50eXBlID09PSBib3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cC5sZWZ0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZ3JvdXAucmlnaHQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbGVmdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQxLCBncm91cC5yaWdodC5sZWZ0LCB1bmRlZmluZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgcmlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbcmVzdWx0MSwgdW5kZWZpbmVkLCBncm91cC5yaWdodC5yaWdodF07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBib3RoOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3Jlc3VsdDEsIGdyb3VwLnJpZ2h0LmxlZnQsIGdyb3VwLnJpZ2h0LnJpZ2h0XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59O1xyXG5cclxuLy8gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF3jgYzov5TjgZXjgozjgovjgZPjgajjga/jgarjgYRcclxuZXhwb3J0IGNvbnN0IGdyb3VwSm9pbjQgPSA8VEtleTEsIFRLZXkyLCBUMSwgVDIsIFQzLCBUND4oXHJcbiAgICBzb3VyY2UxOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMT4sXHJcbiAgICBzb3VyY2UyOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMj4sXHJcbiAgICBzb3VyY2UzOiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUMz4sXHJcbiAgICBzb3VyY2U0OiBSZWFkb25seUR1YWxLZXlNYXA8VEtleTEsIFRLZXkyLCBUND5cclxuKTogRHVhbEtleU1hcDxcclxuICAgIFRLZXkxLFxyXG4gICAgVEtleTIsXHJcbiAgICByZWFkb25seSBbVDEgfCB1bmRlZmluZWQsIFQyIHwgdW5kZWZpbmVkLCBUMyB8IHVuZGVmaW5lZCwgVDQgfCB1bmRlZmluZWRdXHJcbj4gPT4ge1xyXG4gICAgY29uc3Qgc291cmNlID0gZ3JvdXBKb2luKGdyb3VwSm9pbjMoc291cmNlMSwgc291cmNlMiwgc291cmNlMyksIHNvdXJjZTQpO1xyXG4gICAgcmV0dXJuIHNvdXJjZS5tYXAoZ3JvdXAgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoZ3JvdXAudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIGxlZnQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmdyb3VwLmxlZnQsIHVuZGVmaW5lZF07XHJcbiAgICAgICAgICAgIGNhc2UgcmlnaHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGdyb3VwLnJpZ2h0XTtcclxuICAgICAgICAgICAgY2FzZSBib3RoOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmdyb3VwLmxlZnQsIGdyb3VwLnJpZ2h0XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59O1xyXG4iXX0=
import { CustomDualKeyMap } from './customDualKeyMap';
export const compositeKeyToString = (source) => {
return `${source.id}@${source.createdBy}`;
};
export const stringToCompositeKey = (source) => {

@@ -25,2 +22,2 @@ const array = source.split('@');

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvc3RhdGVNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUF3QyxNQUFNLG9CQUFvQixDQUFDO0FBUTVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBb0IsRUFBVSxFQUFFO0lBQ2pFLE9BQU8sR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQWMsRUFBdUIsRUFBRTtJQUN4RSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDcEIsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQztBQUNuRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFvQixFQUFVLEVBQUU7SUFDekQsT0FBTyxTQUFTLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixNQUFNLENBQUMsU0FBUyxJQUFJLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBZSxFQUFFLENBQWUsRUFBVyxFQUFFO0lBQ2hFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBNkM7SUFDekQsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUQsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Q0FDekQsQ0FBQztBQUtGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUMxQixNQUE0RSxFQUNqRSxFQUFFO0lBQ2IsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tRHVhbEtleU1hcCwgS2V5RmFjdG9yeSwgUmVhZG9ubHlDdXN0b21EdWFsS2V5TWFwIH0gZnJvbSAnLi9jdXN0b21EdWFsS2V5TWFwJztcclxuaW1wb3J0IHsgRHVhbEtleU1hcCwgRHVhbEtleU1hcFNvdXJjZSB9IGZyb20gJy4vZHVhbEtleU1hcCc7XHJcblxyXG5leHBvcnQgdHlwZSBDb21wb3NpdGVLZXkgPSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgY3JlYXRlZEJ5OiBzdHJpbmc7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY29tcG9zaXRlS2V5VG9TdHJpbmcgPSAoc291cmNlOiBDb21wb3NpdGVLZXkpOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIGAke3NvdXJjZS5pZH1AJHtzb3VyY2UuY3JlYXRlZEJ5fWA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc3RyaW5nVG9Db21wb3NpdGVLZXkgPSAoc291cmNlOiBzdHJpbmcpOiBDb21wb3NpdGVLZXkgfCBudWxsID0+IHtcclxuICAgIGNvbnN0IGFycmF5ID0gc291cmNlLnNwbGl0KCdAJyk7XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoICE9PSAyKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBpZDogYXJyYXlbMF0hLCBjcmVhdGVkQnk6IGFycmF5WzFdISB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRvSnNvblN0cmluZyA9IChzb3VyY2U6IENvbXBvc2l0ZUtleSk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gYHsgaWQ6ICR7c291cmNlLmlkfSwgY3JlYXRlZEJ5OiAke3NvdXJjZS5jcmVhdGVkQnl9IH1gO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGVxdWFscyA9ICh4OiBDb21wb3NpdGVLZXksIHk6IENvbXBvc2l0ZUtleSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgcmV0dXJuIHguY3JlYXRlZEJ5ID09PSB5LmNyZWF0ZWRCeSAmJiB4LmlkID09PSB5LmlkO1xyXG59O1xyXG5cclxuY29uc3Qga2V5RmFjdG9yeTogS2V5RmFjdG9yeTxDb21wb3NpdGVLZXksIHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgIGNyZWF0ZUR1YWxLZXk6IHggPT4gKHsgZmlyc3Q6IHguY3JlYXRlZEJ5LCBzZWNvbmQ6IHguaWQgfSksXHJcbiAgICBjcmVhdGVLZXk6IHggPT4gKHsgY3JlYXRlZEJ5OiB4LmZpcnN0LCBpZDogeC5zZWNvbmQgfSksXHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBTdGF0ZU1hcDxUPiA9IEN1c3RvbUR1YWxLZXlNYXA8Q29tcG9zaXRlS2V5LCBzdHJpbmcsIHN0cmluZywgVD47XHJcbmV4cG9ydCB0eXBlIFJlYWRvbmx5U3RhdGVNYXA8VD4gPSBSZWFkb25seUN1c3RvbUR1YWxLZXlNYXA8Q29tcG9zaXRlS2V5LCBzdHJpbmcsIHN0cmluZywgVD47XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlU3RhdGVNYXAgPSA8VD4oXHJcbiAgICBzb3VyY2U/OiBEdWFsS2V5TWFwU291cmNlPHN0cmluZywgc3RyaW5nLCBUPiB8IER1YWxLZXlNYXA8c3RyaW5nLCBzdHJpbmcsIFQ+XHJcbik6IFN0YXRlTWFwPFQ+ID0+IHtcclxuICAgIHJldHVybiBuZXcgQ3VzdG9tRHVhbEtleU1hcCh7IC4uLmtleUZhY3RvcnksIHNvdXJjZU1hcDogc291cmNlIH0pO1xyXG59O1xyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvc3RhdGVNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUF3QyxNQUFNLG9CQUFvQixDQUFDO0FBUTVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBYyxFQUF1QixFQUFFO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNwQixPQUFPLElBQUksQ0FBQztLQUNmO0lBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQW9CLEVBQVUsRUFBRTtJQUN6RCxPQUFPLFNBQVMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFlLEVBQUUsQ0FBZSxFQUFXLEVBQUU7SUFDaEUsT0FBTyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUE2QztJQUN6RCxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUN6RCxDQUFDO0FBS0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzFCLE1BQTRFLEVBQ2pFLEVBQUU7SUFDYixPQUFPLElBQUksZ0JBQWdCLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21EdWFsS2V5TWFwLCBLZXlGYWN0b3J5LCBSZWFkb25seUN1c3RvbUR1YWxLZXlNYXAgfSBmcm9tICcuL2N1c3RvbUR1YWxLZXlNYXAnO1xyXG5pbXBvcnQgeyBEdWFsS2V5TWFwLCBEdWFsS2V5TWFwU291cmNlIH0gZnJvbSAnLi9kdWFsS2V5TWFwJztcclxuXHJcbmV4cG9ydCB0eXBlIENvbXBvc2l0ZUtleSA9IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBjcmVhdGVkQnk6IHN0cmluZztcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdHJpbmdUb0NvbXBvc2l0ZUtleSA9IChzb3VyY2U6IHN0cmluZyk6IENvbXBvc2l0ZUtleSB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgYXJyYXkgPSBzb3VyY2Uuc3BsaXQoJ0AnKTtcclxuICAgIGlmIChhcnJheS5sZW5ndGggIT09IDIpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB7IGlkOiBhcnJheVswXSEsIGNyZWF0ZWRCeTogYXJyYXlbMV0hIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdG9Kc29uU3RyaW5nID0gKHNvdXJjZTogQ29tcG9zaXRlS2V5KTogc3RyaW5nID0+IHtcclxuICAgIHJldHVybiBgeyBpZDogJHtzb3VyY2UuaWR9LCBjcmVhdGVkQnk6ICR7c291cmNlLmNyZWF0ZWRCeX0gfWA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZXF1YWxzID0gKHg6IENvbXBvc2l0ZUtleSwgeTogQ29tcG9zaXRlS2V5KTogYm9vbGVhbiA9PiB7XHJcbiAgICByZXR1cm4geC5jcmVhdGVkQnkgPT09IHkuY3JlYXRlZEJ5ICYmIHguaWQgPT09IHkuaWQ7XHJcbn07XHJcblxyXG5jb25zdCBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5PENvbXBvc2l0ZUtleSwgc3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgY3JlYXRlRHVhbEtleTogeCA9PiAoeyBmaXJzdDogeC5jcmVhdGVkQnksIHNlY29uZDogeC5pZCB9KSxcclxuICAgIGNyZWF0ZUtleTogeCA9PiAoeyBjcmVhdGVkQnk6IHguZmlyc3QsIGlkOiB4LnNlY29uZCB9KSxcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIFN0YXRlTWFwPFQ+ID0gQ3VzdG9tRHVhbEtleU1hcDxDb21wb3NpdGVLZXksIHN0cmluZywgc3RyaW5nLCBUPjtcclxuZXhwb3J0IHR5cGUgUmVhZG9ubHlTdGF0ZU1hcDxUPiA9IFJlYWRvbmx5Q3VzdG9tRHVhbEtleU1hcDxDb21wb3NpdGVLZXksIHN0cmluZywgc3RyaW5nLCBUPjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVTdGF0ZU1hcCA9IDxUPihcclxuICAgIHNvdXJjZT86IER1YWxLZXlNYXBTb3VyY2U8c3RyaW5nLCBzdHJpbmcsIFQ+IHwgRHVhbEtleU1hcDxzdHJpbmcsIHN0cmluZywgVD5cclxuKTogU3RhdGVNYXA8VD4gPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBDdXN0b21EdWFsS2V5TWFwKHsgLi4ua2V5RmFjdG9yeSwgc291cmNlTWFwOiBzb3VyY2UgfSk7XHJcbn07XHJcbiJdfQ==
export { FirebaseConfig, createFirebaseConfig } from './internal/config';
export { anonymous, authToken, $free, $system } from './internal/constants';
export { KeyFactory, CustomDualKeyMap, ReadonlyCustomDualKeyMap, groupJoin as groupJoinCustomDualKeyMap, } from './internal/customDualKeyMap';
export { DualKey, DualKeyMap, ReadonlyDualKeyMap, DualKeyMapSource, dualKeyToString, toJsonString as dualKeyToJsonString, groupJoin as groupJoinDualKeyMap, groupJoin3 as groupJoin3DualKeyMap, groupJoin4 as groupJoin4DualKeyMap, } from './internal/dualKeyMap';
export { DualKey, DualKeyMap, ReadonlyDualKeyMap, DualKeyMapSource, toJsonString as dualKeyToJsonString, groupJoin as groupJoinDualKeyMap, groupJoin3 as groupJoin3DualKeyMap, groupJoin4 as groupJoin4DualKeyMap, } from './internal/dualKeyMap';
export { StrIndex5, strIndex5Array, isStrIndex5, StrIndex10, strIndex10Array, isStrIndex10, StrIndex20, strIndex20Array, isStrIndex20, StrIndex100, strIndex100Array, isStrIndex100, } from './internal/indexes';
export { JsonObject } from './internal/jsonObject';
export { keyNames } from './internal/keyNames';
export { groupJoin as groupJoinMap } from './internal/map';

@@ -11,4 +12,4 @@ export { PublicChannelKey } from './internal/publicChannelKey';

export { groupJoin as groupJoinSet } from './internal/set';
export { CompositeKey, compositeKeyToString, stringToCompositeKey, toJsonString as stateMapToJsonString, equals as compositeKeyEquals, StateMap, ReadonlyStateMap, createStateMap, } from './internal/stateMap';
export { CompositeKey, stringToCompositeKey, toJsonString as stateMapToJsonString, equals as compositeKeyEquals, StateMap, ReadonlyStateMap, createStateMap, } from './internal/stateMap';
export { left, right, both } from './internal/types';
export { chooseDualKeyRecord, chooseRecord, dualKeyRecordFind, dualKeyRecordForEach, isRecordEmpty, mapDualKeyRecord, mapRecord, mapToRecord, recordForEach, recordForEachAsync, recordToArray, recordToDualKeyMap, dualKeyRecordToDualKeyMap, recordToMap, } from './internal/utils';

@@ -6,3 +6,2 @@ import { GroupJoinResult } from './types';

};
export declare const dualKeyToString: <T1, T2>(source: DualKey<T1, T2>) => string;
export declare const toJsonString: <T1, T2>(source: DualKey<T1, T2>) => string;

@@ -9,0 +8,0 @@ export declare type DualKeyMapSource<TKey1, TKey2, TValue> = Map<TKey1, Map<TKey2, TValue>> | Map<TKey1, ReadonlyMap<TKey2, TValue>> | ReadonlyMap<TKey1, Map<TKey2, TValue>> | ReadonlyMap<TKey1, ReadonlyMap<TKey2, TValue>>;

@@ -7,3 +7,2 @@ import { CustomDualKeyMap, ReadonlyCustomDualKeyMap } from './customDualKeyMap';

};
export declare const compositeKeyToString: (source: CompositeKey) => string;
export declare const stringToCompositeKey: (source: string) => CompositeKey | null;

@@ -10,0 +9,0 @@ export declare const toJsonString: (source: CompositeKey) => string;

{
"version": "0.3.0",
"version": "0.4.0",
"license": "MIT",

@@ -4,0 +4,0 @@ "main": "dist/cjs/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc