@beiguancyc/parse-server 9.10.5-ruixiang.1 → 9.10.6-ruixiang.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  "use strict";
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmV4cG9ydCB0eXBlIFNjaGVtYVR5cGUgPSBhbnk7XG5leHBvcnQgdHlwZSBTdG9yYWdlQ2xhc3MgPSBhbnk7XG5leHBvcnQgdHlwZSBRdWVyeVR5cGUgPSBhbnk7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T3B0aW9ucyA9IHtcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXIsXG4gIGFjbD86IHN0cmluZ1tdLFxuICBzb3J0PzogeyBbc3RyaW5nXTogbnVtYmVyIH0sXG4gIGNvdW50PzogYm9vbGVhbiB8IG51bWJlcixcbiAga2V5cz86IHN0cmluZ1tdLFxuICBvcD86IHN0cmluZyxcbiAgZGlzdGluY3Q/OiBib29sZWFuLFxuICBwaXBlbGluZT86IGFueSxcbiAgcmVhZFByZWZlcmVuY2U/OiA/c3RyaW5nLFxuICBoaW50PzogP21peGVkLFxuICBleHBsYWluPzogQm9vbGVhbixcbiAgY2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbixcbiAgYWN0aW9uPzogc3RyaW5nLFxuICBhZGRzRmllbGQ/OiBib29sZWFuLFxuICBjb21tZW50Pzogc3RyaW5nLFxufTtcblxuZXhwb3J0IHR5cGUgVXBkYXRlUXVlcnlPcHRpb25zID0ge1xuICBtYW55PzogYm9vbGVhbixcbiAgdXBzZXJ0PzogYm9vbGVhbixcbn07XG5cbmV4cG9ydCB0eXBlIEZ1bGxRdWVyeU9wdGlvbnMgPSBRdWVyeU9wdGlvbnMgJiBVcGRhdGVRdWVyeU9wdGlvbnM7XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZU1hbnlSZXN1bHQgPSB7XG4gIG1hdGNoZWRDb3VudD86IG51bWJlcixcbiAgbW9kaWZpZWRDb3VudD86IG51bWJlcixcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUFkYXB0ZXIge1xuICBjYW5Tb3J0T25Kb2luVGFibGVzOiBib29sZWFuO1xuICBzY2hlbWFDYWNoZVR0bDogP251bWJlcjtcbiAgZW5hYmxlU2NoZW1hSG9va3M6IGJvb2xlYW47XG5cbiAgY2xhc3NFeGlzdHMoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBzZXRDbGFzc0xldmVsUGVybWlzc2lvbnMoY2xhc3NOYW1lOiBzdHJpbmcsIGNscHM6IGFueSk6IFByb21pc2U8dm9pZD47XG4gIGNyZWF0ZUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCBzY2hlbWE6IFNjaGVtYVR5cGUpOiBQcm9taXNlPHZvaWQ+O1xuICBhZGRGaWVsZElmTm90RXhpc3RzKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdHlwZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlRmllbGRPcHRpb25zKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdHlwZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBbGxDbGFzc2VzKGZhc3Q6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVGaWVsZHMoY2xhc3NOYW1lOiBzdHJpbmcsIHNjaGVtYTogU2NoZW1hVHlwZSwgZmllbGROYW1lczogQXJyYXk8c3RyaW5nPik6IFByb21pc2U8dm9pZD47XG4gIGdldEFsbENsYXNzZXMoKTogUHJvbWlzZTxTdG9yYWdlQ2xhc3NbXT47XG4gIGdldENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlQ2xhc3M+O1xuICBjcmVhdGVPYmplY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHRyYW5zYWN0aW9uYWxTZXNzaW9uOiA/YW55XG4gICk6IFByb21pc2U8YW55PjtcbiAgZGVsZXRlT2JqZWN0c0J5UXVlcnkoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIFVwZGF0ZXMgYWxsIG9iamVjdHMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcXVlcnkuXG4gICAqIEFkYXB0ZXJzIG1heSByZXR1cm4gYW4gYFVwZGF0ZU1hbnlSZXN1bHRgIHdpdGggb3B0aW9uYWwgYG1hdGNoZWRDb3VudGAgYW5kIGBtb2RpZmllZENvdW50YFxuICAgKiB0byBpbmRpY2F0ZSBob3cgbWFueSBkb2N1bWVudHMgd2VyZSBtYXRjaGVkIGFuZCBtb2RpZmllZC4gSWYgbm90IHByb3ZpZGVkLCB0aGUgY2FsbGVyXG4gICAqIHJlY2VpdmVzIGB1bmRlZmluZWRgIGZvciB0aGVzZSBmaWVsZHMuXG4gICAqL1xuICB1cGRhdGVPYmplY3RzQnlRdWVyeShcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzY2hlbWE6IFNjaGVtYVR5cGUsXG4gICAgcXVlcnk6IFF1ZXJ5VHlwZSxcbiAgICB1cGRhdGU6IGFueSxcbiAgICB0cmFuc2FjdGlvbmFsU2Vzc2lvbjogP2FueVxuICApOiBQcm9taXNlPFthbnldIHwgVXBkYXRlTWFueVJlc3VsdD47XG4gIGZpbmRPbmVBbmRVcGRhdGUoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdXBkYXRlOiBhbnksXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTxhbnk+O1xuICB1cHNlcnRPbmVPYmplY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdXBkYXRlOiBhbnksXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTxhbnk+O1xuICBmaW5kKFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIHNjaGVtYTogU2NoZW1hVHlwZSxcbiAgICBxdWVyeTogUXVlcnlUeXBlLFxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9uc1xuICApOiBQcm9taXNlPFthbnldPjtcbiAgZW5zdXJlSW5kZXgoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIGZpZWxkTmFtZXM6IHN0cmluZ1tdLFxuICAgIGluZGV4TmFtZT86IHN0cmluZyxcbiAgICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzogT2JqZWN0XG4gICk6IFByb21pc2U8YW55PjtcbiAgZW5zdXJlVW5pcXVlbmVzcyhjbGFzc05hbWU6IHN0cmluZywgc2NoZW1hOiBTY2hlbWFUeXBlLCBmaWVsZE5hbWVzOiBBcnJheTxzdHJpbmc+KTogUHJvbWlzZTx2b2lkPjtcbiAgY291bnQoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgcmVhZFByZWZlcmVuY2U/OiBzdHJpbmcsXG4gICAgZXN0aW1hdGU/OiBib29sZWFuLFxuICAgIGhpbnQ/OiBtaXhlZCxcbiAgICBjb21tZW50Pzogc3RyaW5nXG4gICk6IFByb21pc2U8bnVtYmVyPjtcbiAgZGlzdGluY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgZmllbGROYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxhbnk+O1xuICBhZ2dyZWdhdGUoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBhbnksXG4gICAgcGlwZWxpbmU6IGFueSxcbiAgICByZWFkUHJlZmVyZW5jZTogP3N0cmluZyxcbiAgICBoaW50OiA/bWl4ZWQsXG4gICAgZXhwbGFpbj86IGJvb2xlYW4sXG4gICAgY29tbWVudD86IHN0cmluZyxcbiAgICByYXdWYWx1ZXM/OiBib29sZWFuLFxuICAgIHJhd0ZpZWxkTmFtZXM/OiBib29sZWFuXG4gICk6IFByb21pc2U8YW55PjtcbiAgcGVyZm9ybUluaXRpYWxpemF0aW9uKG9wdGlvbnM6ID9hbnkpOiBQcm9taXNlPHZvaWQ+O1xuICB3YXRjaChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQ7XG5cbiAgLy8gSW5kZXhpbmdcbiAgY3JlYXRlSW5kZXhlcyhjbGFzc05hbWU6IHN0cmluZywgaW5kZXhlczogYW55LCBjb25uOiA/YW55KTogUHJvbWlzZTx2b2lkPjtcbiAgZ2V0SW5kZXhlcyhjbGFzc05hbWU6IHN0cmluZywgY29ubmVjdGlvbjogP2FueSk6IFByb21pc2U8dm9pZD47XG4gIHVwZGF0ZVNjaGVtYVdpdGhJbmRleGVzKCk6IFByb21pc2U8dm9pZD47XG4gIHNldEluZGV4ZXNXaXRoU2NoZW1hRm9ybWF0KFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIHN1Ym1pdHRlZEluZGV4ZXM6IGFueSxcbiAgICBleGlzdGluZ0luZGV4ZXM6IGFueSxcbiAgICBmaWVsZHM6IGFueSxcbiAgICBjb25uOiA/YW55XG4gICk6IFByb21pc2U8dm9pZD47XG4gIGNyZWF0ZVRyYW5zYWN0aW9uYWxTZXNzaW9uKCk6IFByb21pc2U8YW55PjtcbiAgY29tbWl0VHJhbnNhY3Rpb25hbFNlc3Npb24odHJhbnNhY3Rpb25hbFNlc3Npb246IGFueSk6IFByb21pc2U8dm9pZD47XG4gIGFib3J0VHJhbnNhY3Rpb25hbFNlc3Npb24odHJhbnNhY3Rpb25hbFNlc3Npb246IGFueSk6IFByb21pc2U8dm9pZD47XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmV4cG9ydCB0eXBlIFNjaGVtYVR5cGUgPSBhbnk7XG5leHBvcnQgdHlwZSBTdG9yYWdlQ2xhc3MgPSBhbnk7XG5leHBvcnQgdHlwZSBRdWVyeVR5cGUgPSBhbnk7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T3B0aW9ucyA9IHtcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXIsXG4gIGFjbD86IHN0cmluZ1tdLFxuICBzb3J0PzogeyBbc3RyaW5nXTogbnVtYmVyIH0sXG4gIGNvdW50PzogYm9vbGVhbiB8IG51bWJlcixcbiAga2V5cz86IHN0cmluZ1tdLFxuICBvcD86IHN0cmluZyxcbiAgZGlzdGluY3Q/OiBib29sZWFuLFxuICBwaXBlbGluZT86IGFueSxcbiAgcmVhZFByZWZlcmVuY2U/OiA/c3RyaW5nLFxuICBoaW50PzogP21peGVkLFxuICBleHBsYWluPzogQm9vbGVhbixcbiAgY2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbixcbiAgYWN0aW9uPzogc3RyaW5nLFxuICBhZGRzRmllbGQ/OiBib29sZWFuLFxuICBjb21tZW50Pzogc3RyaW5nLFxufTtcblxuZXhwb3J0IHR5cGUgVXBkYXRlUXVlcnlPcHRpb25zID0ge1xuICBtYW55PzogYm9vbGVhbixcbiAgdXBzZXJ0PzogYm9vbGVhbixcbn07XG5cbmV4cG9ydCB0eXBlIEZ1bGxRdWVyeU9wdGlvbnMgPSBRdWVyeU9wdGlvbnMgJiBVcGRhdGVRdWVyeU9wdGlvbnM7XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZU1hbnlSZXN1bHQgPSB7XG4gIG1hdGNoZWRDb3VudD86IG51bWJlcixcbiAgbW9kaWZpZWRDb3VudD86IG51bWJlcixcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUFkYXB0ZXIge1xuICBjYW5Tb3J0T25Kb2luVGFibGVzOiBib29sZWFuO1xuICBzY2hlbWFDYWNoZVR0bDogP251bWJlcjtcbiAgZW5hYmxlU2NoZW1hSG9va3M6IGJvb2xlYW47XG5cbiAgY2xhc3NFeGlzdHMoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBzZXRDbGFzc0xldmVsUGVybWlzc2lvbnMoY2xhc3NOYW1lOiBzdHJpbmcsIGNscHM6IGFueSk6IFByb21pc2U8dm9pZD47XG4gIGNyZWF0ZUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCBzY2hlbWE6IFNjaGVtYVR5cGUpOiBQcm9taXNlPHZvaWQ+O1xuICBhZGRGaWVsZElmTm90RXhpc3RzKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdHlwZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlRmllbGRPcHRpb25zKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdHlwZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBbGxDbGFzc2VzKGZhc3Q6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVGaWVsZHMoY2xhc3NOYW1lOiBzdHJpbmcsIHNjaGVtYTogU2NoZW1hVHlwZSwgZmllbGROYW1lczogQXJyYXk8c3RyaW5nPik6IFByb21pc2U8dm9pZD47XG4gIGdldEFsbENsYXNzZXMoKTogUHJvbWlzZTxTdG9yYWdlQ2xhc3NbXT47XG4gIGdldENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlQ2xhc3M+O1xuICBjcmVhdGVPYmplY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHRyYW5zYWN0aW9uYWxTZXNzaW9uOiA/YW55XG4gICk6IFByb21pc2U8YW55PjtcbiAgZGVsZXRlT2JqZWN0c0J5UXVlcnkoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIFVwZGF0ZXMgYWxsIG9iamVjdHMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcXVlcnkuXG4gICAqIEFkYXB0ZXJzIG1heSByZXR1cm4gYW4gYFVwZGF0ZU1hbnlSZXN1bHRgIHdpdGggb3B0aW9uYWwgYG1hdGNoZWRDb3VudGAgYW5kIGBtb2RpZmllZENvdW50YFxuICAgKiB0byBpbmRpY2F0ZSBob3cgbWFueSBkb2N1bWVudHMgd2VyZSBtYXRjaGVkIGFuZCBtb2RpZmllZC4gSWYgbm90IHByb3ZpZGVkLCB0aGUgY2FsbGVyXG4gICAqIHJlY2VpdmVzIGB1bmRlZmluZWRgIGZvciB0aGVzZSBmaWVsZHMuXG4gICAqL1xuICB1cGRhdGVPYmplY3RzQnlRdWVyeShcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzY2hlbWE6IFNjaGVtYVR5cGUsXG4gICAgcXVlcnk6IFF1ZXJ5VHlwZSxcbiAgICB1cGRhdGU6IGFueSxcbiAgICB0cmFuc2FjdGlvbmFsU2Vzc2lvbjogP2FueVxuICApOiBQcm9taXNlPFthbnldIHwgVXBkYXRlTWFueVJlc3VsdD47XG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBmaXJzdCBvYmplY3QgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBxdWVyeSBhbmQgcmVzb2x2ZXMgd2l0aCB0aGUgdXBkYXRlZCBvYmplY3QuXG4gICAqIFRoZSBvYmplY3QgaW5jbHVkZXMgaXRzIHJlYWQgYWNjZXNzIGluIGBfcnBlcm1gIChgbnVsbGAgZm9yIGFuIG9iamVjdCB3aXRob3V0IEFDTCk7IGlmIGl0IGlzXG4gICAqIG1pc3NpbmcsIFBhcnNlIFNlcnZlciByZWFkcyB0aGUgb2JqZWN0IGFnYWluIHRvIGRlY2lkZSB3aGljaCBmaWVsZHMgYW4gdXBkYXRlIHJlc3BvbnNlIGNvbnRhaW5zLlxuICAgKi9cbiAgZmluZE9uZUFuZFVwZGF0ZShcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzY2hlbWE6IFNjaGVtYVR5cGUsXG4gICAgcXVlcnk6IFF1ZXJ5VHlwZSxcbiAgICB1cGRhdGU6IGFueSxcbiAgICB0cmFuc2FjdGlvbmFsU2Vzc2lvbjogP2FueVxuICApOiBQcm9taXNlPGFueT47XG4gIHVwc2VydE9uZU9iamVjdChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzY2hlbWE6IFNjaGVtYVR5cGUsXG4gICAgcXVlcnk6IFF1ZXJ5VHlwZSxcbiAgICB1cGRhdGU6IGFueSxcbiAgICB0cmFuc2FjdGlvbmFsU2Vzc2lvbjogP2FueVxuICApOiBQcm9taXNlPGFueT47XG4gIGZpbmQoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgb3B0aW9uczogUXVlcnlPcHRpb25zXG4gICk6IFByb21pc2U8W2FueV0+O1xuICBlbnN1cmVJbmRleChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzY2hlbWE6IFNjaGVtYVR5cGUsXG4gICAgZmllbGROYW1lczogc3RyaW5nW10sXG4gICAgaW5kZXhOYW1lPzogc3RyaW5nLFxuICAgIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiBPYmplY3RcbiAgKTogUHJvbWlzZTxhbnk+O1xuICBlbnN1cmVVbmlxdWVuZXNzKGNsYXNzTmFtZTogc3RyaW5nLCBzY2hlbWE6IFNjaGVtYVR5cGUsIGZpZWxkTmFtZXM6IEFycmF5PHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+O1xuICBjb3VudChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzY2hlbWE6IFNjaGVtYVR5cGUsXG4gICAgcXVlcnk6IFF1ZXJ5VHlwZSxcbiAgICByZWFkUHJlZmVyZW5jZT86IHN0cmluZyxcbiAgICBlc3RpbWF0ZT86IGJvb2xlYW4sXG4gICAgaGludD86IG1peGVkLFxuICAgIGNvbW1lbnQ/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxudW1iZXI+O1xuICBkaXN0aW5jdChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzY2hlbWE6IFNjaGVtYVR5cGUsXG4gICAgcXVlcnk6IFF1ZXJ5VHlwZSxcbiAgICBmaWVsZE5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPGFueT47XG4gIGFnZ3JlZ2F0ZShcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzY2hlbWE6IGFueSxcbiAgICBwaXBlbGluZTogYW55LFxuICAgIHJlYWRQcmVmZXJlbmNlOiA/c3RyaW5nLFxuICAgIGhpbnQ6ID9taXhlZCxcbiAgICBleHBsYWluPzogYm9vbGVhbixcbiAgICBjb21tZW50Pzogc3RyaW5nLFxuICAgIHJhd1ZhbHVlcz86IGJvb2xlYW4sXG4gICAgcmF3RmllbGROYW1lcz86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxhbnk+O1xuICBwZXJmb3JtSW5pdGlhbGl6YXRpb24ob3B0aW9uczogP2FueSk6IFByb21pc2U8dm9pZD47XG4gIHdhdGNoKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZDtcblxuICAvLyBJbmRleGluZ1xuICBjcmVhdGVJbmRleGVzKGNsYXNzTmFtZTogc3RyaW5nLCBpbmRleGVzOiBhbnksIGNvbm46ID9hbnkpOiBQcm9taXNlPHZvaWQ+O1xuICBnZXRJbmRleGVzKGNsYXNzTmFtZTogc3RyaW5nLCBjb25uZWN0aW9uOiA/YW55KTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlU2NoZW1hV2l0aEluZGV4ZXMoKTogUHJvbWlzZTx2b2lkPjtcbiAgc2V0SW5kZXhlc1dpdGhTY2hlbWFGb3JtYXQoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc3VibWl0dGVkSW5kZXhlczogYW55LFxuICAgIGV4aXN0aW5nSW5kZXhlczogYW55LFxuICAgIGZpZWxkczogYW55LFxuICAgIGNvbm46ID9hbnlcbiAgKTogUHJvbWlzZTx2b2lkPjtcbiAgY3JlYXRlVHJhbnNhY3Rpb25hbFNlc3Npb24oKTogUHJvbWlzZTxhbnk+O1xuICBjb21taXRUcmFuc2FjdGlvbmFsU2Vzc2lvbih0cmFuc2FjdGlvbmFsU2Vzc2lvbjogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgYWJvcnRUcmFuc2FjdGlvbmFsU2Vzc2lvbih0cmFuc2FjdGlvbmFsU2Vzc2lvbjogYW55KTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
package/lib/Auth.js CHANGED
@@ -17,6 +17,7 @@ function Auth({
17
17
  isMaster = false,
18
18
  isMaintenance = false,
19
19
  isReadOnly = false,
20
+ isLegacySession = false,
20
21
  user,
21
22
  installationId
22
23
  }) {
@@ -27,6 +28,7 @@ function Auth({
27
28
  this.isMaintenance = isMaintenance;
28
29
  this.user = user;
29
30
  this.isReadOnly = isReadOnly;
31
+ this.isLegacySession = isLegacySession;
30
32
 
31
33
  // Assuming a users roles won't change during a single request, we'll
32
34
  // only load them once.
@@ -271,6 +273,7 @@ var getAuthForLegacySessionToken = async function ({
271
273
  return new Auth({
272
274
  config,
273
275
  isMaster: false,
276
+ isLegacySession: true,
274
277
  installationId,
275
278
  user: userObject
276
279
  });
@@ -413,11 +416,13 @@ Auth.prototype.getRolesByIds = async function (ins) {
413
416
  };
414
417
 
415
418
  // Given a list of roleIds, find all the parent roles, returns a promise with all names
416
- Auth.prototype._getAllRolesNamesForRoleIds = function (roleIDs, names = [], queriedRoles = {}) {
419
+ Auth.prototype._getAllRolesNamesForRoleIds = function (roleIDs, names = [], queriedRoles = new Set()) {
417
420
  const ins = roleIDs.filter(roleID => {
418
- const wasQueried = queriedRoles[roleID] !== true;
419
- queriedRoles[roleID] = true;
420
- return wasQueried;
421
+ if (queriedRoles.has(roleID)) {
422
+ return false;
423
+ }
424
+ queriedRoles.add(roleID);
425
+ return true;
421
426
  });
422
427
 
423
428
  // all roles are accounted for, return the names
@@ -688,4 +693,4 @@ module.exports = {
688
693
  checkIfUserHasProvidedConfiguredProvidersForLogin,
689
694
  handleAuthDataValidation
690
695
  };
691
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX2xydUNhY2hlIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2UiLCJBdXRoIiwiY29uZmlnIiwiY2FjaGVDb250cm9sbGVyIiwidW5kZWZpbmVkIiwiaXNNYXN0ZXIiLCJpc01haW50ZW5hbmNlIiwiaXNSZWFkT25seSIsInVzZXIiLCJpbnN0YWxsYXRpb25JZCIsInVzZXJSb2xlcyIsImZldGNoZWRSb2xlcyIsInJvbGVQcm9taXNlIiwicHJvdG90eXBlIiwiaXNVbmF1dGhlbnRpY2F0ZWQiLCJtYXN0ZXIiLCJtYWludGVuYW5jZSIsInJlYWRPbmx5Iiwibm9ib2R5IiwidGhyb3R0bGUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5Iiwic2Vzc2lvbiIsInJlc2V0QWZ0ZXIiLCJzZXNzaW9uTGVuZ3RoIiwibGFzdFVwZGF0ZWQiLCJEYXRlIiwidXBkYXRlZEF0Iiwic2tpcFJhbmdlIiwic2V0VGltZSIsImdldFRpbWUiLCJyZW5ld1Nlc3Npb25JZk5lZWRlZCIsInNlc3Npb25Ub2tlbiIsImV4dGVuZFNlc3Npb25PblVzZSIsImdldCIsInNldCIsInF1ZXJ5IiwiUmVzdFF1ZXJ5IiwibWV0aG9kIiwiTWV0aG9kIiwiYXV0aCIsInJ1bkJlZm9yZUZpbmQiLCJjbGFzc05hbWUiLCJyZXN0V2hlcmUiLCJyZXN0T3B0aW9ucyIsImxpbWl0IiwicmVzdWx0cyIsImV4ZWN1dGUiLCJleHBpcmVzQXQiLCJnZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQiLCJSZXN0V3JpdGUiLCJvYmplY3RJZCIsIl9lbmNvZGUiLCJjb2RlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwibG9nZ2VyIiwiZXJyb3IiLCJnZXRBdXRoRm9yU2Vzc2lvblRva2VuIiwiY2FjaGVkIiwiY2FjaGVkRXhwaXJlc0F0IiwidXNlckpTT04iLCJkZWwiLCJJTlZBTElEX1NFU1NJT05fVE9LRU4iLCJjYWNoZWRVc2VyIiwiT2JqZWN0IiwiZnJvbUpTT04iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluY2x1ZGUiLCJRdWVyeSIsIlNlc3Npb24iLCJlcXVhbFRvIiwiZmluZCIsInVzZU1hc3RlcktleSIsIm1hcCIsIm9iaiIsInRvSlNPTiIsImxlbmd0aCIsIm5vdyIsImlzbyIsInN0YXJ0c1dpdGgiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwYXNzd29yZCIsInB1dCIsInRvSVNPU3RyaW5nIiwidXNlck9iamVjdCIsImdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4iLCJfc2Vzc2lvbl90b2tlbiIsInRoZW4iLCJyZXNwb25zZSIsImdldFVzZXJSb2xlcyIsIl9sb2FkUm9sZXMiLCJnZXRSb2xlc0ZvclVzZXIiLCJ1c2VycyIsIl9fdHlwZSIsImlkIiwiZWFjaCIsInJlc3VsdCIsInB1c2giLCJSb2xlIiwiY2FjaGVkUm9sZXMiLCJyb2xlIiwiY2FjaGVSb2xlcyIsInJvbGVzTWFwIiwicmVkdWNlIiwibSIsInIiLCJuYW1lcyIsIm5hbWUiLCJpZHMiLCJyb2xlTmFtZXMiLCJfZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMiLCJBcnJheSIsImNsZWFyUm9sZUNhY2hlIiwiZ2V0Um9sZXNCeUlkcyIsImlucyIsImNvbnRhaW5lZEluIiwicm9sZXMiLCIkaW4iLCJyb2xlSURzIiwicXVlcmllZFJvbGVzIiwiZmlsdGVyIiwicm9sZUlEIiwid2FzUXVlcmllZCIsIlNldCIsInJlc3VsdE1hcCIsIm1lbW8iLCJjb25jYXQiLCJmaW5kVXNlcnNXaXRoQXV0aERhdGEiLCJhdXRoRGF0YSIsImJlZm9yZUZpbmQiLCJjdXJyZW50VXNlckF1dGhEYXRhIiwicHJvdmlkZXJzIiwia2V5cyIsInF1ZXJpZXMiLCJhbGwiLCJwcm92aWRlciIsInByb3ZpZGVyQXV0aERhdGEiLCJzdG9yZWRQcm92aWRlckRhdGEiLCJpbmNvbWluZ0tleXMiLCJpc1VuY2hhbmdlZCIsInNvbWUiLCJrZXkiLCJpc0RlZXBTdHJpY3RFcXVhbCIsInZhbGlkYXRvckNvbmZpZyIsImF1dGhEYXRhTWFuYWdlciIsImdldFZhbGlkYXRvckZvclByb3ZpZGVyIiwidmFsaWRhdG9yIiwiYWRhcHRlciIsIklOVkFMSURfVkFMVUUiLCJ2YWxpZFF1ZXJpZXMiLCJkYXRhYmFzZSIsIiRvciIsImhhc011dGF0ZWRBdXRoRGF0YSIsInVzZXJBdXRoRGF0YSIsIm11dGF0ZWRBdXRoRGF0YSIsImZvckVhY2giLCJwcm92aWRlckRhdGEiLCJ1c2VyUHJvdmlkZXJBdXRoRGF0YSIsImhhc0NoYW5nZXMiLCJjaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luIiwicmVxIiwic2F2ZWRVc2VyUHJvdmlkZXJzIiwiQm9vbGVhbiIsImhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlciIsInBvbGljeSIsImFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQiLCJoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIiLCJyZXF1ZXN0T2JqZWN0IiwiaXAiLCJjYWxsIiwiT1RIRVJfQ0FVU0UiLCJqb2luIiwiaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uIiwiZm91bmRVc2VyIiwiaXNMb2dpbiIsIlVzZXIiLCJnZXRVc2VySWQiLCJmZXRjaCIsInVwZGF0ZWRPYmplY3QiLCJidWlsZFBhcnNlT2JqZWN0cyIsImdldFJlcXVlc3RPYmplY3QiLCJhY2MiLCJhdXRoRGF0YVJlc3BvbnNlIiwiYXV0aEtleXMiLCJzb3J0IiwiYXV0aFByb3ZpZGVyIiwiZW5hYmxlZCIsIlVOU1VQUE9SVEVEX1NFUlZJQ0UiLCJ2YWxpZGF0aW9uUmVzdWx0IiwidHJpZ2dlck5hbWUiLCJkb05vdFNhdmUiLCJzYXZlIiwiZXJyIiwicmVzb2x2ZUVycm9yIiwiU0NSSVBUX0ZBSUxFRCIsIm1lc3NhZ2UiLCJ1c2VyU3RyaW5nIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhdXRoZW50aWNhdGlvblN0ZXAiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL0F1dGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJyk7XG5pbXBvcnQgeyBpc0RlZXBTdHJpY3RFcXVhbCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgZ2V0UmVxdWVzdE9iamVjdCwgcmVzb2x2ZUVycm9yIH0gZnJvbSAnLi90cmlnZ2Vycyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBMUlVDYWNoZSBhcyBMUlUgfSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IFJlc3RRdWVyeSBmcm9tICcuL1Jlc3RRdWVyeSc7XG5pbXBvcnQgUmVzdFdyaXRlIGZyb20gJy4vUmVzdFdyaXRlJztcblxuLy8gQW4gQXV0aCBvYmplY3QgdGVsbHMgeW91IHdobyBpcyByZXF1ZXN0aW5nIHNvbWV0aGluZyBhbmQgd2hldGhlclxuLy8gdGhlIG1hc3RlciBrZXkgd2FzIHVzZWQuXG4vLyB1c2VyT2JqZWN0IGlzIGEgUGFyc2UuVXNlciBhbmQgY2FuIGJlIG51bGwgaWYgdGhlcmUncyBubyB1c2VyLlxuZnVuY3Rpb24gQXV0aCh7XG4gIGNvbmZpZyxcbiAgY2FjaGVDb250cm9sbGVyID0gdW5kZWZpbmVkLFxuICBpc01hc3RlciA9IGZhbHNlLFxuICBpc01haW50ZW5hbmNlID0gZmFsc2UsXG4gIGlzUmVhZE9ubHkgPSBmYWxzZSxcbiAgdXNlcixcbiAgaW5zdGFsbGF0aW9uSWQsXG59KSB7XG4gIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB0aGlzLmNhY2hlQ29udHJvbGxlciA9IGNhY2hlQ29udHJvbGxlciB8fCAoY29uZmlnICYmIGNvbmZpZy5jYWNoZUNvbnRyb2xsZXIpO1xuICB0aGlzLmluc3RhbGxhdGlvbklkID0gaW5zdGFsbGF0aW9uSWQ7XG4gIHRoaXMuaXNNYXN0ZXIgPSBpc01hc3RlcjtcbiAgdGhpcy5pc01haW50ZW5hbmNlID0gaXNNYWludGVuYW5jZTtcbiAgdGhpcy51c2VyID0gdXNlcjtcbiAgdGhpcy5pc1JlYWRPbmx5ID0gaXNSZWFkT25seTtcblxuICAvLyBBc3N1bWluZyBhIHVzZXJzIHJvbGVzIHdvbid0IGNoYW5nZSBkdXJpbmcgYSBzaW5nbGUgcmVxdWVzdCwgd2UnbGxcbiAgLy8gb25seSBsb2FkIHRoZW0gb25jZS5cbiAgdGhpcy51c2VyUm9sZXMgPSBbXTtcbiAgdGhpcy5mZXRjaGVkUm9sZXMgPSBmYWxzZTtcbiAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG59XG5cbi8vIFdoZXRoZXIgdGhpcyBhdXRoIGNvdWxkIHBvc3NpYmx5IG1vZGlmeSB0aGUgZ2l2ZW4gdXNlciBpZC5cbi8vIEl0IHN0aWxsIGNvdWxkIGJlIGZvcmJpZGRlbiB2aWEgQUNMcyBldmVuIGlmIHRoaXMgcmV0dXJucyB0cnVlLlxuQXV0aC5wcm90b3R5cGUuaXNVbmF1dGhlbnRpY2F0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmlzTWFzdGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLmlzTWFpbnRlbmFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMudXNlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1hc3Rlci1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbWFzdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYWludGVuYW5jZS1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbWFpbnRlbmFuY2UoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYWludGVuYW5jZTogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFzdGVyLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiByZWFkT25seShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogdHJ1ZSwgaXNSZWFkT25seTogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbm9ib2R5LWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBub2JvZHkoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IGZhbHNlIH0pO1xufVxuXG5jb25zdCB0aHJvdHRsZSA9IG5ldyBMUlUoe1xuICBtYXg6IDEwMDAwLFxuICB0dGw6IDUwMCxcbn0pO1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBzZXNzaW9uIHNob3VsZCBiZSB1cGRhdGVkIGJhc2VkIG9uIGxhc3QgdXBkYXRlIHRpbWUgJiBzZXNzaW9uIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeShjb25maWcsIHNlc3Npb24pIHtcbiAgY29uc3QgcmVzZXRBZnRlciA9IGNvbmZpZy5zZXNzaW9uTGVuZ3RoIC8gMjtcbiAgY29uc3QgbGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZShzZXNzaW9uPy51cGRhdGVkQXQpO1xuICBjb25zdCBza2lwUmFuZ2UgPSBuZXcgRGF0ZSgpO1xuICBza2lwUmFuZ2Uuc2V0VGltZShza2lwUmFuZ2UuZ2V0VGltZSgpIC0gcmVzZXRBZnRlciAqIDEwMDApO1xuICByZXR1cm4gbGFzdFVwZGF0ZWQgPD0gc2tpcFJhbmdlO1xufVxuXG5jb25zdCByZW5ld1Nlc3Npb25JZk5lZWRlZCA9IGFzeW5jICh7IGNvbmZpZywgc2Vzc2lvbiwgc2Vzc2lvblRva2VuIH0pID0+IHtcbiAgaWYgKCFjb25maWc/LmV4dGVuZFNlc3Npb25PblVzZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodGhyb3R0bGUuZ2V0KHNlc3Npb25Ub2tlbikpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhyb3R0bGUuc2V0KHNlc3Npb25Ub2tlbiwgdHJ1ZSk7XG4gIHRyeSB7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgICBjbGFzc05hbWU6ICdfU2Vzc2lvbicsXG4gICAgICAgIHJlc3RXaGVyZTogeyBzZXNzaW9uVG9rZW4gfSxcbiAgICAgICAgcmVzdE9wdGlvbnM6IHsgbGltaXQ6IDEgfSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgeyByZXN1bHRzIH0gPSBhd2FpdCBxdWVyeS5leGVjdXRlKCk7XG4gICAgICBzZXNzaW9uID0gcmVzdWx0c1swXTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkoY29uZmlnLCBzZXNzaW9uKSB8fCAhc2Vzc2lvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBleHBpcmVzQXQgPSBjb25maWcuZ2VuZXJhdGVTZXNzaW9uRXhwaXJlc0F0KCk7XG4gICAgYXdhaXQgbmV3IFJlc3RXcml0ZShcbiAgICAgIGNvbmZpZyxcbiAgICAgIG1hc3Rlcihjb25maWcpLFxuICAgICAgJ19TZXNzaW9uJyxcbiAgICAgIHsgb2JqZWN0SWQ6IHNlc3Npb24ub2JqZWN0SWQgfSxcbiAgICAgIHsgZXhwaXJlc0F0OiBQYXJzZS5fZW5jb2RlKGV4cGlyZXNBdCkgfVxuICAgICkuZXhlY3V0ZSgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGU/LmNvZGUgIT09IFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignQ291bGQgbm90IHVwZGF0ZSBzZXNzaW9uIGV4cGlyeTogJywgZSk7XG4gICAgfVxuICB9XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIEF1dGggb2JqZWN0XG5jb25zdCBnZXRBdXRoRm9yU2Vzc2lvblRva2VuID0gYXN5bmMgZnVuY3Rpb24gKHtcbiAgY29uZmlnLFxuICBjYWNoZUNvbnRyb2xsZXIsXG4gIHNlc3Npb25Ub2tlbixcbiAgaW5zdGFsbGF0aW9uSWQsXG59KSB7XG4gIGNhY2hlQ29udHJvbGxlciA9IGNhY2hlQ29udHJvbGxlciB8fCAoY29uZmlnICYmIGNvbmZpZy5jYWNoZUNvbnRyb2xsZXIpO1xuICBpZiAoY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgY2FjaGVDb250cm9sbGVyLnVzZXIuZ2V0KHNlc3Npb25Ub2tlbik7XG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgY29uc3QgeyBleHBpcmVzQXQ6IGNhY2hlZEV4cGlyZXNBdCwgLi4udXNlckpTT04gfSA9IGNhY2hlZDtcbiAgICAgIGlmIChjYWNoZWRFeHBpcmVzQXQgJiYgbmV3IERhdGUoY2FjaGVkRXhwaXJlc0F0KSA8IG5ldyBEYXRlKCkpIHtcbiAgICAgICAgY2FjaGVDb250cm9sbGVyLnVzZXIuZGVsKHNlc3Npb25Ub2tlbik7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdTZXNzaW9uIHRva2VuIGlzIGV4cGlyZWQuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBjYWNoZWRVc2VyID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKHVzZXJKU09OKTtcbiAgICAgIHJlbmV3U2Vzc2lvbklmTmVlZGVkKHsgY29uZmlnLCBzZXNzaW9uVG9rZW4gfSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICBuZXcgQXV0aCh7XG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICAgICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgICAgICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgICAgdXNlcjogY2FjaGVkVXNlcixcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbGV0IHJlc3VsdHM7XG4gIGlmIChjb25maWcpIHtcbiAgICBjb25zdCByZXN0T3B0aW9ucyA9IHtcbiAgICAgIGxpbWl0OiAxLFxuICAgICAgaW5jbHVkZTogJ3VzZXInLFxuICAgIH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgICAgY29uZmlnLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBhdXRoOiBtYXN0ZXIoY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19TZXNzaW9uJyxcbiAgICAgIHJlc3RXaGVyZTogeyBzZXNzaW9uVG9rZW4gfSxcbiAgICAgIHJlc3RPcHRpb25zLFxuICAgIH0pO1xuICAgIHJlc3VsdHMgPSAoYXdhaXQgcXVlcnkuZXhlY3V0ZSgpKS5yZXN1bHRzO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdHMgPSAoXG4gICAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuU2Vzc2lvbilcbiAgICAgICAgLmxpbWl0KDEpXG4gICAgICAgIC5pbmNsdWRlKCd1c2VyJylcbiAgICAgICAgLmVxdWFsVG8oJ3Nlc3Npb25Ub2tlbicsIHNlc3Npb25Ub2tlbilcbiAgICAgICAgLmZpbmQoeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSlcbiAgICApLm1hcChvYmogPT4gb2JqLnRvSlNPTigpKTtcbiAgfVxuXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMSB8fCAhcmVzdWx0c1swXVsndXNlciddKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ0ludmFsaWQgc2Vzc2lvbiB0b2tlbicpO1xuICB9XG4gIGNvbnN0IHNlc3Npb24gPSByZXN1bHRzWzBdO1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLFxuICAgIGV4cGlyZXNBdCA9IHNlc3Npb24uZXhwaXJlc0F0ID8gbmV3IERhdGUoc2Vzc2lvbi5leHBpcmVzQXQuaXNvKSA6IHVuZGVmaW5lZDtcbiAgaWYgKGV4cGlyZXNBdCA8IG5vdykge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdTZXNzaW9uIHRva2VuIGlzIGV4cGlyZWQuJyk7XG4gIH1cbiAgY29uc3Qgb2JqID0gc2Vzc2lvbi51c2VyO1xuXG4gIGlmICh0eXBlb2Ygb2JqWydvYmplY3RJZCddID09PSAnc3RyaW5nJyAmJiBvYmpbJ29iamVjdElkJ10uc3RhcnRzV2l0aCgncm9sZTonKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlRFUk5BTF9TRVJWRVJfRVJST1IsICdJbnZhbGlkIG9iamVjdCBJRC4nKTtcbiAgfVxuXG4gIGRlbGV0ZSBvYmoucGFzc3dvcmQ7XG4gIG9ialsnY2xhc3NOYW1lJ10gPSAnX1VzZXInO1xuICBvYmpbJ3Nlc3Npb25Ub2tlbiddID0gc2Vzc2lvblRva2VuO1xuICBpZiAoY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY2FjaGVDb250cm9sbGVyLnVzZXIucHV0KHNlc3Npb25Ub2tlbiwgeyAuLi5vYmosIGV4cGlyZXNBdDogZXhwaXJlc0F0Py50b0lTT1N0cmluZygpIH0pO1xuICB9XG4gIHJlbmV3U2Vzc2lvbklmTmVlZGVkKHsgY29uZmlnLCBzZXNzaW9uLCBzZXNzaW9uVG9rZW4gfSk7XG4gIGNvbnN0IHVzZXJPYmplY3QgPSBQYXJzZS5PYmplY3QuZnJvbUpTT04ob2JqKTtcbiAgcmV0dXJuIG5ldyBBdXRoKHtcbiAgICBjb25maWcsXG4gICAgY2FjaGVDb250cm9sbGVyLFxuICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICBpbnN0YWxsYXRpb25JZCxcbiAgICB1c2VyOiB1c2VyT2JqZWN0LFxuICB9KTtcbn07XG5cbnZhciBnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuID0gYXN5bmMgZnVuY3Rpb24gKHsgY29uZmlnLCBzZXNzaW9uVG9rZW4sIGluc3RhbGxhdGlvbklkIH0pIHtcbiAgdmFyIHJlc3RPcHRpb25zID0ge1xuICAgIGxpbWl0OiAxLFxuICB9O1xuICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICB2YXIgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgY29uZmlnLFxuICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgIGNsYXNzTmFtZTogJ19Vc2VyJyxcbiAgICByZXN0V2hlcmU6IHsgX3Nlc3Npb25fdG9rZW46IHNlc3Npb25Ub2tlbiB9LFxuICAgIHJlc3RPcHRpb25zLFxuICB9KTtcbiAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGUoKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICB2YXIgcmVzdWx0cyA9IHJlc3BvbnNlLnJlc3VsdHM7XG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnaW52YWxpZCBsZWdhY3kgc2Vzc2lvbiB0b2tlbicpO1xuICAgIH1cbiAgICBjb25zdCBvYmogPSByZXN1bHRzWzBdO1xuXG4gICAgaWYgKHR5cGVvZiBvYmpbJ29iamVjdElkJ10gPT09ICdzdHJpbmcnICYmIG9ialsnb2JqZWN0SWQnXS5zdGFydHNXaXRoKCdyb2xlOicpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnSW52YWxpZCBvYmplY3QgSUQuJyk7XG4gICAgfVxuXG4gICAgb2JqLmNsYXNzTmFtZSA9ICdfVXNlcic7XG4gICAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICAgIHJldHVybiBuZXcgQXV0aCh7XG4gICAgICBjb25maWcsXG4gICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiByb2xlIG5hbWVzXG5BdXRoLnByb3RvdHlwZS5nZXRVc2VyUm9sZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmlzTWFzdGVyIHx8IHRoaXMuaXNNYWludGVuYW5jZSB8fCAhdGhpcy51c2VyKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cbiAgaWYgKHRoaXMuZmV0Y2hlZFJvbGVzKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnVzZXJSb2xlcyk7XG4gIH1cbiAgaWYgKHRoaXMucm9sZVByb21pc2UpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlUHJvbWlzZTtcbiAgfVxuICB0aGlzLnJvbGVQcm9taXNlID0gdGhpcy5fbG9hZFJvbGVzKCk7XG4gIHJldHVybiB0aGlzLnJvbGVQcm9taXNlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuZ2V0Um9sZXNGb3JVc2VyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAvL1N0YWNrIGFsbCBQYXJzZS5Sb2xlXG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgY29uc3QgcmVzdFdoZXJlID0ge1xuICAgICAgdXNlcnM6IHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogJ19Vc2VyJyxcbiAgICAgICAgb2JqZWN0SWQ6IHRoaXMudXNlci5pZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5maW5kLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgYXV0aDogbWFzdGVyKHRoaXMuY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgIHJlc3RXaGVyZSxcbiAgICB9KTtcbiAgICBhd2FpdCBxdWVyeS5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0KSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlJvbGUpXG4gICAgICAuZXF1YWxUbygndXNlcnMnLCB0aGlzLnVzZXIpXG4gICAgICAuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdC50b0pTT04oKSksIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgcm9sZSB0cmVlIGFuZCBjb21waWxlcyBhIHVzZXIncyByb2xlc1xuQXV0aC5wcm90b3R5cGUuX2xvYWRSb2xlcyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY29uc3QgY2FjaGVkUm9sZXMgPSBhd2FpdCB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLmdldCh0aGlzLnVzZXIuaWQpO1xuICAgIGlmIChjYWNoZWRSb2xlcyAhPSBudWxsKSB7XG4gICAgICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gICAgICB0aGlzLnVzZXJSb2xlcyA9IGNhY2hlZFJvbGVzO1xuICAgICAgcmV0dXJuIGNhY2hlZFJvbGVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IGdldCB0aGUgcm9sZSBpZHMgdGhpcyB1c2VyIGlzIGRpcmVjdGx5IGEgbWVtYmVyIG9mXG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmdldFJvbGVzRm9yVXNlcigpO1xuICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgdGhpcy51c2VyUm9sZXMgPSBbXTtcbiAgICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gICAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG5cbiAgICB0aGlzLmNhY2hlUm9sZXMoKTtcbiAgICByZXR1cm4gdGhpcy51c2VyUm9sZXM7XG4gIH1cblxuICBjb25zdCByb2xlc01hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgIChtLCByKSA9PiB7XG4gICAgICBtLm5hbWVzLnB1c2goci5uYW1lKTtcbiAgICAgIG0uaWRzLnB1c2goci5vYmplY3RJZCk7XG4gICAgICByZXR1cm4gbTtcbiAgICB9LFxuICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgKTtcblxuICAvLyBydW4gdGhlIHJlY3Vyc2l2ZSBmaW5kaW5nXG4gIGNvbnN0IHJvbGVOYW1lcyA9IGF3YWl0IHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJvbGVzTWFwLmlkcywgcm9sZXNNYXAubmFtZXMpO1xuICB0aGlzLnVzZXJSb2xlcyA9IHJvbGVOYW1lcy5tYXAociA9PiB7XG4gICAgcmV0dXJuICdyb2xlOicgKyByO1xuICB9KTtcbiAgdGhpcy5mZXRjaGVkUm9sZXMgPSB0cnVlO1xuICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcbiAgdGhpcy5jYWNoZVJvbGVzKCk7XG4gIHJldHVybiB0aGlzLnVzZXJSb2xlcztcbn07XG5cbkF1dGgucHJvdG90eXBlLmNhY2hlUm9sZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5wdXQodGhpcy51c2VyLmlkLCBBcnJheSguLi50aGlzLnVzZXJSb2xlcykpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkF1dGgucHJvdG90eXBlLmNsZWFyUm9sZUNhY2hlID0gZnVuY3Rpb24gKHNlc3Npb25Ub2tlbikge1xuICBpZiAoIXRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUuZGVsKHRoaXMudXNlci5pZCk7XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnVzZXIuZGVsKHNlc3Npb25Ub2tlbik7XG4gIHJldHVybiB0cnVlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuZ2V0Um9sZXNCeUlkcyA9IGFzeW5jIGZ1bmN0aW9uIChpbnMpIHtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAvLyBCdWlsZCBhbiBPUiBxdWVyeSBhY3Jvc3MgYWxsIHBhcmVudFJvbGVzXG4gIGlmICghdGhpcy5jb25maWcpIHtcbiAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuUm9sZSlcbiAgICAgIC5jb250YWluZWRJbihcbiAgICAgICAgJ3JvbGVzJyxcbiAgICAgICAgaW5zLm1hcChpZCA9PiB7XG4gICAgICAgICAgY29uc3Qgcm9sZSA9IG5ldyBQYXJzZS5PYmplY3QoUGFyc2UuUm9sZSk7XG4gICAgICAgICAgcm9sZS5pZCA9IGlkO1xuICAgICAgICAgIHJldHVybiByb2xlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQudG9KU09OKCkpLCB7IHVzZU1hc3RlcktleTogdHJ1ZSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByb2xlcyA9IGlucy5tYXAoaWQgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgICAgb2JqZWN0SWQ6IGlkLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCByZXN0V2hlcmUgPSB7IHJvbGVzOiB7ICRpbjogcm9sZXMgfSB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBhdXRoOiBtYXN0ZXIodGhpcy5jb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgcmVzdFdoZXJlLFxuICAgIH0pO1xuICAgIGF3YWl0IHF1ZXJ5LmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIEdpdmVuIGEgbGlzdCBvZiByb2xlSWRzLCBmaW5kIGFsbCB0aGUgcGFyZW50IHJvbGVzLCByZXR1cm5zIGEgcHJvbWlzZSB3aXRoIGFsbCBuYW1lc1xuQXV0aC5wcm90b3R5cGUuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzID0gZnVuY3Rpb24gKHJvbGVJRHMsIG5hbWVzID0gW10sIHF1ZXJpZWRSb2xlcyA9IHt9KSB7XG4gIGNvbnN0IGlucyA9IHJvbGVJRHMuZmlsdGVyKHJvbGVJRCA9PiB7XG4gICAgY29uc3Qgd2FzUXVlcmllZCA9IHF1ZXJpZWRSb2xlc1tyb2xlSURdICE9PSB0cnVlO1xuICAgIHF1ZXJpZWRSb2xlc1tyb2xlSURdID0gdHJ1ZTtcbiAgICByZXR1cm4gd2FzUXVlcmllZDtcbiAgfSk7XG5cbiAgLy8gYWxsIHJvbGVzIGFyZSBhY2NvdW50ZWQgZm9yLCByZXR1cm4gdGhlIG5hbWVzXG4gIGlmIChpbnMubGVuZ3RoID09IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZ2V0Um9sZXNCeUlkcyhpbnMpXG4gICAgLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAvLyBOb3RoaW5nIGZvdW5kXG4gICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmFtZXMpO1xuICAgICAgfVxuICAgICAgLy8gTWFwIHRoZSByZXN1bHRzIHdpdGggYWxsIElkcyBhbmQgbmFtZXNcbiAgICAgIGNvbnN0IHJlc3VsdE1hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgICAgICAobWVtbywgcm9sZSkgPT4ge1xuICAgICAgICAgIG1lbW8ubmFtZXMucHVzaChyb2xlLm5hbWUpO1xuICAgICAgICAgIG1lbW8uaWRzLnB1c2gocm9sZS5vYmplY3RJZCk7XG4gICAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICAgIH0sXG4gICAgICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgICAgICk7XG4gICAgICAvLyBzdG9yZSB0aGUgbmV3IGZvdW5kIG5hbWVzXG4gICAgICBuYW1lcyA9IG5hbWVzLmNvbmNhdChyZXN1bHRNYXAubmFtZXMpO1xuICAgICAgLy8gZmluZCB0aGUgbmV4dCBvbmVzLCBjaXJjdWxhciByb2xlcyB3aWxsIGJlIGN1dFxuICAgICAgcmV0dXJuIHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJlc3VsdE1hcC5pZHMsIG5hbWVzLCBxdWVyaWVkUm9sZXMpO1xuICAgIH0pXG4gICAgLnRoZW4obmFtZXMgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbLi4ubmV3IFNldChuYW1lcyldKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGZpbmRVc2Vyc1dpdGhBdXRoRGF0YSA9IGFzeW5jIChjb25maWcsIGF1dGhEYXRhLCBiZWZvcmVGaW5kLCBjdXJyZW50VXNlckF1dGhEYXRhKSA9PiB7XG4gIGNvbnN0IHByb3ZpZGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcblxuICBjb25zdCBxdWVyaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJvdmlkZXJzLm1hcChhc3luYyBwcm92aWRlciA9PiB7XG4gICAgICBjb25zdCBwcm92aWRlckF1dGhEYXRhID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuXG4gICAgICAvLyBTa2lwIHByb3ZpZGVycyBiZWluZyB1bmxpbmtlZCAobnVsbCB2YWx1ZSlcbiAgICAgIGlmIChwcm92aWRlckF1dGhEYXRhID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBTa2lwIGJlZm9yZUZpbmQgb25seSB3aGVuIGluY29taW5nIGRhdGEgaXMgY29uZmlybWVkIHVuY2hhbmdlZCBmcm9tIHN0b3JlZCBkYXRhLlxuICAgICAgLy8gVGhpcyBoYW5kbGVzIGVjaG9lZC1iYWNrIGF1dGhEYXRhIGZyb20gYWZ0ZXJGaW5kIChlLmcuIGNsaWVudCBzZW5kcyBiYWNrIHsgaWQ6ICd4JyB9XG4gICAgICAvLyBhbG9uZ3NpZGUgYSBwcm92aWRlciB1bmxpbmspLiBPbiBsb2dpbi9zaWdudXAsIGN1cnJlbnRVc2VyQXV0aERhdGEgaXMgdW5kZWZpbmVkIHNvXG4gICAgICAvLyBiZWZvcmVGaW5kIGFsd2F5cyBydW5zLCBwcmVzZXJ2aW5nIGl0IGFzIHRoZSBzZWN1cml0eSBnYXRlIGZvciBtaXNzaW5nIGNyZWRlbnRpYWxzLlxuICAgICAgY29uc3Qgc3RvcmVkUHJvdmlkZXJEYXRhID0gY3VycmVudFVzZXJBdXRoRGF0YT8uW3Byb3ZpZGVyXTtcbiAgICAgIGNvbnN0IGluY29taW5nS2V5cyA9IE9iamVjdC5rZXlzKHByb3ZpZGVyQXV0aERhdGEgfHwge30pO1xuICAgICAgY29uc3QgaXNVbmNoYW5nZWQgPSBzdG9yZWRQcm92aWRlckRhdGEgJiYgaW5jb21pbmdLZXlzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgIWluY29taW5nS2V5cy5zb21lKGtleSA9PiAhaXNEZWVwU3RyaWN0RXF1YWwocHJvdmlkZXJBdXRoRGF0YVtrZXldLCBzdG9yZWRQcm92aWRlckRhdGFba2V5XSkpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0b3JDb25maWcgPSBjb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgICAgIC8vIFNraXAgZGF0YWJhc2UgcXVlcnkgZm9yIHVuY29uZmlndXJlZCBwcm92aWRlcnMgdG8gYXZvaWQgdW5pbmRleGVkIGNvbGxlY3Rpb24gc2NhbnM7XG4gICAgICAvLyB0aGUgcHJvdmlkZXIgd2lsbCBiZSByZWplY3RlZCBsYXRlciBpbiBoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24gd2l0aCBVTlNVUFBPUlRFRF9TRVJWSUNFXG4gICAgICBpZiAoIXZhbGlkYXRvckNvbmZpZz8udmFsaWRhdG9yKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRhcHRlciA9IHZhbGlkYXRvckNvbmZpZy5hZGFwdGVyO1xuICAgICAgaWYgKGJlZm9yZUZpbmQgJiYgdHlwZW9mIGFkYXB0ZXI/LmJlZm9yZUZpbmQgPT09ICdmdW5jdGlvbicgJiYgIWlzVW5jaGFuZ2VkKSB7XG4gICAgICAgIGF3YWl0IGFkYXB0ZXIuYmVmb3JlRmluZChwcm92aWRlckF1dGhEYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm92aWRlckF1dGhEYXRhPy5pZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBwcm92aWRlckF1dGhEYXRhLmlkICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9WQUxVRSwgYEludmFsaWQgYXV0aERhdGEgaWQgZm9yIHByb3ZpZGVyICcke3Byb3ZpZGVyfScuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IFtgYXV0aERhdGEuJHtwcm92aWRlcn0uaWRgXTogcHJvdmlkZXJBdXRoRGF0YS5pZCB9O1xuICAgIH0pXG4gICk7XG5cbiAgLy8gRmlsdGVyIG91dCBudWxsIHF1ZXJpZXNcbiAgY29uc3QgdmFsaWRRdWVyaWVzID0gcXVlcmllcy5maWx0ZXIocXVlcnkgPT4gcXVlcnkgIT09IG51bGwpO1xuXG4gIGlmICghdmFsaWRRdWVyaWVzLmxlbmd0aCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIFBlcmZvcm0gZGF0YWJhc2UgcXVlcnlcbiAgcmV0dXJuIGNvbmZpZy5kYXRhYmFzZS5maW5kKCdfVXNlcicsIHsgJG9yOiB2YWxpZFF1ZXJpZXMgfSwgeyBsaW1pdDogMiB9KTtcbn07XG5cbmNvbnN0IGhhc011dGF0ZWRBdXRoRGF0YSA9IChhdXRoRGF0YSwgdXNlckF1dGhEYXRhKSA9PiB7XG4gIGlmICghdXNlckF1dGhEYXRhKSB7IHJldHVybiB7IGhhc011dGF0ZWRBdXRoRGF0YTogdHJ1ZSwgbXV0YXRlZEF1dGhEYXRhOiBhdXRoRGF0YSB9OyB9XG4gIGNvbnN0IG11dGF0ZWRBdXRoRGF0YSA9IHt9O1xuICBPYmplY3Qua2V5cyhhdXRoRGF0YSkuZm9yRWFjaChwcm92aWRlciA9PiB7XG4gICAgLy8gQW5vbnltb3VzIHByb3ZpZGVyIGlzIG5vdCBoYW5kbGVkIHRoaXMgd2F5XG4gICAgaWYgKHByb3ZpZGVyID09PSAnYW5vbnltb3VzJykgeyByZXR1cm47IH1cbiAgICBjb25zdCBwcm92aWRlckRhdGEgPSBhdXRoRGF0YVtwcm92aWRlcl07XG4gICAgY29uc3QgdXNlclByb3ZpZGVyQXV0aERhdGEgPSB1c2VyQXV0aERhdGFbcHJvdmlkZXJdO1xuXG4gICAgLy8gSWYgdW5saW5raW5nIChzZXR0aW5nIHRvIG51bGwpLCBjb25zaWRlciBpdCBtdXRhdGVkXG4gICAgaWYgKHByb3ZpZGVyRGF0YSA9PT0gbnVsbCkge1xuICAgICAgbXV0YXRlZEF1dGhEYXRhW3Byb3ZpZGVyXSA9IHByb3ZpZGVyRGF0YTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBwcm92aWRlciBkb2Vzbid0IGV4aXN0IGluIHN0b3JlZCBkYXRhLCBpdCdzIG5ld1xuICAgIGlmICghdXNlclByb3ZpZGVyQXV0aERhdGEpIHtcbiAgICAgIG11dGF0ZWRBdXRoRGF0YVtwcm92aWRlcl0gPSBwcm92aWRlckRhdGE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgaW5jb21pbmcgZGF0YSByZXByZXNlbnRzIGFjdHVhbCBjaGFuZ2VzIHZzIGp1c3QgZWNob2luZyBiYWNrXG4gICAgLy8gd2hhdCBhZnRlckZpbmQgcmV0dXJuZWQuIElmIGluY29taW5nIGRhdGEgaXMgYSBzdWJzZXQgb2Ygc3RvcmVkIGRhdGFcbiAgICAvLyAoYWxsIGluY29taW5nIGZpZWxkcyBtYXRjaCBzdG9yZWQgdmFsdWVzKSwgaXQncyBub3QgbXV0YXRlZC5cbiAgICAvLyBJZiBpbmNvbWluZyBkYXRhIGhhcyBkaWZmZXJlbnQgdmFsdWVzIG9yIGZpZWxkcyBub3QgaW4gc3RvcmVkIGRhdGEsIGl0J3MgbXV0YXRlZC5cbiAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgYWZ0ZXJGaW5kIHN0cmlwcyBzZW5zaXRpdmUgZmllbGRzIGxpa2UgJ2NvZGUnOlxuICAgIC8vIC0gSW5jb21pbmc6IHsgaWQ6ICd4JyB9LCBTdG9yZWQ6IHsgaWQ6ICd4JywgY29kZTogJ3NlY3JldCcgfSAtPiBOT1QgbXV0YXRlZCAoc3Vic2V0KVxuICAgIC8vIC0gSW5jb21pbmc6IHsgaWQ6ICd4JywgdG9rZW46ICduZXcnIH0sIFN0b3JlZDogeyBpZDogJ3gnLCB0b2tlbjogJ29sZCcgfSAtPiBNVVRBVEVEXG4gICAgY29uc3QgaW5jb21pbmdLZXlzID0gT2JqZWN0LmtleXMocHJvdmlkZXJEYXRhIHx8IHt9KTtcbiAgICBjb25zdCBoYXNDaGFuZ2VzID0gaW5jb21pbmdLZXlzLnNvbWUoa2V5ID0+IHtcbiAgICAgIHJldHVybiAhaXNEZWVwU3RyaWN0RXF1YWwocHJvdmlkZXJEYXRhW2tleV0sIHVzZXJQcm92aWRlckF1dGhEYXRhW2tleV0pO1xuICAgIH0pO1xuXG4gICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgIG11dGF0ZWRBdXRoRGF0YVtwcm92aWRlcl0gPSBwcm92aWRlckRhdGE7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFzTXV0YXRlZEF1dGhEYXRhID0gT2JqZWN0LmtleXMobXV0YXRlZEF1dGhEYXRhKS5sZW5ndGggIT09IDA7XG4gIHJldHVybiB7IGhhc011dGF0ZWRBdXRoRGF0YSwgbXV0YXRlZEF1dGhEYXRhIH07XG59O1xuXG5jb25zdCBjaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luID0gKFxuICByZXEgPSB7fSxcbiAgYXV0aERhdGEgPSB7fSxcbiAgdXNlckF1dGhEYXRhID0ge30sXG4gIGNvbmZpZ1xuKSA9PiB7XG4gIGNvbnN0IHNhdmVkVXNlclByb3ZpZGVycyA9IE9iamVjdC5rZXlzKHVzZXJBdXRoRGF0YSlcbiAgICAubWFwKHByb3ZpZGVyID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvciA9IGNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgaWYgKCF2YWxpZGF0b3IgfHwgIXZhbGlkYXRvci5hZGFwdGVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbmFtZTogcHJvdmlkZXIsIGFkYXB0ZXI6IHZhbGlkYXRvci5hZGFwdGVyIH07XG4gICAgfSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuXG4gIGNvbnN0IGhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlciA9IHNhdmVkVXNlclByb3ZpZGVycy5zb21lKFxuICAgIHByb3ZpZGVyID0+XG4gICAgICBwcm92aWRlciAmJiBwcm92aWRlci5hZGFwdGVyICYmIHByb3ZpZGVyLmFkYXB0ZXIucG9saWN5ID09PSAnc29sbycgJiYgYXV0aERhdGFbcHJvdmlkZXIubmFtZV1cbiAgKTtcblxuICAvLyBTb2xvIHByb3ZpZGVycyBjYW4gYmUgY29uc2lkZXJlZCBhcyBzYWZlLCBzbyB3ZSBkbyBub3QgaGF2ZSB0byBjaGVjayBpZiB0aGUgdXNlciBuZWVkc1xuICAvLyB0byBwcm92aWRlIGFuIGFkZGl0aW9uYWwgcHJvdmlkZXIgdG8gbG9naW4uIEFuIGF1dGggYWRhcHRlciB3aXRoIFwic29sb1wiIChsaWtlIHdlYmF1dGhuKSBtZWFuc1xuICAvLyBubyBcImFkZGl0aW9uYWxcIiBhdXRoIG5lZWRzIHRvIGJlIHByb3ZpZGVkIHRvIGxvZ2luIChsaWtlIE9UUCwgTUZBKVxuICBpZiAoaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZCA9IFtdO1xuICBjb25zdCBoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIgPSBzYXZlZFVzZXJQcm92aWRlcnMuc29tZShwcm92aWRlciA9PiB7XG4gICAgbGV0IHBvbGljeSA9IHByb3ZpZGVyLmFkYXB0ZXIucG9saWN5O1xuICAgIGlmICh0eXBlb2YgcG9saWN5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCByZXF1ZXN0T2JqZWN0ID0ge1xuICAgICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgICAgdXNlcjogcmVxLmF1dGgudXNlcixcbiAgICAgICAgbWFzdGVyOiByZXEuYXV0aC5pc01hc3RlcixcbiAgICAgIH07XG4gICAgICBwb2xpY3kgPSBwb2xpY3kuY2FsbChwcm92aWRlci5hZGFwdGVyLCByZXF1ZXN0T2JqZWN0LCB1c2VyQXV0aERhdGFbcHJvdmlkZXIubmFtZV0pO1xuICAgIH1cbiAgICBpZiAocG9saWN5ID09PSAnYWRkaXRpb25hbCcpIHtcbiAgICAgIGlmIChhdXRoRGF0YVtwcm92aWRlci5uYW1lXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFB1c2ggbWlzc2luZyBwcm92aWRlciBmb3IgZXJyb3IgbWVzc2FnZVxuICAgICAgICBhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLnB1c2gocHJvdmlkZXIubmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgaWYgKGhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciB8fCAhYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5sZW5ndGgpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgUGFyc2UuRXJyb3IuT1RIRVJfQ0FVU0UsXG4gICAgYE1pc3NpbmcgYWRkaXRpb25hbCBhdXRoRGF0YSAke2FkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQuam9pbignLCcpfWBcbiAgKTtcbn07XG5cbi8vIFZhbGlkYXRlIGVhY2ggYXV0aERhdGEgc3RlcC1ieS1zdGVwIGFuZCByZXR1cm4gdGhlIHByb3ZpZGVyIHJlc3BvbnNlc1xuY29uc3QgaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uID0gYXN5bmMgKGF1dGhEYXRhLCByZXEsIGZvdW5kVXNlciwgeyBpc0xvZ2luID0gdHJ1ZSB9ID0ge30pID0+IHtcbiAgbGV0IHVzZXI7XG4gIGlmIChmb3VuZFVzZXIpIHtcbiAgICB1c2VyID0gUGFyc2UuVXNlci5mcm9tSlNPTih7IGNsYXNzTmFtZTogJ19Vc2VyJywgLi4uZm91bmRVc2VyIH0pO1xuICAgIC8vIEZpbmQgdXNlciBieSBzZXNzaW9uIGFuZCBjdXJyZW50IG9iamVjdElkOyBvbmx5IHBhc3MgdXNlciBpZiBpdCdzIHRoZSBjdXJyZW50IHVzZXIgb3IgbWFzdGVyIGtleSBpcyBwcm92aWRlZFxuICB9IGVsc2UgaWYgKFxuICAgIChyZXEuYXV0aCAmJlxuICAgICAgcmVxLmF1dGgudXNlciAmJlxuICAgICAgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHJlcS5nZXRVc2VySWQoKSA9PT0gcmVxLmF1dGgudXNlci5pZCkgfHxcbiAgICAocmVxLmF1dGggJiYgcmVxLmF1dGguaXNNYXN0ZXIgJiYgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiYgcmVxLmdldFVzZXJJZCgpKVxuICApIHtcbiAgICB1c2VyID0gbmV3IFBhcnNlLlVzZXIoKTtcbiAgICB1c2VyLmlkID0gcmVxLmF1dGguaXNNYXN0ZXIgPyByZXEuZ2V0VXNlcklkKCkgOiByZXEuYXV0aC51c2VyLmlkO1xuICAgIGF3YWl0IHVzZXIuZmV0Y2goeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cblxuICBjb25zdCB7IHVwZGF0ZWRPYmplY3QgfSA9IHJlcS5idWlsZFBhcnNlT2JqZWN0cygpO1xuICBjb25zdCByZXF1ZXN0T2JqZWN0ID0gZ2V0UmVxdWVzdE9iamVjdCh1bmRlZmluZWQsIHJlcS5hdXRoLCB1cGRhdGVkT2JqZWN0LCB1c2VyLCByZXEuY29uZmlnKTtcbiAgLy8gUGVyZm9ybSB2YWxpZGF0aW9uIGFzIHN0ZXAtYnktc3RlcCBwaXBlbGluZSBmb3IgYmV0dGVyIGVycm9yIGNvbnNpc3RlbmN5XG4gIC8vIGFuZCBhbHNvIHRvIGF2b2lkIHRvIHRyaWdnZXIgYSBwcm92aWRlciAobGlrZSBPVFAgU01TKSBpZiBhbm90aGVyIG9uZSBmYWlsc1xuICBjb25zdCBhY2MgPSB7IGF1dGhEYXRhOiB7fSwgYXV0aERhdGFSZXNwb25zZToge30gfTtcbiAgY29uc3QgYXV0aEtleXMgPSBPYmplY3Qua2V5cyhhdXRoRGF0YSkuc29ydCgpO1xuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIGF1dGhLZXlzKSB7XG4gICAgbGV0IG1ldGhvZCA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXJdID09PSBudWxsKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdmFsaWRhdG9yIH0gPSByZXEuY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcikgfHwge307XG4gICAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSAocmVxLmNvbmZpZy5hdXRoIHx8IHt9KVtwcm92aWRlcl0gfHwge307XG4gICAgICBpZiAoIXZhbGlkYXRvciB8fCBhdXRoUHJvdmlkZXIuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLlVOU1VQUE9SVEVEX1NFUlZJQ0UsXG4gICAgICAgICAgJ1RoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIHVuc3VwcG9ydGVkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdmFsaWRhdG9yKGF1dGhEYXRhW3Byb3ZpZGVyXSwgcmVxLCB1c2VyLCByZXF1ZXN0T2JqZWN0LCB7XG4gICAgICAgIGlzTG9naW4sXG4gICAgICB9KTtcbiAgICAgIG1ldGhvZCA9IHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC5tZXRob2Q7XG4gICAgICByZXF1ZXN0T2JqZWN0LnRyaWdnZXJOYW1lID0gbWV0aG9kO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC52YWxpZGF0b3IpIHtcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHZhbGlkYXRpb25SZXN1bHQpLmxlbmd0aCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhUmVzcG9uc2VbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5yZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFNvbWUgYXV0aCBwcm92aWRlcnMgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gd2lsbCBhdm9pZCB0byByZXBsYWNlIGF1dGhEYXRhIGFscmVhZHkgc3RvcmVkXG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuZG9Ob3RTYXZlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSB2YWxpZGF0aW9uUmVzdWx0LnNhdmUgfHwgYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZSA9IHJlc29sdmVFcnJvcihlcnIsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCxcbiAgICAgICAgbWVzc2FnZTogJ0F1dGggZmFpbGVkLiBVbmtub3duIGVycm9yLicsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPVxuICAgICAgICByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHJlcS5kYXRhLm9iamVjdElkIHx8IHVuZGVmaW5lZDtcbiAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgYEZhaWxlZCBydW5uaW5nIGF1dGggc3RlcCAke21ldGhvZH0gZm9yICR7cHJvdmlkZXJ9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aCBFcnJvcjogYCArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRoZW50aWNhdGlvblN0ZXA6IG1ldGhvZCxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjYztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBdXRoLFxuICBtYXN0ZXIsXG4gIG1haW50ZW5hbmNlLFxuICBub2JvZHksXG4gIHJlYWRPbmx5LFxuICBzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5LFxuICBnZXRBdXRoRm9yU2Vzc2lvblRva2VuLFxuICBnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuLFxuICBmaW5kVXNlcnNXaXRoQXV0aERhdGEsXG4gIGhhc011dGF0ZWRBdXRoRGF0YSxcbiAgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbixcbiAgaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFELHNCQUFBLENBQUFMLE9BQUE7QUFBb0MsU0FBQUssdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFOcEMsTUFBTUcsS0FBSyxHQUFHVixPQUFPLENBQUMsWUFBWSxDQUFDO0FBUW5DO0FBQ0E7QUFDQTtBQUNBLFNBQVNXLElBQUlBLENBQUM7RUFDWkMsTUFBTTtFQUNOQyxlQUFlLEdBQUdDLFNBQVM7RUFDM0JDLFFBQVEsR0FBRyxLQUFLO0VBQ2hC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
696
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX2xydUNhY2hlIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2UiLCJBdXRoIiwiY29uZmlnIiwiY2FjaGVDb250cm9sbGVyIiwidW5kZWZpbmVkIiwiaXNNYXN0ZXIiLCJpc01haW50ZW5hbmNlIiwiaXNSZWFkT25seSIsImlzTGVnYWN5U2Vzc2lvbiIsInVzZXIiLCJpbnN0YWxsYXRpb25JZCIsInVzZXJSb2xlcyIsImZldGNoZWRSb2xlcyIsInJvbGVQcm9taXNlIiwicHJvdG90eXBlIiwiaXNVbmF1dGhlbnRpY2F0ZWQiLCJtYXN0ZXIiLCJtYWludGVuYW5jZSIsInJlYWRPbmx5Iiwibm9ib2R5IiwidGhyb3R0bGUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5Iiwic2Vzc2lvbiIsInJlc2V0QWZ0ZXIiLCJzZXNzaW9uTGVuZ3RoIiwibGFzdFVwZGF0ZWQiLCJEYXRlIiwidXBkYXRlZEF0Iiwic2tpcFJhbmdlIiwic2V0VGltZSIsImdldFRpbWUiLCJyZW5ld1Nlc3Npb25JZk5lZWRlZCIsInNlc3Npb25Ub2tlbiIsImV4dGVuZFNlc3Npb25PblVzZSIsImdldCIsInNldCIsInF1ZXJ5IiwiUmVzdFF1ZXJ5IiwibWV0aG9kIiwiTWV0aG9kIiwiYXV0aCIsInJ1bkJlZm9yZUZpbmQiLCJjbGFzc05hbWUiLCJyZXN0V2hlcmUiLCJyZXN0T3B0aW9ucyIsImxpbWl0IiwicmVzdWx0cyIsImV4ZWN1dGUiLCJleHBpcmVzQXQiLCJnZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQiLCJSZXN0V3JpdGUiLCJvYmplY3RJZCIsIl9lbmNvZGUiLCJjb2RlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwibG9nZ2VyIiwiZXJyb3IiLCJnZXRBdXRoRm9yU2Vzc2lvblRva2VuIiwiY2FjaGVkIiwiY2FjaGVkRXhwaXJlc0F0IiwidXNlckpTT04iLCJkZWwiLCJJTlZBTElEX1NFU1NJT05fVE9LRU4iLCJjYWNoZWRVc2VyIiwiT2JqZWN0IiwiZnJvbUpTT04iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluY2x1ZGUiLCJRdWVyeSIsIlNlc3Npb24iLCJlcXVhbFRvIiwiZmluZCIsInVzZU1hc3RlcktleSIsIm1hcCIsIm9iaiIsInRvSlNPTiIsImxlbmd0aCIsIm5vdyIsImlzbyIsInN0YXJ0c1dpdGgiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwYXNzd29yZCIsInB1dCIsInRvSVNPU3RyaW5nIiwidXNlck9iamVjdCIsImdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4iLCJfc2Vzc2lvbl90b2tlbiIsInRoZW4iLCJyZXNwb25zZSIsImdldFVzZXJSb2xlcyIsIl9sb2FkUm9sZXMiLCJnZXRSb2xlc0ZvclVzZXIiLCJ1c2VycyIsIl9fdHlwZSIsImlkIiwiZWFjaCIsInJlc3VsdCIsInB1c2giLCJSb2xlIiwiY2FjaGVkUm9sZXMiLCJyb2xlIiwiY2FjaGVSb2xlcyIsInJvbGVzTWFwIiwicmVkdWNlIiwibSIsInIiLCJuYW1lcyIsIm5hbWUiLCJpZHMiLCJyb2xlTmFtZXMiLCJfZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMiLCJBcnJheSIsImNsZWFyUm9sZUNhY2hlIiwiZ2V0Um9sZXNCeUlkcyIsImlucyIsImNvbnRhaW5lZEluIiwicm9sZXMiLCIkaW4iLCJyb2xlSURzIiwicXVlcmllZFJvbGVzIiwiU2V0IiwiZmlsdGVyIiwicm9sZUlEIiwiaGFzIiwiYWRkIiwicmVzdWx0TWFwIiwibWVtbyIsImNvbmNhdCIsImZpbmRVc2Vyc1dpdGhBdXRoRGF0YSIsImF1dGhEYXRhIiwiYmVmb3JlRmluZCIsImN1cnJlbnRVc2VyQXV0aERhdGEiLCJwcm92aWRlcnMiLCJrZXlzIiwicXVlcmllcyIsImFsbCIsInByb3ZpZGVyIiwicHJvdmlkZXJBdXRoRGF0YSIsInN0b3JlZFByb3ZpZGVyRGF0YSIsImluY29taW5nS2V5cyIsImlzVW5jaGFuZ2VkIiwic29tZSIsImtleSIsImlzRGVlcFN0cmljdEVxdWFsIiwidmFsaWRhdG9yQ29uZmlnIiwiYXV0aERhdGFNYW5hZ2VyIiwiZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIiLCJ2YWxpZGF0b3IiLCJhZGFwdGVyIiwiSU5WQUxJRF9WQUxVRSIsInZhbGlkUXVlcmllcyIsImRhdGFiYXNlIiwiJG9yIiwiaGFzTXV0YXRlZEF1dGhEYXRhIiwidXNlckF1dGhEYXRhIiwibXV0YXRlZEF1dGhEYXRhIiwiZm9yRWFjaCIsInByb3ZpZGVyRGF0YSIsInVzZXJQcm92aWRlckF1dGhEYXRhIiwiaGFzQ2hhbmdlcyIsImNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4iLCJyZXEiLCJzYXZlZFVzZXJQcm92aWRlcnMiLCJCb29sZWFuIiwiaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyIiwicG9saWN5IiwiYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZCIsImhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciIsInJlcXVlc3RPYmplY3QiLCJpcCIsImNhbGwiLCJPVEhFUl9DQVVTRSIsImpvaW4iLCJoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24iLCJmb3VuZFVzZXIiLCJpc0xvZ2luIiwiVXNlciIsImdldFVzZXJJZCIsImZldGNoIiwidXBkYXRlZE9iamVjdCIsImJ1aWxkUGFyc2VPYmplY3RzIiwiZ2V0UmVxdWVzdE9iamVjdCIsImFjYyIsImF1dGhEYXRhUmVzcG9uc2UiLCJhdXRoS2V5cyIsInNvcnQiLCJhdXRoUHJvdmlkZXIiLCJlbmFibGVkIiwiVU5TVVBQT1JURURfU0VSVklDRSIsInZhbGlkYXRpb25SZXN1bHQiLCJ0cmlnZ2VyTmFtZSIsImRvTm90U2F2ZSIsInNhdmUiLCJlcnIiLCJyZXNvbHZlRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwibWVzc2FnZSIsInVzZXJTdHJpbmciLCJkYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsImF1dGhlbnRpY2F0aW9uU3RlcCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvQXV0aC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKTtcbmltcG9ydCB7IGlzRGVlcFN0cmljdEVxdWFsIH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBnZXRSZXF1ZXN0T2JqZWN0LCByZXNvbHZlRXJyb3IgfSBmcm9tICcuL3RyaWdnZXJzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IExSVUNhY2hlIGFzIExSVSB9IGZyb20gJ2xydS1jYWNoZSc7XG5pbXBvcnQgUmVzdFF1ZXJ5IGZyb20gJy4vUmVzdFF1ZXJ5JztcbmltcG9ydCBSZXN0V3JpdGUgZnJvbSAnLi9SZXN0V3JpdGUnO1xuXG4vLyBBbiBBdXRoIG9iamVjdCB0ZWxscyB5b3Ugd2hvIGlzIHJlcXVlc3Rpbmcgc29tZXRoaW5nIGFuZCB3aGV0aGVyXG4vLyB0aGUgbWFzdGVyIGtleSB3YXMgdXNlZC5cbi8vIHVzZXJPYmplY3QgaXMgYSBQYXJzZS5Vc2VyIGFuZCBjYW4gYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHVzZXIuXG5mdW5jdGlvbiBBdXRoKHtcbiAgY29uZmlnLFxuICBjYWNoZUNvbnRyb2xsZXIgPSB1bmRlZmluZWQsXG4gIGlzTWFzdGVyID0gZmFsc2UsXG4gIGlzTWFpbnRlbmFuY2UgPSBmYWxzZSxcbiAgaXNSZWFkT25seSA9IGZhbHNlLFxuICBpc0xlZ2FjeVNlc3Npb24gPSBmYWxzZSxcbiAgdXNlcixcbiAgaW5zdGFsbGF0aW9uSWQsXG59KSB7XG4gIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB0aGlzLmNhY2hlQ29udHJvbGxlciA9IGNhY2hlQ29udHJvbGxlciB8fCAoY29uZmlnICYmIGNvbmZpZy5jYWNoZUNvbnRyb2xsZXIpO1xuICB0aGlzLmluc3RhbGxhdGlvbklkID0gaW5zdGFsbGF0aW9uSWQ7XG4gIHRoaXMuaXNNYXN0ZXIgPSBpc01hc3RlcjtcbiAgdGhpcy5pc01haW50ZW5hbmNlID0gaXNNYWludGVuYW5jZTtcbiAgdGhpcy51c2VyID0gdXNlcjtcbiAgdGhpcy5pc1JlYWRPbmx5ID0gaXNSZWFkT25seTtcbiAgdGhpcy5pc0xlZ2FjeVNlc3Npb24gPSBpc0xlZ2FjeVNlc3Npb247XG5cbiAgLy8gQXNzdW1pbmcgYSB1c2VycyByb2xlcyB3b24ndCBjaGFuZ2UgZHVyaW5nIGEgc2luZ2xlIHJlcXVlc3QsIHdlJ2xsXG4gIC8vIG9ubHkgbG9hZCB0aGVtIG9uY2UuXG4gIHRoaXMudXNlclJvbGVzID0gW107XG4gIHRoaXMuZmV0Y2hlZFJvbGVzID0gZmFsc2U7XG4gIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xufVxuXG4vLyBXaGV0aGVyIHRoaXMgYXV0aCBjb3VsZCBwb3NzaWJseSBtb2RpZnkgdGhlIGdpdmVuIHVzZXIgaWQuXG4vLyBJdCBzdGlsbCBjb3VsZCBiZSBmb3JiaWRkZW4gdmlhIEFDTHMgZXZlbiBpZiB0aGlzIHJldHVybnMgdHJ1ZS5cbkF1dGgucHJvdG90eXBlLmlzVW5hdXRoZW50aWNhdGVkID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5pc01hc3Rlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy5pc01haW50ZW5hbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLnVzZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYXN0ZXItbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG1hc3Rlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFpbnRlbmFuY2UtbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG1haW50ZW5hbmNlKGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFpbnRlbmFuY2U6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1hc3Rlci1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gcmVhZE9ubHkoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IHRydWUsIGlzUmVhZE9ubHk6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG5vYm9keS1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbm9ib2R5KGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiBmYWxzZSB9KTtcbn1cblxuY29uc3QgdGhyb3R0bGUgPSBuZXcgTFJVKHtcbiAgbWF4OiAxMDAwMCxcbiAgdHRsOiA1MDAsXG59KTtcbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgc2Vzc2lvbiBzaG91bGQgYmUgdXBkYXRlZCBiYXNlZCBvbiBsYXN0IHVwZGF0ZSB0aW1lICYgc2Vzc2lvbiBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkoY29uZmlnLCBzZXNzaW9uKSB7XG4gIGNvbnN0IHJlc2V0QWZ0ZXIgPSBjb25maWcuc2Vzc2lvbkxlbmd0aCAvIDI7XG4gIGNvbnN0IGxhc3RVcGRhdGVkID0gbmV3IERhdGUoc2Vzc2lvbj8udXBkYXRlZEF0KTtcbiAgY29uc3Qgc2tpcFJhbmdlID0gbmV3IERhdGUoKTtcbiAgc2tpcFJhbmdlLnNldFRpbWUoc2tpcFJhbmdlLmdldFRpbWUoKSAtIHJlc2V0QWZ0ZXIgKiAxMDAwKTtcbiAgcmV0dXJuIGxhc3RVcGRhdGVkIDw9IHNraXBSYW5nZTtcbn1cblxuY29uc3QgcmVuZXdTZXNzaW9uSWZOZWVkZWQgPSBhc3luYyAoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KSA9PiB7XG4gIGlmICghY29uZmlnPy5leHRlbmRTZXNzaW9uT25Vc2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHRocm90dGxlLmdldChzZXNzaW9uVG9rZW4pKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm90dGxlLnNldChzZXNzaW9uVG9rZW4sIHRydWUpO1xuICB0cnkge1xuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1Nlc3Npb24nLFxuICAgICAgICByZXN0V2hlcmU6IHsgc2Vzc2lvblRva2VuIH0sXG4gICAgICAgIHJlc3RPcHRpb25zOiB7IGxpbWl0OiAxIH0sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHsgcmVzdWx0cyB9ID0gYXdhaXQgcXVlcnkuZXhlY3V0ZSgpO1xuICAgICAgc2Vzc2lvbiA9IHJlc3VsdHNbMF07XG4gICAgfVxuXG4gICAgaWYgKCFzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5KGNvbmZpZywgc2Vzc2lvbikgfHwgIXNlc3Npb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXhwaXJlc0F0ID0gY29uZmlnLmdlbmVyYXRlU2Vzc2lvbkV4cGlyZXNBdCgpO1xuICAgIGF3YWl0IG5ldyBSZXN0V3JpdGUoXG4gICAgICBjb25maWcsXG4gICAgICBtYXN0ZXIoY29uZmlnKSxcbiAgICAgICdfU2Vzc2lvbicsXG4gICAgICB7IG9iamVjdElkOiBzZXNzaW9uLm9iamVjdElkIH0sXG4gICAgICB7IGV4cGlyZXNBdDogUGFyc2UuX2VuY29kZShleHBpcmVzQXQpIH1cbiAgICApLmV4ZWN1dGUoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlPy5jb2RlICE9PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0NvdWxkIG5vdCB1cGRhdGUgc2Vzc2lvbiBleHBpcnk6ICcsIGUpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBBdXRoIG9iamVjdFxuY29uc3QgZ2V0QXV0aEZvclNlc3Npb25Ub2tlbiA9IGFzeW5jIGZ1bmN0aW9uICh7XG4gIGNvbmZpZyxcbiAgY2FjaGVDb250cm9sbGVyLFxuICBzZXNzaW9uVG9rZW4sXG4gIGluc3RhbGxhdGlvbklkLFxufSkge1xuICBjYWNoZUNvbnRyb2xsZXIgPSBjYWNoZUNvbnRyb2xsZXIgfHwgKGNvbmZpZyAmJiBjb25maWcuY2FjaGVDb250cm9sbGVyKTtcbiAgaWYgKGNhY2hlQ29udHJvbGxlcikge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IGNhY2hlQ29udHJvbGxlci51c2VyLmdldChzZXNzaW9uVG9rZW4pO1xuICAgIGlmIChjYWNoZWQpIHtcbiAgICAgIGNvbnN0IHsgZXhwaXJlc0F0OiBjYWNoZWRFeHBpcmVzQXQsIC4uLnVzZXJKU09OIH0gPSBjYWNoZWQ7XG4gICAgICBpZiAoY2FjaGVkRXhwaXJlc0F0ICYmIG5ldyBEYXRlKGNhY2hlZEV4cGlyZXNBdCkgPCBuZXcgRGF0ZSgpKSB7XG4gICAgICAgIGNhY2hlQ29udHJvbGxlci51c2VyLmRlbChzZXNzaW9uVG9rZW4pO1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnU2Vzc2lvbiB0b2tlbiBpcyBleHBpcmVkLicpO1xuICAgICAgfVxuICAgICAgY29uc3QgY2FjaGVkVXNlciA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTih1c2VySlNPTik7XG4gICAgICByZW5ld1Nlc3Npb25JZk5lZWRlZCh7IGNvbmZpZywgc2Vzc2lvblRva2VuIH0pO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgbmV3IEF1dGgoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgICAgICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgICAgICAgIGluc3RhbGxhdGlvbklkLFxuICAgICAgICAgIHVzZXI6IGNhY2hlZFVzZXIsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxldCByZXN1bHRzO1xuICBpZiAoY29uZmlnKSB7XG4gICAgY29uc3QgcmVzdE9wdGlvbnMgPSB7XG4gICAgICBsaW1pdDogMSxcbiAgICAgIGluY2x1ZGU6ICd1c2VyJyxcbiAgICB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgIGNvbmZpZyxcbiAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfU2Vzc2lvbicsXG4gICAgICByZXN0V2hlcmU6IHsgc2Vzc2lvblRva2VuIH0sXG4gICAgICByZXN0T3B0aW9ucyxcbiAgICB9KTtcbiAgICByZXN1bHRzID0gKGF3YWl0IHF1ZXJ5LmV4ZWN1dGUoKSkucmVzdWx0cztcbiAgfSBlbHNlIHtcbiAgICByZXN1bHRzID0gKFxuICAgICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlNlc3Npb24pXG4gICAgICAgIC5saW1pdCgxKVxuICAgICAgICAuaW5jbHVkZSgndXNlcicpXG4gICAgICAgIC5lcXVhbFRvKCdzZXNzaW9uVG9rZW4nLCBzZXNzaW9uVG9rZW4pXG4gICAgICAgIC5maW5kKHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pXG4gICAgKS5tYXAob2JqID0+IG9iai50b0pTT04oKSk7XG4gIH1cblxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDEgfHwgIXJlc3VsdHNbMF1bJ3VzZXInXSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdJbnZhbGlkIHNlc3Npb24gdG9rZW4nKTtcbiAgfVxuICBjb25zdCBzZXNzaW9uID0gcmVzdWx0c1swXTtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKSxcbiAgICBleHBpcmVzQXQgPSBzZXNzaW9uLmV4cGlyZXNBdCA/IG5ldyBEYXRlKHNlc3Npb24uZXhwaXJlc0F0LmlzbykgOiB1bmRlZmluZWQ7XG4gIGlmIChleHBpcmVzQXQgPCBub3cpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnU2Vzc2lvbiB0b2tlbiBpcyBleHBpcmVkLicpO1xuICB9XG4gIGNvbnN0IG9iaiA9IHNlc3Npb24udXNlcjtcblxuICBpZiAodHlwZW9mIG9ialsnb2JqZWN0SWQnXSA9PT0gJ3N0cmluZycgJiYgb2JqWydvYmplY3RJZCddLnN0YXJ0c1dpdGgoJ3JvbGU6JykpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnSW52YWxpZCBvYmplY3QgSUQuJyk7XG4gIH1cblxuICBkZWxldGUgb2JqLnBhc3N3b3JkO1xuICBvYmpbJ2NsYXNzTmFtZSddID0gJ19Vc2VyJztcbiAgb2JqWydzZXNzaW9uVG9rZW4nXSA9IHNlc3Npb25Ub2tlbjtcbiAgaWYgKGNhY2hlQ29udHJvbGxlcikge1xuICAgIGNhY2hlQ29udHJvbGxlci51c2VyLnB1dChzZXNzaW9uVG9rZW4sIHsgLi4ub2JqLCBleHBpcmVzQXQ6IGV4cGlyZXNBdD8udG9JU09TdHJpbmcoKSB9KTtcbiAgfVxuICByZW5ld1Nlc3Npb25JZk5lZWRlZCh7IGNvbmZpZywgc2Vzc2lvbiwgc2Vzc2lvblRva2VuIH0pO1xuICBjb25zdCB1c2VyT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKG9iaik7XG4gIHJldHVybiBuZXcgQXV0aCh7XG4gICAgY29uZmlnLFxuICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgdXNlcjogdXNlck9iamVjdCxcbiAgfSk7XG59O1xuXG52YXIgZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbiA9IGFzeW5jIGZ1bmN0aW9uICh7IGNvbmZpZywgc2Vzc2lvblRva2VuLCBpbnN0YWxsYXRpb25JZCB9KSB7XG4gIHZhciByZXN0T3B0aW9ucyA9IHtcbiAgICBsaW1pdDogMSxcbiAgfTtcbiAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgdmFyIHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgIGNvbmZpZyxcbiAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICBhdXRoOiBtYXN0ZXIoY29uZmlnKSxcbiAgICBjbGFzc05hbWU6ICdfVXNlcicsXG4gICAgcmVzdFdoZXJlOiB7IF9zZXNzaW9uX3Rva2VuOiBzZXNzaW9uVG9rZW4gfSxcbiAgICByZXN0T3B0aW9ucyxcbiAgfSk7XG4gIHJldHVybiBxdWVyeS5leGVjdXRlKCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgdmFyIHJlc3VsdHMgPSByZXNwb25zZS5yZXN1bHRzO1xuICAgIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ2ludmFsaWQgbGVnYWN5IHNlc3Npb24gdG9rZW4nKTtcbiAgICB9XG4gICAgY29uc3Qgb2JqID0gcmVzdWx0c1swXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqWydvYmplY3RJZCddID09PSAnc3RyaW5nJyAmJiBvYmpbJ29iamVjdElkJ10uc3RhcnRzV2l0aCgncm9sZTonKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUiwgJ0ludmFsaWQgb2JqZWN0IElELicpO1xuICAgIH1cblxuICAgIG9iai5jbGFzc05hbWUgPSAnX1VzZXInO1xuICAgIGNvbnN0IHVzZXJPYmplY3QgPSBQYXJzZS5PYmplY3QuZnJvbUpTT04ob2JqKTtcbiAgICByZXR1cm4gbmV3IEF1dGgoe1xuICAgICAgY29uZmlnLFxuICAgICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgICAgaXNMZWdhY3lTZXNzaW9uOiB0cnVlLFxuICAgICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgICB1c2VyOiB1c2VyT2JqZWN0LFxuICAgIH0pO1xuICB9KTtcbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2Ygcm9sZSBuYW1lc1xuQXV0aC5wcm90b3R5cGUuZ2V0VXNlclJvbGVzID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5pc01hc3RlciB8fCB0aGlzLmlzTWFpbnRlbmFuY2UgfHwgIXRoaXMudXNlcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICB9XG4gIGlmICh0aGlzLmZldGNoZWRSb2xlcykge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy51c2VyUm9sZXMpO1xuICB9XG4gIGlmICh0aGlzLnJvbGVQcm9taXNlKSB7XG4gICAgcmV0dXJuIHRoaXMucm9sZVByb21pc2U7XG4gIH1cbiAgdGhpcy5yb2xlUHJvbWlzZSA9IHRoaXMuX2xvYWRSb2xlcygpO1xuICByZXR1cm4gdGhpcy5yb2xlUHJvbWlzZTtcbn07XG5cbkF1dGgucHJvdG90eXBlLmdldFJvbGVzRm9yVXNlciA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgLy9TdGFjayBhbGwgUGFyc2UuUm9sZVxuICBjb25zdCByZXN1bHRzID0gW107XG4gIGlmICh0aGlzLmNvbmZpZykge1xuICAgIGNvbnN0IHJlc3RXaGVyZSA9IHtcbiAgICAgIHVzZXJzOiB7XG4gICAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgICBjbGFzc05hbWU6ICdfVXNlcicsXG4gICAgICAgIG9iamVjdElkOiB0aGlzLnVzZXIuaWQsXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGF1dGg6IG1hc3Rlcih0aGlzLmNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfUm9sZScsXG4gICAgICByZXN0V2hlcmUsXG4gICAgfSk7XG4gICAgYXdhaXQgcXVlcnkuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdCkpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5Sb2xlKVxuICAgICAgLmVxdWFsVG8oJ3VzZXJzJywgdGhpcy51c2VyKVxuICAgICAgLmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQudG9KU09OKCkpLCB7IHVzZU1hc3RlcktleTogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIHJvbGUgdHJlZSBhbmQgY29tcGlsZXMgYSB1c2VyJ3Mgcm9sZXNcbkF1dGgucHJvdG90eXBlLl9sb2FkUm9sZXMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmNhY2hlQ29udHJvbGxlcikge1xuICAgIGNvbnN0IGNhY2hlZFJvbGVzID0gYXdhaXQgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5nZXQodGhpcy51c2VyLmlkKTtcbiAgICBpZiAoY2FjaGVkUm9sZXMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5mZXRjaGVkUm9sZXMgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyUm9sZXMgPSBjYWNoZWRSb2xlcztcbiAgICAgIHJldHVybiBjYWNoZWRSb2xlcztcbiAgICB9XG4gIH1cblxuICAvLyBGaXJzdCBnZXQgdGhlIHJvbGUgaWRzIHRoaXMgdXNlciBpcyBkaXJlY3RseSBhIG1lbWJlciBvZlxuICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5nZXRSb2xlc0ZvclVzZXIoKTtcbiAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xuICAgIHRoaXMudXNlclJvbGVzID0gW107XG4gICAgdGhpcy5mZXRjaGVkUm9sZXMgPSB0cnVlO1xuICAgIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xuXG4gICAgdGhpcy5jYWNoZVJvbGVzKCk7XG4gICAgcmV0dXJuIHRoaXMudXNlclJvbGVzO1xuICB9XG5cbiAgY29uc3Qgcm9sZXNNYXAgPSByZXN1bHRzLnJlZHVjZShcbiAgICAobSwgcikgPT4ge1xuICAgICAgbS5uYW1lcy5wdXNoKHIubmFtZSk7XG4gICAgICBtLmlkcy5wdXNoKHIub2JqZWN0SWQpO1xuICAgICAgcmV0dXJuIG07XG4gICAgfSxcbiAgICB7IGlkczogW10sIG5hbWVzOiBbXSB9XG4gICk7XG5cbiAgLy8gcnVuIHRoZSByZWN1cnNpdmUgZmluZGluZ1xuICBjb25zdCByb2xlTmFtZXMgPSBhd2FpdCB0aGlzLl9nZXRBbGxSb2xlc05hbWVzRm9yUm9sZUlkcyhyb2xlc01hcC5pZHMsIHJvbGVzTWFwLm5hbWVzKTtcbiAgdGhpcy51c2VyUm9sZXMgPSByb2xlTmFtZXMubWFwKHIgPT4ge1xuICAgIHJldHVybiAncm9sZTonICsgcjtcbiAgfSk7XG4gIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG4gIHRoaXMuY2FjaGVSb2xlcygpO1xuICByZXR1cm4gdGhpcy51c2VyUm9sZXM7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5jYWNoZVJvbGVzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUucHV0KHRoaXMudXNlci5pZCwgQXJyYXkoLi4udGhpcy51c2VyUm9sZXMpKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5jbGVhclJvbGVDYWNoZSA9IGZ1bmN0aW9uIChzZXNzaW9uVG9rZW4pIHtcbiAgaWYgKCF0aGlzLmNhY2hlQ29udHJvbGxlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLmRlbCh0aGlzLnVzZXIuaWQpO1xuICB0aGlzLmNhY2hlQ29udHJvbGxlci51c2VyLmRlbChzZXNzaW9uVG9rZW4pO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkF1dGgucHJvdG90eXBlLmdldFJvbGVzQnlJZHMgPSBhc3luYyBmdW5jdGlvbiAoaW5zKSB7XG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgLy8gQnVpbGQgYW4gT1IgcXVlcnkgYWNyb3NzIGFsbCBwYXJlbnRSb2xlc1xuICBpZiAoIXRoaXMuY29uZmlnKSB7XG4gICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlJvbGUpXG4gICAgICAuY29udGFpbmVkSW4oXG4gICAgICAgICdyb2xlcycsXG4gICAgICAgIGlucy5tYXAoaWQgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvbGUgPSBuZXcgUGFyc2UuT2JqZWN0KFBhcnNlLlJvbGUpO1xuICAgICAgICAgIHJvbGUuaWQgPSBpZDtcbiAgICAgICAgICByZXR1cm4gcm9sZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0LnRvSlNPTigpKSwgeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgcm9sZXMgPSBpbnMubWFwKGlkID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgICBjbGFzc05hbWU6ICdfUm9sZScsXG4gICAgICAgIG9iamVjdElkOiBpZCxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgY29uc3QgcmVzdFdoZXJlID0geyByb2xlczogeyAkaW46IHJvbGVzIH0gfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5maW5kLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgYXV0aDogbWFzdGVyKHRoaXMuY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgIHJlc3RXaGVyZSxcbiAgICB9KTtcbiAgICBhd2FpdCBxdWVyeS5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0KSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBHaXZlbiBhIGxpc3Qgb2Ygcm9sZUlkcywgZmluZCBhbGwgdGhlIHBhcmVudCByb2xlcywgcmV0dXJucyBhIHByb21pc2Ugd2l0aCBhbGwgbmFtZXNcbkF1dGgucHJvdG90eXBlLl9nZXRBbGxSb2xlc05hbWVzRm9yUm9sZUlkcyA9IGZ1bmN0aW9uIChcbiAgcm9sZUlEcyxcbiAgbmFtZXMgPSBbXSxcbiAgcXVlcmllZFJvbGVzID0gbmV3IFNldCgpXG4pIHtcbiAgY29uc3QgaW5zID0gcm9sZUlEcy5maWx0ZXIocm9sZUlEID0+IHtcbiAgICBpZiAocXVlcmllZFJvbGVzLmhhcyhyb2xlSUQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHF1ZXJpZWRSb2xlcy5hZGQocm9sZUlEKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgLy8gYWxsIHJvbGVzIGFyZSBhY2NvdW50ZWQgZm9yLCByZXR1cm4gdGhlIG5hbWVzXG4gIGlmIChpbnMubGVuZ3RoID09IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZ2V0Um9sZXNCeUlkcyhpbnMpXG4gICAgLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAvLyBOb3RoaW5nIGZvdW5kXG4gICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmFtZXMpO1xuICAgICAgfVxuICAgICAgLy8gTWFwIHRoZSByZXN1bHRzIHdpdGggYWxsIElkcyBhbmQgbmFtZXNcbiAgICAgIGNvbnN0IHJlc3VsdE1hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgICAgICAobWVtbywgcm9sZSkgPT4ge1xuICAgICAgICAgIG1lbW8ubmFtZXMucHVzaChyb2xlLm5hbWUpO1xuICAgICAgICAgIG1lbW8uaWRzLnB1c2gocm9sZS5vYmplY3RJZCk7XG4gICAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICAgIH0sXG4gICAgICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgICAgICk7XG4gICAgICAvLyBzdG9yZSB0aGUgbmV3IGZvdW5kIG5hbWVzXG4gICAgICBuYW1lcyA9IG5hbWVzLmNvbmNhdChyZXN1bHRNYXAubmFtZXMpO1xuICAgICAgLy8gZmluZCB0aGUgbmV4dCBvbmVzLCBjaXJjdWxhciByb2xlcyB3aWxsIGJlIGN1dFxuICAgICAgcmV0dXJuIHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJlc3VsdE1hcC5pZHMsIG5hbWVzLCBxdWVyaWVkUm9sZXMpO1xuICAgIH0pXG4gICAgLnRoZW4obmFtZXMgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbLi4ubmV3IFNldChuYW1lcyldKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGZpbmRVc2Vyc1dpdGhBdXRoRGF0YSA9IGFzeW5jIChjb25maWcsIGF1dGhEYXRhLCBiZWZvcmVGaW5kLCBjdXJyZW50VXNlckF1dGhEYXRhKSA9PiB7XG4gIGNvbnN0IHByb3ZpZGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcblxuICBjb25zdCBxdWVyaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJvdmlkZXJzLm1hcChhc3luYyBwcm92aWRlciA9PiB7XG4gICAgICBjb25zdCBwcm92aWRlckF1dGhEYXRhID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuXG4gICAgICAvLyBTa2lwIHByb3ZpZGVycyBiZWluZyB1bmxpbmtlZCAobnVsbCB2YWx1ZSlcbiAgICAgIGlmIChwcm92aWRlckF1dGhEYXRhID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBTa2lwIGJlZm9yZUZpbmQgb25seSB3aGVuIGluY29taW5nIGRhdGEgaXMgY29uZmlybWVkIHVuY2hhbmdlZCBmcm9tIHN0b3JlZCBkYXRhLlxuICAgICAgLy8gVGhpcyBoYW5kbGVzIGVjaG9lZC1iYWNrIGF1dGhEYXRhIGZyb20gYWZ0ZXJGaW5kIChlLmcuIGNsaWVudCBzZW5kcyBiYWNrIHsgaWQ6ICd4JyB9XG4gICAgICAvLyBhbG9uZ3NpZGUgYSBwcm92aWRlciB1bmxpbmspLiBPbiBsb2dpbi9zaWdudXAsIGN1cnJlbnRVc2VyQXV0aERhdGEgaXMgdW5kZWZpbmVkIHNvXG4gICAgICAvLyBiZWZvcmVGaW5kIGFsd2F5cyBydW5zLCBwcmVzZXJ2aW5nIGl0IGFzIHRoZSBzZWN1cml0eSBnYXRlIGZvciBtaXNzaW5nIGNyZWRlbnRpYWxzLlxuICAgICAgY29uc3Qgc3RvcmVkUHJvdmlkZXJEYXRhID0gY3VycmVudFVzZXJBdXRoRGF0YT8uW3Byb3ZpZGVyXTtcbiAgICAgIGNvbnN0IGluY29taW5nS2V5cyA9IE9iamVjdC5rZXlzKHByb3ZpZGVyQXV0aERhdGEgfHwge30pO1xuICAgICAgY29uc3QgaXNVbmNoYW5nZWQgPSBzdG9yZWRQcm92aWRlckRhdGEgJiYgaW5jb21pbmdLZXlzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgIWluY29taW5nS2V5cy5zb21lKGtleSA9PiAhaXNEZWVwU3RyaWN0RXF1YWwocHJvdmlkZXJBdXRoRGF0YVtrZXldLCBzdG9yZWRQcm92aWRlckRhdGFba2V5XSkpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0b3JDb25maWcgPSBjb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgICAgIC8vIFNraXAgZGF0YWJhc2UgcXVlcnkgZm9yIHVuY29uZmlndXJlZCBwcm92aWRlcnMgdG8gYXZvaWQgdW5pbmRleGVkIGNvbGxlY3Rpb24gc2NhbnM7XG4gICAgICAvLyB0aGUgcHJvdmlkZXIgd2lsbCBiZSByZWplY3RlZCBsYXRlciBpbiBoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24gd2l0aCBVTlNVUFBPUlRFRF9TRVJWSUNFXG4gICAgICBpZiAoIXZhbGlkYXRvckNvbmZpZz8udmFsaWRhdG9yKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRhcHRlciA9IHZhbGlkYXRvckNvbmZpZy5hZGFwdGVyO1xuICAgICAgaWYgKGJlZm9yZUZpbmQgJiYgdHlwZW9mIGFkYXB0ZXI/LmJlZm9yZUZpbmQgPT09ICdmdW5jdGlvbicgJiYgIWlzVW5jaGFuZ2VkKSB7XG4gICAgICAgIGF3YWl0IGFkYXB0ZXIuYmVmb3JlRmluZChwcm92aWRlckF1dGhEYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm92aWRlckF1dGhEYXRhPy5pZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBwcm92aWRlckF1dGhEYXRhLmlkICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9WQUxVRSwgYEludmFsaWQgYXV0aERhdGEgaWQgZm9yIHByb3ZpZGVyICcke3Byb3ZpZGVyfScuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IFtgYXV0aERhdGEuJHtwcm92aWRlcn0uaWRgXTogcHJvdmlkZXJBdXRoRGF0YS5pZCB9O1xuICAgIH0pXG4gICk7XG5cbiAgLy8gRmlsdGVyIG91dCBudWxsIHF1ZXJpZXNcbiAgY29uc3QgdmFsaWRRdWVyaWVzID0gcXVlcmllcy5maWx0ZXIocXVlcnkgPT4gcXVlcnkgIT09IG51bGwpO1xuXG4gIGlmICghdmFsaWRRdWVyaWVzLmxlbmd0aCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIFBlcmZvcm0gZGF0YWJhc2UgcXVlcnlcbiAgcmV0dXJuIGNvbmZpZy5kYXRhYmFzZS5maW5kKCdfVXNlcicsIHsgJG9yOiB2YWxpZFF1ZXJpZXMgfSwgeyBsaW1pdDogMiB9KTtcbn07XG5cbmNvbnN0IGhhc011dGF0ZWRBdXRoRGF0YSA9IChhdXRoRGF0YSwgdXNlckF1dGhEYXRhKSA9PiB7XG4gIGlmICghdXNlckF1dGhEYXRhKSB7IHJldHVybiB7IGhhc011dGF0ZWRBdXRoRGF0YTogdHJ1ZSwgbXV0YXRlZEF1dGhEYXRhOiBhdXRoRGF0YSB9OyB9XG4gIGNvbnN0IG11dGF0ZWRBdXRoRGF0YSA9IHt9O1xuICBPYmplY3Qua2V5cyhhdXRoRGF0YSkuZm9yRWFjaChwcm92aWRlciA9PiB7XG4gICAgLy8gQW5vbnltb3VzIHByb3ZpZGVyIGlzIG5vdCBoYW5kbGVkIHRoaXMgd2F5XG4gICAgaWYgKHByb3ZpZGVyID09PSAnYW5vbnltb3VzJykgeyByZXR1cm47IH1cbiAgICBjb25zdCBwcm92aWRlckRhdGEgPSBhdXRoRGF0YVtwcm92aWRlcl07XG4gICAgY29uc3QgdXNlclByb3ZpZGVyQXV0aERhdGEgPSB1c2VyQXV0aERhdGFbcHJvdmlkZXJdO1xuXG4gICAgLy8gSWYgdW5saW5raW5nIChzZXR0aW5nIHRvIG51bGwpLCBjb25zaWRlciBpdCBtdXRhdGVkXG4gICAgaWYgKHByb3ZpZGVyRGF0YSA9PT0gbnVsbCkge1xuICAgICAgbXV0YXRlZEF1dGhEYXRhW3Byb3ZpZGVyXSA9IHByb3ZpZGVyRGF0YTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBwcm92aWRlciBkb2Vzbid0IGV4aXN0IGluIHN0b3JlZCBkYXRhLCBpdCdzIG5ld1xuICAgIGlmICghdXNlclByb3ZpZGVyQXV0aERhdGEpIHtcbiAgICAgIG11dGF0ZWRBdXRoRGF0YVtwcm92aWRlcl0gPSBwcm92aWRlckRhdGE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgaW5jb21pbmcgZGF0YSByZXByZXNlbnRzIGFjdHVhbCBjaGFuZ2VzIHZzIGp1c3QgZWNob2luZyBiYWNrXG4gICAgLy8gd2hhdCBhZnRlckZpbmQgcmV0dXJuZWQuIElmIGluY29taW5nIGRhdGEgaXMgYSBzdWJzZXQgb2Ygc3RvcmVkIGRhdGFcbiAgICAvLyAoYWxsIGluY29taW5nIGZpZWxkcyBtYXRjaCBzdG9yZWQgdmFsdWVzKSwgaXQncyBub3QgbXV0YXRlZC5cbiAgICAvLyBJZiBpbmNvbWluZyBkYXRhIGhhcyBkaWZmZXJlbnQgdmFsdWVzIG9yIGZpZWxkcyBub3QgaW4gc3RvcmVkIGRhdGEsIGl0J3MgbXV0YXRlZC5cbiAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgYWZ0ZXJGaW5kIHN0cmlwcyBzZW5zaXRpdmUgZmllbGRzIGxpa2UgJ2NvZGUnOlxuICAgIC8vIC0gSW5jb21pbmc6IHsgaWQ6ICd4JyB9LCBTdG9yZWQ6IHsgaWQ6ICd4JywgY29kZTogJ3NlY3JldCcgfSAtPiBOT1QgbXV0YXRlZCAoc3Vic2V0KVxuICAgIC8vIC0gSW5jb21pbmc6IHsgaWQ6ICd4JywgdG9rZW46ICduZXcnIH0sIFN0b3JlZDogeyBpZDogJ3gnLCB0b2tlbjogJ29sZCcgfSAtPiBNVVRBVEVEXG4gICAgY29uc3QgaW5jb21pbmdLZXlzID0gT2JqZWN0LmtleXMocHJvdmlkZXJEYXRhIHx8IHt9KTtcbiAgICBjb25zdCBoYXNDaGFuZ2VzID0gaW5jb21pbmdLZXlzLnNvbWUoa2V5ID0+IHtcbiAgICAgIHJldHVybiAhaXNEZWVwU3RyaWN0RXF1YWwocHJvdmlkZXJEYXRhW2tleV0sIHVzZXJQcm92aWRlckF1dGhEYXRhW2tleV0pO1xuICAgIH0pO1xuXG4gICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgIG11dGF0ZWRBdXRoRGF0YVtwcm92aWRlcl0gPSBwcm92aWRlckRhdGE7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFzTXV0YXRlZEF1dGhEYXRhID0gT2JqZWN0LmtleXMobXV0YXRlZEF1dGhEYXRhKS5sZW5ndGggIT09IDA7XG4gIHJldHVybiB7IGhhc011dGF0ZWRBdXRoRGF0YSwgbXV0YXRlZEF1dGhEYXRhIH07XG59O1xuXG5jb25zdCBjaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luID0gKFxuICByZXEgPSB7fSxcbiAgYXV0aERhdGEgPSB7fSxcbiAgdXNlckF1dGhEYXRhID0ge30sXG4gIGNvbmZpZ1xuKSA9PiB7XG4gIGNvbnN0IHNhdmVkVXNlclByb3ZpZGVycyA9IE9iamVjdC5rZXlzKHVzZXJBdXRoRGF0YSlcbiAgICAubWFwKHByb3ZpZGVyID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvciA9IGNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgaWYgKCF2YWxpZGF0b3IgfHwgIXZhbGlkYXRvci5hZGFwdGVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbmFtZTogcHJvdmlkZXIsIGFkYXB0ZXI6IHZhbGlkYXRvci5hZGFwdGVyIH07XG4gICAgfSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuXG4gIGNvbnN0IGhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlciA9IHNhdmVkVXNlclByb3ZpZGVycy5zb21lKFxuICAgIHByb3ZpZGVyID0+XG4gICAgICBwcm92aWRlciAmJiBwcm92aWRlci5hZGFwdGVyICYmIHByb3ZpZGVyLmFkYXB0ZXIucG9saWN5ID09PSAnc29sbycgJiYgYXV0aERhdGFbcHJvdmlkZXIubmFtZV1cbiAgKTtcblxuICAvLyBTb2xvIHByb3ZpZGVycyBjYW4gYmUgY29uc2lkZXJlZCBhcyBzYWZlLCBzbyB3ZSBkbyBub3QgaGF2ZSB0byBjaGVjayBpZiB0aGUgdXNlciBuZWVkc1xuICAvLyB0byBwcm92aWRlIGFuIGFkZGl0aW9uYWwgcHJvdmlkZXIgdG8gbG9naW4uIEFuIGF1dGggYWRhcHRlciB3aXRoIFwic29sb1wiIChsaWtlIHdlYmF1dGhuKSBtZWFuc1xuICAvLyBubyBcImFkZGl0aW9uYWxcIiBhdXRoIG5lZWRzIHRvIGJlIHByb3ZpZGVkIHRvIGxvZ2luIChsaWtlIE9UUCwgTUZBKVxuICBpZiAoaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZCA9IFtdO1xuICBjb25zdCBoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIgPSBzYXZlZFVzZXJQcm92aWRlcnMuc29tZShwcm92aWRlciA9PiB7XG4gICAgbGV0IHBvbGljeSA9IHByb3ZpZGVyLmFkYXB0ZXIucG9saWN5O1xuICAgIGlmICh0eXBlb2YgcG9saWN5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCByZXF1ZXN0T2JqZWN0ID0ge1xuICAgICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgICAgdXNlcjogcmVxLmF1dGgudXNlcixcbiAgICAgICAgbWFzdGVyOiByZXEuYXV0aC5pc01hc3RlcixcbiAgICAgIH07XG4gICAgICBwb2xpY3kgPSBwb2xpY3kuY2FsbChwcm92aWRlci5hZGFwdGVyLCByZXF1ZXN0T2JqZWN0LCB1c2VyQXV0aERhdGFbcHJvdmlkZXIubmFtZV0pO1xuICAgIH1cbiAgICBpZiAocG9saWN5ID09PSAnYWRkaXRpb25hbCcpIHtcbiAgICAgIGlmIChhdXRoRGF0YVtwcm92aWRlci5uYW1lXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFB1c2ggbWlzc2luZyBwcm92aWRlciBmb3IgZXJyb3IgbWVzc2FnZVxuICAgICAgICBhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLnB1c2gocHJvdmlkZXIubmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgaWYgKGhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciB8fCAhYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5sZW5ndGgpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgUGFyc2UuRXJyb3IuT1RIRVJfQ0FVU0UsXG4gICAgYE1pc3NpbmcgYWRkaXRpb25hbCBhdXRoRGF0YSAke2FkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQuam9pbignLCcpfWBcbiAgKTtcbn07XG5cbi8vIFZhbGlkYXRlIGVhY2ggYXV0aERhdGEgc3RlcC1ieS1zdGVwIGFuZCByZXR1cm4gdGhlIHByb3ZpZGVyIHJlc3BvbnNlc1xuY29uc3QgaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uID0gYXN5bmMgKGF1dGhEYXRhLCByZXEsIGZvdW5kVXNlciwgeyBpc0xvZ2luID0gdHJ1ZSB9ID0ge30pID0+IHtcbiAgbGV0IHVzZXI7XG4gIGlmIChmb3VuZFVzZXIpIHtcbiAgICB1c2VyID0gUGFyc2UuVXNlci5mcm9tSlNPTih7IGNsYXNzTmFtZTogJ19Vc2VyJywgLi4uZm91bmRVc2VyIH0pO1xuICAgIC8vIEZpbmQgdXNlciBieSBzZXNzaW9uIGFuZCBjdXJyZW50IG9iamVjdElkOyBvbmx5IHBhc3MgdXNlciBpZiBpdCdzIHRoZSBjdXJyZW50IHVzZXIgb3IgbWFzdGVyIGtleSBpcyBwcm92aWRlZFxuICB9IGVsc2UgaWYgKFxuICAgIChyZXEuYXV0aCAmJlxuICAgICAgcmVxLmF1dGgudXNlciAmJlxuICAgICAgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHJlcS5nZXRVc2VySWQoKSA9PT0gcmVxLmF1dGgudXNlci5pZCkgfHxcbiAgICAocmVxLmF1dGggJiYgcmVxLmF1dGguaXNNYXN0ZXIgJiYgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiYgcmVxLmdldFVzZXJJZCgpKVxuICApIHtcbiAgICB1c2VyID0gbmV3IFBhcnNlLlVzZXIoKTtcbiAgICB1c2VyLmlkID0gcmVxLmF1dGguaXNNYXN0ZXIgPyByZXEuZ2V0VXNlcklkKCkgOiByZXEuYXV0aC51c2VyLmlkO1xuICAgIGF3YWl0IHVzZXIuZmV0Y2goeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cblxuICBjb25zdCB7IHVwZGF0ZWRPYmplY3QgfSA9IHJlcS5idWlsZFBhcnNlT2JqZWN0cygpO1xuICBjb25zdCByZXF1ZXN0T2JqZWN0ID0gZ2V0UmVxdWVzdE9iamVjdCh1bmRlZmluZWQsIHJlcS5hdXRoLCB1cGRhdGVkT2JqZWN0LCB1c2VyLCByZXEuY29uZmlnKTtcbiAgLy8gUGVyZm9ybSB2YWxpZGF0aW9uIGFzIHN0ZXAtYnktc3RlcCBwaXBlbGluZSBmb3IgYmV0dGVyIGVycm9yIGNvbnNpc3RlbmN5XG4gIC8vIGFuZCBhbHNvIHRvIGF2b2lkIHRvIHRyaWdnZXIgYSBwcm92aWRlciAobGlrZSBPVFAgU01TKSBpZiBhbm90aGVyIG9uZSBmYWlsc1xuICBjb25zdCBhY2MgPSB7IGF1dGhEYXRhOiB7fSwgYXV0aERhdGFSZXNwb25zZToge30gfTtcbiAgY29uc3QgYXV0aEtleXMgPSBPYmplY3Qua2V5cyhhdXRoRGF0YSkuc29ydCgpO1xuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIGF1dGhLZXlzKSB7XG4gICAgbGV0IG1ldGhvZCA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXJdID09PSBudWxsKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdmFsaWRhdG9yIH0gPSByZXEuY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcikgfHwge307XG4gICAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSAocmVxLmNvbmZpZy5hdXRoIHx8IHt9KVtwcm92aWRlcl0gfHwge307XG4gICAgICBpZiAoIXZhbGlkYXRvciB8fCBhdXRoUHJvdmlkZXIuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLlVOU1VQUE9SVEVEX1NFUlZJQ0UsXG4gICAgICAgICAgJ1RoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIHVuc3VwcG9ydGVkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdmFsaWRhdG9yKGF1dGhEYXRhW3Byb3ZpZGVyXSwgcmVxLCB1c2VyLCByZXF1ZXN0T2JqZWN0LCB7XG4gICAgICAgIGlzTG9naW4sXG4gICAgICB9KTtcbiAgICAgIG1ldGhvZCA9IHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC5tZXRob2Q7XG4gICAgICByZXF1ZXN0T2JqZWN0LnRyaWdnZXJOYW1lID0gbWV0aG9kO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC52YWxpZGF0b3IpIHtcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHZhbGlkYXRpb25SZXN1bHQpLmxlbmd0aCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhUmVzcG9uc2VbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5yZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFNvbWUgYXV0aCBwcm92aWRlcnMgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gd2lsbCBhdm9pZCB0byByZXBsYWNlIGF1dGhEYXRhIGFscmVhZHkgc3RvcmVkXG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuZG9Ob3RTYXZlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSB2YWxpZGF0aW9uUmVzdWx0LnNhdmUgfHwgYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZSA9IHJlc29sdmVFcnJvcihlcnIsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCxcbiAgICAgICAgbWVzc2FnZTogJ0F1dGggZmFpbGVkLiBVbmtub3duIGVycm9yLicsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPVxuICAgICAgICByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHJlcS5kYXRhLm9iamVjdElkIHx8IHVuZGVmaW5lZDtcbiAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgYEZhaWxlZCBydW5uaW5nIGF1dGggc3RlcCAke21ldGhvZH0gZm9yICR7cHJvdmlkZXJ9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aCBFcnJvcjogYCArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRoZW50aWNhdGlvblN0ZXA6IG1ldGhvZCxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjYztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBdXRoLFxuICBtYXN0ZXIsXG4gIG1haW50ZW5hbmNlLFxuICBub2JvZHksXG4gIHJlYWRPbmx5LFxuICBzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5LFxuICBnZXRBdXRoRm9yU2Vzc2lvblRva2VuLFxuICBnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuLFxuICBmaW5kVXNlcnNXaXRoQXV0aERhdGEsXG4gIGhhc011dGF0ZWRBdXRoRGF0YSxcbiAgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbixcbiAgaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFELHNCQUFBLENBQUFMLE9BQUE7QUFBb0MsU0FBQUssdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFO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