@lifeready/core 8.0.13 → 8.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/lifeready-core.umd.js +118 -24
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +1 -1
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/api/query-processor/query-processor.service.js +11 -1
- package/esm2015/lib/api/types/lr-graphql.types.js +6 -1
- package/esm2015/lib/auth/auth.service.js +6 -1
- package/esm2015/lib/life-ready.config.js +6 -3
- package/esm2015/lib/plan/plan.types.js +1 -1
- package/esm2015/lib/scenario/scenario.service.js +5 -5
- package/esm2015/lib/trusted-party/trusted-party.gql.private.js +3 -1
- package/esm2015/lib/trusted-party/trusted-party.service.js +56 -8
- package/esm2015/lib/trusted-party/trusted-party.types.js +1 -1
- package/fesm2015/lifeready-core.js +83 -10
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +9 -0
- package/lib/auth/auth.service.d.ts +1 -0
- package/lib/life-ready.config.d.ts +2 -0
- package/lib/plan/plan.types.d.ts +1 -0
- package/lib/trusted-party/trusted-party.gql.private.d.ts +2 -1
- package/lib/trusted-party/trusted-party.service.d.ts +39 -14
- package/lib/trusted-party/trusted-party.types.d.ts +9 -2
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { __awaiter, __decorate } from "tslib";
|
|
2
2
|
import { Injectable, Injector, NgZone } from '@angular/core';
|
|
3
3
|
import { LrMergedMutation, LrMutation, LrService } from '../api/lr-graphql';
|
|
4
|
-
import { AccessRoleChoice, mapEdges, ScenarioState, TpClaimApproverState
|
|
4
|
+
import { AccessRoleChoice, mapEdges, ScenarioState, TpClaimApproverState } from '../api/types';
|
|
5
5
|
import { EncryptionService } from '../encryption/encryption.service';
|
|
6
6
|
import { ItemService } from '../item/item.service';
|
|
7
7
|
import { KeyGraphService } from '../key/key-graph.service';
|
|
8
8
|
import { TpsKeysQuery } from '../tp-assembly/tp-assembly.private.gql';
|
|
9
|
-
import { KcBadArgumentException, KcBadStateException
|
|
9
|
+
import { KcBadArgumentException, KcBadStateException } from '../_common/exceptions';
|
|
10
10
|
import { RunOutsideAngular } from '../_common/run-outside-angular';
|
|
11
11
|
import { assert_xor } from '../_common/utils';
|
|
12
12
|
import { ScenarioAssemblyController } from './scenario.controller';
|
|
13
|
-
import { ApproveScenarioClaimMutation, CancelScenarioClaimMutation, CreateScenarioClaimMutation, CreateScenarioMutation, DebugExpireScenarioClaimMutation, DeleteScenarioMutation, ReceiveScenarioClaimMutation, RejectScenarioClaimMutation, UpdateScenarioMutation
|
|
13
|
+
import { ApproveScenarioClaimMutation, CancelScenarioClaimMutation, CreateScenarioClaimMutation, CreateScenarioMutation, DebugExpireScenarioClaimMutation, DeleteScenarioMutation, ReceiveScenarioClaimMutation, RejectScenarioClaimMutation, UpdateScenarioMutation } from './scenario.gql';
|
|
14
14
|
import { ScenarioQuery, SharedScenarioQuery } from './scenario.private.gql';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
16
16
|
import * as i1 from "../key/key-graph.service";
|
|
@@ -437,7 +437,7 @@ let ScenarioService = class ScenarioService extends LrService {
|
|
|
437
437
|
sharedCipherDataClearJson: existingDirectory.sharedCipherDataClearJson,
|
|
438
438
|
});
|
|
439
439
|
});
|
|
440
|
-
// Fill in any missing update
|
|
440
|
+
// Fill in any missing update files
|
|
441
441
|
mapEdges(existingReceiver.receiverItems.receiverFiles).forEach((existingFile) => {
|
|
442
442
|
if (deleteFilesOptions.includes(existingFile.file.id)) {
|
|
443
443
|
return;
|
|
@@ -676,4 +676,4 @@ ScenarioService = __decorate([
|
|
|
676
676
|
})
|
|
677
677
|
], ScenarioService);
|
|
678
678
|
export { ScenarioService };
|
|
679
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zY2VuYXJpby9zY2VuYXJpby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLFFBQVEsRUFHUixhQUFhLEVBR2Isb0JBQW9CLEdBRXJCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXRFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBQ2hDLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLHNCQUFzQixHQUN2QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxh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QUFDO1FBQ0osQ0FBQztLQUFBO0lBRWEsMkJBQTJCLENBQ3ZDLGdCQUF3QixFQUN4QixPQUFlOztZQUVmLDRFQUE0RTtZQUM1RSxzQkFBc0I7WUFDdEIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbEQsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxvQkFBb0IsQ0FBQyxPQUFPLENBQzdCLENBQUM7WUFFRixPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FDekIsQ0FBTyxlQUFlLEVBQUUsRUFBRTtnQkFDeEIsT0FBQSxJQUFJLFVBQVUsQ0FBQztvQkFDYixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxFQUFFLEVBQUU7cUJBQy9DO2lCQUNGLENBQUMsQ0FBQTtjQUFBLENBQ0wsQ0FBQztRQUNKLENBQUM7S0FBQTtDQUNGLENBQUE7QUEvNEJlLGlDQUFpQixHQUFHLFdBQVcsQ0FBQzs7O1lBZC9DLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBdEU4QixNQUFNO1lBQWhCLFFBQVE7WUFrQnBCLGVBQWU7WUFGZixXQUFXO1lBV1gsMEJBQTBCO1lBWjFCLGlCQUFpQjs7QUF3RGIsZUFBZTtJQU4zQixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsZUFBZSxDQTA1QjNCO1NBMTVCWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24sIExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7XG4gIEFjY2Vzc1JvbGVDaG9pY2UsXG4gIEpTT05PYmplY3QsXG4gIG1hcEVkZ2VzLFxuICBTY2VuYXJpb05vZGUsXG4gIFNjZW5hcmlvUmVjZWl2ZXJOb2RlLFxuICBTY2VuYXJpb1N0YXRlLFxuICBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZWRBcHByb3ZhbE5vZGUsXG4gIFNoYXJlZFRwQ2xhaW1BcHByb3Zlck5vZGUsXG4gIFRwQ2xhaW1BcHByb3ZlclN0YXRlLFxuICBUcE5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vaXRlbS9pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWRLZXlQYWlyIH0gZnJvbSAnLi4vaXRlbS9pdGVtLnR5cGVzJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBUcHNLZXlzUXVlcnkgfSBmcm9tICcuLi90cC1hc3NlbWJseS90cC1hc3NlbWJseS5wcml2YXRlLmdxbCc7XG5pbXBvcnQgeyBQYXJ0aWFsQXNzZW1ibHlLZXkgfSBmcm9tICcuLi90cC1hc3NlbWJseS90cC1hc3NlbWJseS50eXBlcyc7XG5pbXBvcnQge1xuICBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uLFxuICBLY0JhZFN0YXRlRXhjZXB0aW9uLFxufSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgYXNzZXJ0X3hvciB9IGZyb20gJy4uL19jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgU2NlbmFyaW9Bc3NlbWJseUNvbnRyb2xsZXIgfSBmcm9tICcuL3NjZW5hcmlvLmNvbnRyb2xsZXInO1xuaW1wb3J0IHtcbiAgQXBwcm92ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgQ2FuY2VsU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBDcmVhdGVTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gIENyZWF0ZVNjZW5hcmlvTXV0YXRpb24sXG4gIERlYnVnRXhwaXJlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBEZWxldGVTY2VuYXJpb011dGF0aW9uLFxuICBSZWNlaXZlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBSZWplY3RTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gIFVwZGF0ZVNjZW5hcmlvTXV0YXRpb24sXG59IGZyb20gJy4vc2NlbmFyaW8uZ3FsJztcbmltcG9ydCB7IFNjZW5hcmlvUXVlcnksIFNoYXJlZFNjZW5hcmlvUXVlcnkgfSBmcm9tICcuL3NjZW5hcmlvLnByaXZhdGUuZ3FsJztcbmltcG9ydCB7XG4gIENyZWF0ZUNsYWltYW50T3B0aW9ucyxcbiAgQ3JlYXRlUGFydGljaXBhbnRPcHRpb25zLFxuICBDcmVhdGVSZWNlaXZlck9wdGlvbnMsXG4gIENyZWF0ZVNjZW5hcmlvT3B0aW9ucyxcbiAgUGFydGljaXBhbnRPcHRpb25zLFxuICBSZWNlaXZlckRpcmVjdG9yeU9wdGlvbnMsXG4gIFJlY2VpdmVyRmlsZU9wdGlvbnMsXG4gIFJlY2VpdmVySXRlbU9wdGlvbnMsXG4gIFJlc2V0U2NlbmFyaW9PcHRpb25zLFxuICBVcGRhdGVDbGFpbWFudE9wdGlvbnMsXG4gIFVwZGF0ZVJlY2VpdmVyT3B0aW9ucyxcbiAgVXBkYXRlU2NlbmFyaW9PcHRpb25zLFxufSBmcm9tICcuL3NjZW5hcmlvLnR5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93Q2xhaW1JZE1pc21hdGNoKCkge1xuICB0aHJvdyBuZXcgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAnY2xhaW1JZCBkb2VzIG5vdCBtYXRjaCB3aXRoIHRoZSBjdXJyZW50IGNsYWltSWQgb2YgdGhlIHNjZW5hcmlvJ1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dDbGFpbU5vdEFwcHJvdmVkKCkge1xuICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbignU2NlbmFyaW8gY2xhaW0gaGFzIG5vdCBiZWVuIGFwcHJvdmVkJyk7XG59XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY2VuYXJpb1NlcnZpY2UgZXh0ZW5kcyBMclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGl0ZW1TZXJ2aWNlOiBJdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGFzc2VtYmx5Q29udHJvbGxlcjogU2NlbmFyaW9Bc3NlbWJseUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgU0xJUDM5X1BBU1NQSFJBU0UgPSAnbGlmZXJlYWR5JztcblxuICBwcml2YXRlIHByZXBhcmVBZGRSZWNlaXZlckRpcmVjdG9yeSA9IHRoaXMucHJlcGFyZVJlY2VpdmVyRGlyZWN0b3J5O1xuICBwcml2YXRlIHByZXBhcmVVcGRhdGVSZWNlaXZlckRpcmVjdG9yeSA9IHRoaXMucHJlcGFyZVJlY2VpdmVyRGlyZWN0b3J5O1xuXG4gIHByaXZhdGUgcHJlcGFyZUFkZFJlY2VpdmVyRmlsZSA9IHRoaXMucHJlcGFyZVJlY2VpdmVyRmlsZTtcbiAgcHJpdmF0ZSBwcmVwYXJlVXBkYXRlUmVjZWl2ZXJGaWxlID0gdGhpcy5wcmVwYXJlUmVjZWl2ZXJGaWxlO1xuXG4gIC8vIFNjZW5hcmlvc1xuICBhc3luYyBjcmVhdGVTY2VuYXJpbyhvcHRpb25zOiBDcmVhdGVTY2VuYXJpb09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jcmVhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNjZW5hcmlvTXV0YXRpb24ob3B0aW9uczogQ3JlYXRlU2NlbmFyaW9PcHRpb25zKSB7XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnMpO1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ3JlYXRlU2NlbmFyaW9NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVTY2VuYXJpbyhvcHRpb25zOiBVcGRhdGVTY2VuYXJpb09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51cGRhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVNjZW5hcmlvTXV0YXRpb24ob3B0aW9uczogVXBkYXRlU2NlbmFyaW9PcHRpb25zKSB7XG4gICAgY29uc3Qgc2NlbmFyaW8gPSAoYXdhaXQgdGhpcy5nZXRTY2VuYXJpbyhvcHRpb25zLnNjZW5hcmlvSWQpKS5zY2VuYXJpbztcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVNjZW5hcmlvKG9wdGlvbnMsIHNjZW5hcmlvKTtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZVNjZW5hcmlvTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVzZXRTY2VuYXJpbyhvcHRpb25zOiBSZXNldFNjZW5hcmlvT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJlc2V0U2NlbmFyaW9NdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyByZXNldFNjZW5hcmlvTXV0YXRpb24ob3B0aW9uczogUmVzZXRTY2VuYXJpb09wdGlvbnMpIHtcbiAgICBjb25zdCBzY2VuYXJpbyA9IChhd2FpdCB0aGlzLmdldFNjZW5hcmlvKG9wdGlvbnMuc2NlbmFyaW9JZCkpLnNjZW5hcmlvO1xuXG4gICAgY29uc3QgeyBhc3NlbWJseSB9ID0gc2NlbmFyaW87XG5cbiAgICAvLyBKdXN0IG5lZWQgdG8gZG8gYW4gdXBkYXRlIHdpdGhvdXQgY2hhbmdpbmcgYXBwcm92ZXJzLiBUaGlzIHdpbGwgcmVjcmVhdGVcbiAgICAvLyBhbGwgYXNzZW1ibHkga2V5cy5cbiAgICBjb25zdCB1cGRhdGVTdWJBc3NlbWJsaWVzID0gbWFwRWRnZXMoYXNzZW1ibHkuc3ViQXNzZW1ibGllcykubWFwKChzYSkgPT4ge1xuICAgICAgY29uc3QgYXBwcm92ZXJUcHMgPSBtYXBFZGdlcyhzYS5hcHByb3ZlcnMpLm1hcCgoYXBwcm92ZXIpID0+ICh7XG4gICAgICAgIHRwSWQ6IGFwcHJvdmVyLnRwLmlkLFxuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogc2EuaWQsXG4gICAgICAgIHF1b3J1bTogc2EucXVvcnVtLFxuICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb246IHNhLnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICBhcHByb3ZlclRwcyxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVNjZW5hcmlvKFxuICAgICAge1xuICAgICAgICBzY2VuYXJpb0lkOiBvcHRpb25zLnNjZW5hcmlvSWQsXG4gICAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuZW5hYmxlZCxcbiAgICAgICAgdXBkYXRlQXNzZW1ibHk6IHtcbiAgICAgICAgICBxdW9ydW06IGFzc2VtYmx5LnF1b3J1bSxcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IGFzc2VtYmx5LnNpbmdsZVJlamVjdCxcbiAgICAgICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNjZW5hcmlvXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlU2NlbmFyaW9NdXRhdGlvbiwgLy8gdXBkYXRpbmcgc2NlbmFyaW8gcmVzZXRzIGl0XG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2NlbmFyaW8oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubHJHcmFwaFFMLmxyTXV0YXRlKHRoaXMuZGVsZXRlU2NlbmFyaW9NdXRhdGlvbihzY2VuYXJpb0lkKSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVTY2VuYXJpb011dGF0aW9uKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlU2NlbmFyaW9NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogeyBpbnB1dDogeyBzY2VuYXJpb0lkIH0gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENsYWltc1xuICBhc3luYyBjcmVhdGVDbGFpbShzY2VuYXJpb0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jcmVhdGVDbGFpbU11dGF0aW9uKHNjZW5hcmlvSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUNsYWltTXV0YXRpb24oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQ6IHsgc2NlbmFyaW9JZCB9IH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjYW5jZWxDbGFpbShjbGFpbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jYW5jZWxDbGFpbU11dGF0aW9uKGNsYWltSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbENsYWltTXV0YXRpb24oY2xhaW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDYW5jZWxTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQ6IHsgY2xhaW1JZCB9IH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZWplY3RDbGFpbShzaGFyZWRTY2VuYXJpb0lkOiBzdHJpbmcsIGNsYWltSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJlamVjdENsYWltTXV0YXRpb24oc2hhcmVkU2NlbmFyaW9JZCwgY2xhaW1JZCkpO1xuICB9XG5cbiAgYXN5bmMgcmVqZWN0Q2xhaW1NdXRhdGlvbihzaGFyZWRTY2VuYXJpb0lkOiBzdHJpbmcsIGNsYWltSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG11dGF0aW9ucyA9IGF3YWl0IHRoaXMucHJlcGFyZVJlamVjdENsYWltTXV0YXRpb25zKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIGNsYWltSWRcbiAgICApO1xuICAgIHJldHVybiBMck1lcmdlZE11dGF0aW9uLmNyZWF0ZShhd2FpdCBQcm9taXNlLmFsbChtdXRhdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGFwcHJvdmVDbGFpbShzaGFyZWRTY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIC8vIFRPRE8gdGhpcyBuZWVkcyBhIGNhc3Qgc28gdGhlIHJlc3VsdCBpcyBub3QgQU5ZLlxuICAgIHJldHVybiB0aGlzLm11dGF0ZShcbiAgICAgIHRoaXMuYXBwcm92ZUNsYWltTXV0YXRpb24oc2hhcmVkU2NlbmFyaW9JZCwgc2hhcmVkQ2xhaW1JZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgYXBwcm92ZUNsYWltTXV0YXRpb24oc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLCBzaGFyZWRDbGFpbUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtdXRhdGlvbnMgPSBhd2FpdCB0aGlzLnByZXBhcmVBcHByb3ZlQ2xhaW1NdXRhdGlvbnMoXG4gICAgICBzaGFyZWRTY2VuYXJpb0lkLFxuICAgICAgc2hhcmVkQ2xhaW1JZFxuICAgICk7XG4gICAgcmV0dXJuIExyTWVyZ2VkTXV0YXRpb24uY3JlYXRlKGF3YWl0IFByb21pc2UuYWxsKG11dGF0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgcmVjZWl2ZUNsYWltKHNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMucmVjZWl2ZUNsYWltMk11dGF0aW9uKHNjZW5hcmlvSWQsIHNoYXJlZENsYWltSWQpKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmVDbGFpbTJNdXRhdGlvbihzY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVjZWl2ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogYXdhaXQgdGhpcy5wcmVwYXJlUmVjZWl2ZUNsYWltMihzY2VuYXJpb0lkLCBzaGFyZWRDbGFpbUlkKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWJ1Z0V4cGlyZUNsYWltKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmRlYnVnRXhwaXJlQ2xhaW1NdXRhdGlvbihzY2VuYXJpb0lkKSk7XG4gIH1cblxuICBhc3luYyBkZWJ1Z0V4cGlyZUNsYWltTXV0YXRpb24oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWJ1Z0V4cGlyZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogeyBzY2VuYXJpb0lkIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSGVscGVyc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcml2YXRlIGFzeW5jIGdldFNjZW5hcmlvKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5KHtcbiAgICAgIHF1ZXJ5OiBTY2VuYXJpb1F1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7IHNjZW5hcmlvSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0U2hhcmVkU2NlbmFyaW8oc2NlbmFyaW9JZDogc3RyaW5nLCBjbGFpbUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcmV0ID0gYXdhaXQgdGhpcy5xdWVyeSh7XG4gICAgICBxdWVyeTogU2hhcmVkU2NlbmFyaW9RdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChjbGFpbUlkICYmIHJldC5zaGFyZWRTY2VuYXJpby5zaGFyZWRDbGFpbS5pZCAhPT0gY2xhaW1JZCkge1xuICAgICAgdGhyb3dDbGFpbUlkTWlzbWF0Y2goKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQYXJ0aWNpcGFudFRwc0tleXMob3B0aW9uczogQ3JlYXRlUGFydGljaXBhbnRPcHRpb25zW10pIHtcbiAgICBjb25zdCB0cElkcyA9IG9wdGlvbnMubWFwKCh4KSA9PiB4LnRwSWQpO1xuXG4gICAgLy8gVGhpcyBzaG91bGQgY29udGFpbiBhbGwgdGhlIFRQcyB0aGF0IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBhc3NlbWJseS5cbiAgICBjb25zdCB0cHMgPSBtYXBFZGdlcyhcbiAgICAgIChcbiAgICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUUwucXVlcnkoe1xuICAgICAgICAgIHF1ZXJ5OiBUcHNLZXlzUXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBpZHM6IHRwSWRzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLnRwc1xuICAgICk7XG5cbiAgICByZXR1cm4gdHBzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsVHBTaGFyZWRLZXlJZChcbiAgICBvcHRpb25zOiBDcmVhdGVQYXJ0aWNpcGFudE9wdGlvbnNbXSxcbiAgICB0cHM6IFRwTm9kZVtdXG4gICkge1xuICAgIG9wdGlvbnMuZm9yRWFjaCgocGFydGljaXBhbnQpID0+IHtcbiAgICAgIGlmICghcGFydGljaXBhbnQudHBTaGFyZWRLZXlJZCkge1xuICAgICAgICBjb25zdCB0cCA9IHRwcy5maW5kKCh4KSA9PiB4LmlkID09PSBwYXJ0aWNpcGFudC50cElkKTtcbiAgICAgICAgcGFydGljaXBhbnQudHBTaGFyZWRLZXlJZCA9XG4gICAgICAgICAgdHAuY3VycmVudFVzZXJTaGFyZWRLZXkudXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDcmVhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnM6IENyZWF0ZVNjZW5hcmlvT3B0aW9ucykge1xuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIG11dGF0aW9uSW5wdXQ6IGNyZWF0ZUFzc2VtYmx5IH0gPVxuICAgICAgYXdhaXQgdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucHJlcGFyZUNyZWF0ZShvcHRpb25zLmNyZWF0ZUFzc2VtYmx5KTtcblxuICAgIGNvbnN0IGNyZWF0ZVJlY2VpdmVyc09wdGlvbnMgPSBvcHRpb25zLmNyZWF0ZVJlY2VpdmVycyB8fCBbXTtcbiAgICBjb25zdCBjcmVhdGVDbGFpbWFudHNPcHRpb25zID0gb3B0aW9ucy5jcmVhdGVDbGFpbWFudHMgfHwgW107XG5cbiAgICAvLyBGZXRjaCBhbGwgdGhlIFRQcyBzbyB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgaW4gdHBTaGFyZWRLZXlJZFxuICAgIGNvbnN0IGNyZWF0UGFydGljaXBhbnRzT3B0aW9ucyA9IGNyZWF0ZVJlY2VpdmVyc09wdGlvbnMuY29uY2F0KFxuICAgICAgY3JlYXRlQ2xhaW1hbnRzT3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCB0cHMgPSBhd2FpdCB0aGlzLmdldFBhcnRpY2lwYW50VHBzS2V5cyhjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMpO1xuXG4gICAgdGhpcy5maWxsVHBTaGFyZWRLZXlJZChjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMsIHRwcyk7XG5cbiAgICBjb25zdCBjcmVhdGVSZWNlaXZlcnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNyZWF0ZVJlY2VpdmVyc09wdGlvbnMubWFwKChyZWNlaXZlcikgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlQ3JlYXRlUmVjZWl2ZXIocmVjZWl2ZXIsIGFzc2VtYmx5S2V5KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCBjcmVhdGVDbGFpbWFudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNyZWF0ZUNsYWltYW50c09wdGlvbnMubWFwKCh4KSA9PiB0aGlzLnByZXBhcmVDcmVhdGVDbGFpbWFudCh4KSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuZW5hYmxlZCxcbiAgICAgIGluYWN0aXZlU2Vjb25kczogb3B0aW9ucy5pbmFjdGl2ZVNlY29uZHMsXG4gICAgICBjcmVhdGVBc3NlbWJseSxcbiAgICAgIGNyZWF0ZVJlY2VpdmVycyxcbiAgICAgIGNyZWF0ZUNsYWltYW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlVXBkYXRlU2NlbmFyaW8oXG4gICAgb3B0aW9uczogVXBkYXRlU2NlbmFyaW9PcHRpb25zLFxuICAgIHNjZW5hcmlvOiBTY2VuYXJpb05vZGVcbiAgKSB7XG4gICAgbGV0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRKd2tLZXkoXG4gICAgICBzY2VuYXJpby5hc3NlbWJseS5hc3NlbWJseUtleS5pZFxuICAgICk7XG5cbiAgICBjb25zdCB1cGRhdGVBc3NlbWJseSA9IG9wdGlvbnMudXBkYXRlQXNzZW1ibHlcbiAgICAgID8gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAvLyBBc3NlbWJseSBrZXkgaXMgYWx3YXlzIHJvdGF0ZWQgd2hlbiB1cGRhdGluZyBhc3NlbWJseS5cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFzc2VtYmx5Q29udHJvbGxlci5wcmVwYXJlVXBkYXRlKFxuICAgICAgICAgICAgb3B0aW9ucy51cGRhdGVBc3NlbWJseSxcbiAgICAgICAgICAgIHNjZW5hcmlvLmFzc2VtYmx5XG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBVc2UgbmV3IGFzc2VtYmx5IGtleS5cbiAgICAgICAgICBhc3NlbWJseUtleSA9IHJlc3VsdC5hc3NlbWJseUtleTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0Lm11dGF0aW9uSW5wdXQ7XG4gICAgICAgIH0pKClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY3JlYXRlUmVjZWl2ZXJzT3B0aW9ucyA9IG9wdGlvbnMuY3JlYXRlUmVjZWl2ZXJzIHx8IFtdO1xuICAgIGNvbnN0IGNyZWF0ZUNsYWltYW50c09wdGlvbnMgPSBvcHRpb25zLmNyZWF0ZUNsYWltYW50cyB8fCBbXTtcblxuICAgIC8vIEZldGNoIGFsbCB0aGUgVFBzIHNvIHdlIGRvbid0IGhhdmUgdG8gcGFzcyBpbiB0cFNoYXJlZEtleUlkXG4gICAgY29uc3QgY3JlYXRQYXJ0aWNpcGFudHNPcHRpb25zID0gY3JlYXRlUmVjZWl2ZXJzT3B0aW9ucy5jb25jYXQoXG4gICAgICBjcmVhdGVDbGFpbWFudHNPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IHRwcyA9IGF3YWl0IHRoaXMuZ2V0UGFydGljaXBhbnRUcHNLZXlzKGNyZWF0UGFydGljaXBhbnRzT3B0aW9ucyk7XG5cbiAgICB0aGlzLmZpbGxUcFNoYXJlZEtleUlkKGNyZWF0UGFydGljaXBhbnRzT3B0aW9ucywgdHBzKTtcblxuICAgIGNvbnN0IGNyZWF0ZVJlY2VpdmVycyA9XG4gICAgICBvcHRpb25zLmNyZWF0ZVJlY2VpdmVycyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLmNyZWF0ZVJlY2VpdmVycy5tYXAoKHgpID0+XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQ3JlYXRlUmVjZWl2ZXIoeCwgYXNzZW1ibHlLZXkpXG4gICAgICAgIClcbiAgICAgICkpO1xuXG4gICAgY29uc3QgZXhpc3RpbmdSZWNlaXZlcnMgPSBtYXBFZGdlcyhzY2VuYXJpby5yZWNlaXZlcnMpO1xuICAgIGxldCB1cGRhdGVSZWNlaXZlcnMgPSBvcHRpb25zLnVwZGF0ZVJlY2VpdmVyc1xuICAgICAgPyBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICBvcHRpb25zLnVwZGF0ZVJlY2VpdmVycy5tYXAoKHVwZGF0ZVJlY2VpdmVyKSA9PiB7XG4gICAgICAgICAgICAvLyBGaW5kIHRoZSByZWNlaXZlciB3ZSBhcmUgdXBkYXRpbmdcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUmVjZWl2ZXIgPSBleGlzdGluZ1JlY2VpdmVycy5maW5kKFxuICAgICAgICAgICAgICAoeCkgPT4geC50cC5pZCA9PT0gdXBkYXRlUmVjZWl2ZXIudHBJZFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJlcGFyZVVwZGF0ZVJlY2VpdmVyKFxuICAgICAgICAgICAgICB1cGRhdGVSZWNlaXZlcixcbiAgICAgICAgICAgICAgYXNzZW1ibHlLZXksXG4gICAgICAgICAgICAgIGV4aXN0aW5nUmVjZWl2ZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgOiBbXTtcblxuICAgIC8vIEZpbGwgaW4gYW55IG1pc3NpbmcgcmVjZWl2ZXJzIHdoZW4gdXBkYXRpbmcgYXNzZW1ibHkuXG4gICAgaWYgKG9wdGlvbnMudXBkYXRlQXNzZW1ibHkpIHtcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHJlY2VpdmVycyB0aGF0IHdpbGwgYmUgZGVsZXRlZCBvciBhbHJlYWR5IHVwZGF0ZWQuXG4gICAgICBjb25zdCBleGlzdGluZyA9IGV4aXN0aW5nUmVjZWl2ZXJzLmZpbHRlcihcbiAgICAgICAgKGV4aXN0aW5nUmVjZWl2ZXIpID0+XG4gICAgICAgICAgIShvcHRpb25zLmRlbGV0ZVJlY2VpdmVycyB8fCBbXSkuaW5jbHVkZXMoZXhpc3RpbmdSZWNlaXZlci50cC5pZCkgJiZcbiAgICAgICAgICAhdXBkYXRlUmVjZWl2ZXJzLnNvbWUoXG4gICAgICAgICAgICAodXBkYXRlUmVjZWl2ZXIpID0+IHVwZGF0ZVJlY2VpdmVyLnRwSWQgPT09IGV4aXN0aW5nUmVjZWl2ZXIudHAuaWRcbiAgICAgICAgICApXG4gICAgICApO1xuICAgICAgdXBkYXRlUmVjZWl2ZXJzID0gdXBkYXRlUmVjZWl2ZXJzLmNvbmNhdChcbiAgICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlRXhpc3RpbmdSZWNlaXZlcnMoZXhpc3RpbmcsIGFzc2VtYmx5S2V5KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVDbGFpbWFudHMgPVxuICAgICAgb3B0aW9ucy5jcmVhdGVDbGFpbWFudHMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5jcmVhdGVDbGFpbWFudHMubWFwKCh4KSA9PiB0aGlzLnByZXBhcmVDcmVhdGVDbGFpbWFudCh4KSlcbiAgICAgICkpO1xuXG4gICAgY29uc3QgZXhpc3RpbmdDbGFpbWFudHMgPSBtYXBFZGdlcyhzY2VuYXJpby5jbGFpbWFudHMpO1xuICAgIGNvbnN0IHVwZGF0ZUNsYWltYW50cyA9XG4gICAgICBvcHRpb25zLnVwZGF0ZUNsYWltYW50cyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLnVwZGF0ZUNsYWltYW50cy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBjbGFpbWFudCB3ZSBhcmUgdXBkYXRpbmdcbiAgICAgICAgICBjb25zdCBjbGFpbWFudCA9IGV4aXN0aW5nQ2xhaW1hbnRzLmZpbmQoXG4gICAgICAgICAgICAoZXhpc3RpbmdDbGFpbWFudCkgPT4gZXhpc3RpbmdDbGFpbWFudC50cC5pZCA9PT0geC50cElkXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcmVwYXJlVXBkYXRlQ2xhaW1hbnQoeCwgY2xhaW1hbnQuc2hhcmVkS2V5LmlkKTtcbiAgICAgICAgfSlcbiAgICAgICkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNjZW5hcmlvSWQ6IG9wdGlvbnMuc2NlbmFyaW9JZCxcbiAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuZW5hYmxlZCxcbiAgICAgIGluYWN0aXZlU2Vjb25kczogb3B0aW9ucy5pbmFjdGl2ZVNlY29uZHMsXG4gICAgICB1cGRhdGVBc3NlbWJseSxcbiAgICAgIGNyZWF0ZVJlY2VpdmVycyxcbiAgICAgIHVwZGF0ZVJlY2VpdmVycyxcbiAgICAgIGRlbGV0ZVJlY2VpdmVyczogb3B0aW9ucy5kZWxldGVSZWNlaXZlcnMsXG4gICAgICBjcmVhdGVDbGFpbWFudHMsXG4gICAgICB1cGRhdGVDbGFpbWFudHMsXG4gICAgICBkZWxldGVDbGFpbWFudHM6IG9wdGlvbnMuZGVsZXRlQ2xhaW1hbnRzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVSZWNlaXZlckl0ZW0ob3B0aW9uczoge1xuICAgIHJlY2VpdmVySXRlbU9wdGlvbnM6IFJlY2VpdmVySXRlbU9wdGlvbnM7XG4gICAgcmVjZWl2ZXJTaGFyZWRLZXk6IEpXSy5LZXk7XG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXk7XG4gICAgZGlyZWN0b3J5PzogSWRLZXlQYWlyO1xuICAgIGZpbGU/OiBJZEtleVBhaXI7XG4gIH0pIHtcbiAgICBjb25zdCB7XG4gICAgICByZWNlaXZlckl0ZW1PcHRpb25zLFxuICAgICAgcmVjZWl2ZXJTaGFyZWRLZXksXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIGRpcmVjdG9yeSxcbiAgICAgIGZpbGUsXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBhc3NlcnRfeG9yKHsgZGlyZWN0b3J5LCBmaWxlIH0pO1xuXG4gICAgY29uc3QgeyBhY2Nlc3NSb2xlIH0gPSByZWNlaXZlckl0ZW1PcHRpb25zO1xuXG4gICAgaWYgKGFjY2Vzc1JvbGUgPT0gQWNjZXNzUm9sZUNob2ljZS5ERU5ZKSB7XG4gICAgICBjb25zdCByZXQgPSB7XG4gICAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICAgIGl0ZW1LZXlJZDogbnVsbCxcbiAgICAgICAgd3JhcHBlZEl0ZW1LZXk6IG51bGwsXG4gICAgICAgIHNoYXJlZENpcGhlckRhdGE6IG51bGwsXG4gICAgICB9O1xuXG4gICAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICAgIC8vIENyeXB0b2dyYXBoaWMgYWNjZXNzIHRvIGl0ZW0gaXMgbm90IHJlcXVpcmVkLlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBkaXJlY3RvcnlJZDogZGlyZWN0b3J5LmlkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXQsXG4gICAgICAgICAgZmlsZUlkOiBmaWxlLmlkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUT0RPIHRoaXMgc2hvdWxkIGJlIGJhdGNoZWRcbiAgICAgIGxldCBpdGVtS2V5O1xuICAgICAgaWYgKGRpcmVjdG9yeSkge1xuICAgICAgICBpdGVtS2V5ID0gYXdhaXQgdGhpcy5pdGVtU2VydmljZS5nZXREaXJlY3RvcnlLZXkoXG4gICAgICAgICAgZGlyZWN0b3J5LmlkLFxuICAgICAgICAgIGRpcmVjdG9yeS5rZXlJZFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbUtleSA9IGF3YWl0IHRoaXMuaXRlbVNlcnZpY2UuZ2V0RmlsZUtleShmaWxlLmlkLCBmaWxlLmtleUlkKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHdyYXBwZWRJdGVtS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgICBpdGVtS2V5Lmp3ay50b0pTT04odHJ1ZSlcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgcmVjZWl2ZXJTaGFyZWRLZXksXG4gICAgICAgIHJlY2VpdmVySXRlbU9wdGlvbnMuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgKTtcblxuICAgICAgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgYXNzZW1ibHlLZXksXG4gICAgICAgIHdyYXBwZWRJdGVtS2V5XG4gICAgICApO1xuXG4gICAgICBjb25zdCByZXQgPSB7XG4gICAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICAgIGl0ZW1LZXlJZDogaXRlbUtleS5pZCxcbiAgICAgICAgd3JhcHBlZEl0ZW1LZXksXG4gICAgICAgIHNoYXJlZENpcGhlckRhdGEsXG4gICAgICB9O1xuXG4gICAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmV0LFxuICAgICAgICAgIGRpcmVjdG9yeUlkOiBkaXJlY3RvcnkuaWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBmaWxlSWQ6IGZpbGUuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVjZWl2ZXJEaXJlY3RvcnkoXG4gICAgb3B0aW9uczogUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zLFxuICAgIHJlY2VpdmVyU2hhcmVkS2V5OiBKV0suS2V5LFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVSZWNlaXZlckl0ZW0oe1xuICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBkaXJlY3Rvcnk6IHtcbiAgICAgICAgaWQ6IG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICAgIGtleUlkOiBvcHRpb25zLmRpcmVjdG9yeUtleUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY2VpdmVyRmlsZShcbiAgICBvcHRpb25zOiBSZWNlaXZlckZpbGVPcHRpb25zLFxuICAgIHJlY2VpdmVyU2hhcmVkS2V5OiBKV0suS2V5LFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVSZWNlaXZlckl0ZW0oe1xuICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBmaWxlOiB7XG4gICAgICAgIGlkOiBvcHRpb25zLmZpbGVJZCxcbiAgICAgICAga2V5SWQ6IG9wdGlvbnMuZmlsZUtleUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZVJlY2VpdmVyKFxuICAgIG9wdGlvbnM6IENyZWF0ZVJlY2VpdmVyT3B0aW9ucyxcbiAgICBhc3NlbWJseUtleTogSldLLktleVxuICApIHtcbiAgICBjb25zdCB7IHNoYXJlZEtleSwgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlUGFydGljaXBhbnQoXG4gICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGFkZERpcmVjdG9yaWVzID1cbiAgICAgIG9wdGlvbnMuYWRkRGlyZWN0b3JpZXMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5hZGREaXJlY3Rvcmllcy5tYXAoKHgpID0+XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQWRkUmVjZWl2ZXJEaXJlY3RvcnkoeCwgc2hhcmVkS2V5LmtleSwgYXNzZW1ibHlLZXkpXG4gICAgICAgIClcbiAgICAgICkpO1xuXG4gICAgY29uc3QgYWRkRmlsZXMgPVxuICAgICAgb3B0aW9ucy5hZGRGaWxlcyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLmFkZEZpbGVzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnByZXBhcmVBZGRSZWNlaXZlckZpbGUoeCwgc2hhcmVkS2V5LmtleSwgYXNzZW1ibHlLZXkpXG4gICAgICAgIClcbiAgICAgICkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm11dGF0aW9uSW5wdXQsXG4gICAgICBhZGREaXJlY3RvcmllcyxcbiAgICAgIGFkZEZpbGVzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVVcGRhdGVSZWNlaXZlcihcbiAgICBvcHRpb25zOiBVcGRhdGVSZWNlaXZlck9wdGlvbnMsXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXksXG4gICAgZXhpc3RpbmdSZWNlaXZlcjogU2NlbmFyaW9SZWNlaXZlck5vZGVcbiAgKSB7XG4gICAgY29uc3Qgc2hhcmVkS2V5SWQgPSBleGlzdGluZ1JlY2VpdmVyLnNoYXJlZEtleS5pZDtcblxuICAgIGNvbnN0IGRlbGV0ZURpcmVjdG9yaWVzT3B0aW9ucyA9IG9wdGlvbnMuZGVsZXRlRGlyZWN0b3JpZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlRGlyZWN0b3JpZXNPcHRpb25zID0gb3B0aW9ucy51cGRhdGVEaXJlY3RvcmllcyB8fCBbXTtcblxuICAgIGNvbnN0IGRlbGV0ZUZpbGVzT3B0aW9ucyA9IG9wdGlvbnMuZGVsZXRlRmlsZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlRmlsZXNPcHRpb25zID0gb3B0aW9ucy51cGRhdGVGaWxlcyB8fCBbXTtcblxuICAgIC8vIEZpbGwgaW4gYW55IG1pc3NpbmcgdXBkYXRlIGRpcmVjdG9yaWVzXG4gICAgbWFwRWRnZXMoZXhpc3RpbmdSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRGlyZWN0b3JpZXMpLmZvckVhY2goXG4gICAgICAoZXhpc3RpbmdEaXJlY3RvcnkpID0+IHtcbiAgICAgICAgaWYgKGRlbGV0ZURpcmVjdG9yaWVzT3B0aW9ucy5pbmNsdWRlcyhleGlzdGluZ0RpcmVjdG9yeS5kaXJlY3RvcnkuaWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHVwZGF0ZURpcmVjdG9yaWVzT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKHgpID0+IHguZGlyZWN0b3J5SWQgPT09IGV4aXN0aW5nRGlyZWN0b3J5LmRpcmVjdG9yeS5pZFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlRGlyZWN0b3JpZXNPcHRpb25zLnB1c2goe1xuICAgICAgICAgIGFjY2Vzc1JvbGU6IGV4aXN0aW5nRGlyZWN0b3J5LmFjY2Vzc1JvbGUsXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IGV4aXN0aW5nRGlyZWN0b3J5LmRpcmVjdG9yeS5pZCxcbiAgICAgICAgICBkaXJlY3RvcnlLZXlJZDogZXhpc3RpbmdEaXJlY3RvcnkuZGlyZWN0b3J5LmtleUlkLFxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246XG4gICAgICAgICAgICBleGlzdGluZ0RpcmVjdG9yeS5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gRmlsbCBpbiBhbnkgbWlzc2luZyB1cGRhdGUgZGlyZWN0b3JpZXNcbiAgICBtYXBFZGdlcyhleGlzdGluZ1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJGaWxlcykuZm9yRWFjaChcbiAgICAgIChleGlzdGluZ0ZpbGUpID0+IHtcbiAgICAgICAgaWYgKGRlbGV0ZUZpbGVzT3B0aW9ucy5pbmNsdWRlcyhleGlzdGluZ0ZpbGUuZmlsZS5pZCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBkYXRlRmlsZXNPcHRpb25zLmZpbmQoKHgpID0+IHguZmlsZUlkID09PSBleGlzdGluZ0ZpbGUuZmlsZS5pZCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVGaWxlc09wdGlvbnMucHVzaCh7XG4gICAgICAgICAgYWNjZXNzUm9sZTogZXhpc3RpbmdGaWxlLmFjY2Vzc1JvbGUsXG4gICAgICAgICAgZmlsZUlkOiBleGlzdGluZ0ZpbGUuZmlsZS5pZCxcbiAgICAgICAgICBmaWxlS2V5SWQ6IGV4aXN0aW5nRmlsZS5maWxlLmtleUlkLFxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246IGV4aXN0aW5nRmlsZS5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgeyBzaGFyZWRLZXksIG11dGF0aW9uSW5wdXQgfSA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVBhcnRpY2lwYW50KFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNoYXJlZEtleUlkXG4gICAgKTtcblxuICAgIGNvbnN0IGFkZERpcmVjdG9yaWVzID1cbiAgICAgIG9wdGlvbnMuYWRkRGlyZWN0b3JpZXMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5hZGREaXJlY3Rvcmllcy5tYXAoKHgpID0+XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQWRkUmVjZWl2ZXJEaXJlY3RvcnkoeCwgc2hhcmVkS2V5LCBhc3NlbWJseUtleSlcbiAgICAgICAgKVxuICAgICAgKSk7XG5cbiAgICBjb25zdCBhZGRGaWxlcyA9XG4gICAgICBvcHRpb25zLmFkZEZpbGVzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMuYWRkRmlsZXMubWFwKCh4KSA9PlxuICAgICAgICAgIHRoaXMucHJlcGFyZUFkZFJlY2VpdmVyRmlsZSh4LCBzaGFyZWRLZXksIGFzc2VtYmx5S2V5KVxuICAgICAgICApXG4gICAgICApKTtcblxuICAgIGNvbnN0IHVwZGF0ZURpcmVjdG9yaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB1cGRhdGVEaXJlY3Rvcmllc09wdGlvbnMubWFwKCh4KSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVVcGRhdGVSZWNlaXZlckRpcmVjdG9yeSh4LCBzaGFyZWRLZXksIGFzc2VtYmx5S2V5KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCB1cGRhdGVGaWxlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdXBkYXRlRmlsZXNPcHRpb25zLm1hcCgoeCkgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlVXBkYXRlUmVjZWl2ZXJGaWxlKHgsIHNoYXJlZEtleSwgYXNzZW1ibHlLZXkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tdXRhdGlvbklucHV0LFxuICAgICAgYWRkRGlyZWN0b3JpZXMsXG4gICAgICBhZGRGaWxlcyxcbiAgICAgIHVwZGF0ZURpcmVjdG9yaWVzLFxuICAgICAgdXBkYXRlRmlsZXMsXG4gICAgICBkZWxldGVEaXJlY3Rvcmllczogb3B0aW9ucy5kZWxldGVEaXJlY3RvcmllcyxcbiAgICAgIGRlbGV0ZUZpbGVzOiBvcHRpb25zLmRlbGV0ZUZpbGVzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVFeGlzdGluZ1JlY2VpdmVyKFxuICAgIGV4aXN0aW5nUmVjZWl2ZXI6IFNjZW5hcmlvUmVjZWl2ZXJOb2RlLFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIGNvbnN0IHVwZGF0ZURpcmVjdG9yaWVzID0gbWFwRWRnZXMoXG4gICAgICBleGlzdGluZ1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJEaXJlY3Rvcmllc1xuICAgICkubWFwKCh7IGFjY2Vzc1JvbGUsIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sIGRpcmVjdG9yeSB9KSA9PiAoe1xuICAgICAgYWNjZXNzUm9sZSxcbiAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICBkaXJlY3RvcnlJZDogZGlyZWN0b3J5LmlkLFxuICAgICAgZGlyZWN0b3J5S2V5SWQ6IGRpcmVjdG9yeS5rZXlJZCxcbiAgICB9KSk7XG5cbiAgICBjb25zdCB1cGRhdGVGaWxlcyA9IG1hcEVkZ2VzKFxuICAgICAgZXhpc3RpbmdSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRmlsZXNcbiAgICApLm1hcCgoeyBhY2Nlc3NSb2xlLCBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLCBmaWxlIH0pID0+ICh7XG4gICAgICBhY2Nlc3NSb2xlLFxuICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIGZpbGVJZDogZmlsZS5pZCxcbiAgICAgIGZpbGVLZXlJZDogZmlsZS5rZXlJZCxcbiAgICB9KSk7XG5cbiAgICAvLyBGaWxsIGl0IGluIHdpdGggZXhpc3RpbmcgcmVjZWl2ZXIuXG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZVVwZGF0ZVJlY2VpdmVyKFxuICAgICAge1xuICAgICAgICB0cElkOiBleGlzdGluZ1JlY2VpdmVyLnRwLmlkLFxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uOiBleGlzdGluZ1JlY2VpdmVyLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICAgIHVwZGF0ZURpcmVjdG9yaWVzLFxuICAgICAgICB1cGRhdGVGaWxlcyxcbiAgICAgIH0sXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIGV4aXN0aW5nUmVjZWl2ZXJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlRXhpc3RpbmdSZWNlaXZlcnMoXG4gICAgZXhpc3RpbmdSZWNlaXZlcnM6IFNjZW5hcmlvUmVjZWl2ZXJOb2RlW10sXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXlcbiAgKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZXhpc3RpbmdSZWNlaXZlcnMubWFwKChleGlzdGluZ1JlY2VpdmVyKSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVFeGlzdGluZ1JlY2VpdmVyKGV4aXN0aW5nUmVjZWl2ZXIsIGFzc2VtYmx5S2V5KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDcmVhdGVQYXJ0aWNpcGFudChvcHRpb25zOiBDcmVhdGVQYXJ0aWNpcGFudE9wdGlvbnMpIHtcbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRXaXRoTmV3S2V5KFxuICAgICAgb3B0aW9ucy50cFNoYXJlZEtleUlkLFxuICAgICAgb3B0aW9ucy5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hhcmVkS2V5LFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICB0cElkOiBvcHRpb25zLnRwSWQsXG4gICAgICAgIHRwU2hhcmVkS2V5SWQ6IG9wdGlvbnMudHBTaGFyZWRLZXlJZCxcbiAgICAgICAgdHBTaGFyZWRLZXlXcmFwcGVkU2hhcmVkS2V5OiBzaGFyZWRLZXkud3JhcHBlZEtleSxcbiAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogc2hhcmVkS2V5LmNpcGhlcixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZVBhcnRpY2lwYW50KFxuICAgIG9wdGlvbnM6IFBhcnRpY2lwYW50T3B0aW9ucyxcbiAgICBzaGFyZWRLZXlJZDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KHNoYXJlZEtleUlkKTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIG9wdGlvbnMuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2hhcmVkS2V5LFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICB0cElkOiBvcHRpb25zLnRwSWQsXG4gICAgICAgIHNoYXJlZEtleUlkLFxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ3JlYXRlQ2xhaW1hbnQob3B0aW9uczogQ3JlYXRlQ2xhaW1hbnRPcHRpb25zKSB7XG4gICAgY29uc3QgeyBtdXRhdGlvbklucHV0IH0gPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVQYXJ0aWNpcGFudChvcHRpb25zKTtcbiAgICByZXR1cm4gbXV0YXRpb25JbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZUNsYWltYW50KFxuICAgIG9wdGlvbnM6IFVwZGF0ZUNsYWltYW50T3B0aW9ucyxcbiAgICBzaGFyZWRLZXlJZDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IHsgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlUGFydGljaXBhbnQoXG4gICAgICBvcHRpb25zLFxuICAgICAgc2hhcmVkS2V5SWRcbiAgICApO1xuXG4gICAgcmV0dXJuIG11dGF0aW9uSW5wdXQ7XG4gIH1cblxuICBhc3luYyBwcmVwYXJlUmVjZWl2ZUNsYWltMihzY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIC8vIEdldCBhbGwgdGhlIHNoYXJlZCBpdGVtc1xuICAgIGNvbnN0IHNoYXJlZFNjZW5hcmlvID0gKFxuICAgICAgYXdhaXQgdGhpcy5nZXRTaGFyZWRTY2VuYXJpbyhzY2VuYXJpb0lkLCBzaGFyZWRDbGFpbUlkKVxuICAgICkuc2hhcmVkU2NlbmFyaW87XG5cbiAgICBpZiAoc2hhcmVkU2NlbmFyaW8uc3RhdGUgIT09IFNjZW5hcmlvU3RhdGUuQVBQUk9WRUQpIHtcbiAgICAgIHRocm93Q2xhaW1Ob3RBcHByb3ZlZCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcHJvdmFscyA9IG1hcEVkZ2VzKFxuICAgICAgc2hhcmVkU2NlbmFyaW8uc2hhcmVkQ2xhaW0uYXNDbGFpbVJlY2VpdmVyLmFwcHJvdmFsc1xuICAgICk7XG5cbiAgICBjb25zdCBhc3NlbWJseUtleSA9IGF3YWl0IHRoaXMucmVjb3ZlckFzc2VtYmx5S2V5KGFwcHJvdmFscyk7XG5cbiAgICAvLyBXcmFwIGFzc2VtYmx5IGtleSB3aXRoIHNoYXJlZCBrZXkuXG4gICAgLy8/Pz9cbiAgICAvLyBUaGlzIHNoYXJlZEtleSBpcyBjcmVhdGVkIGp1c3QgZm9yIHRoaXMgc2NlbmFyaW8uIEl0J3Mgd3JhcHBlZCBieSB0aGUgdHBTaGFyZWRLZXkuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICBzaGFyZWRTY2VuYXJpby5hc1JlY2VpdmVyLnNoYXJlZEtleS5pZFxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXlXcmFwcGVkQXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NlbmFyaW9DbGFpbUlkOiBzaGFyZWRDbGFpbUlkLFxuICAgICAgc2hhcmVkS2V5V3JhcHBlZEFzc2VtYmx5S2V5LFxuICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgIGFzc2VtYmx5S2V5SWQ6IHNoYXJlZFNjZW5hcmlvLnNoYXJlZENsYWltLmFzQ2xhaW1SZWNlaXZlci5hc3NlbWJseUtleUlkLFxuICAgIH07XG4gIH1cblxuICAvLyBhc3luYyBwcmVwYXJlUmVjZWl2ZUNsYWltKHNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gIC8vICAgLy8gR2V0IGFsbCB0aGUgc2hhcmVkIGl0ZW1zXG4gIC8vICAgY29uc3Qgc2hhcmVkU2NlbmFyaW8gPSAoXG4gIC8vICAgICBhd2FpdCB0aGlzLmdldFNoYXJlZFNjZW5hcmlvKHNjZW5hcmlvSWQsIHNoYXJlZENsYWltSWQpXG4gIC8vICAgKS5zaGFyZWRTY2VuYXJpbztcblxuICAvLyAgIGlmIChzaGFyZWRTY2VuYXJpby5zdGF0ZSAhPT0gU2NlbmFyaW9TdGF0ZS5BUFBST1ZFRCkge1xuICAvLyAgICAgdGhyb3dDbGFpbU5vdEFwcHJvdmVkKCk7XG4gIC8vICAgfVxuXG4gIC8vICAgY29uc3QgYXBwcm92YWxzID0gbWFwRWRnZXMoXG4gIC8vICAgICBzaGFyZWRTY2VuYXJpby5zaGFyZWRDbGFpbS5hc0NsYWltUmVjZWl2ZXIuYXBwcm92YWxzXG4gIC8vICAgKTtcblxuICAvLyAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5yZWNvdmVyQXNzZW1ibHlLZXkoYXBwcm92YWxzKTtcblxuICAvLyAgIC8vIERlY3J5cHQgYWxsIGl0ZW1zXG4gIC8vICAgY29uc3QgcmVjZWl2ZXJEaXJlY3RvcmllcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAvLyAgICAgc2hhcmVkU2NlbmFyaW8uYXNSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRGlyZWN0b3JpZXMuZWRnZXNcbiAgLy8gICAgICAgLm1hcCgoZWRnZSkgPT4gZWRnZS5ub2RlKVxuICAvLyAgICAgICAubWFwKGFzeW5jIChyZWNlaXZlckRpcmVjdG9yeSkgPT4ge1xuICAvLyAgICAgICAgIGNvbnN0IHdyYXBwZWRJdGVtS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAvLyAgICAgICAgICAgYXNzZW1ibHlLZXksXG4gIC8vICAgICAgICAgICByZWNlaXZlckRpcmVjdG9yeS53cmFwcGVkSXRlbUtleVxuICAvLyAgICAgICAgICk7XG5cbiAgLy8gICAgICAgICByZXR1cm4ge1xuICAvLyAgICAgICAgICAgcmVjZWl2ZXJEaXJlY3RvcnlJZDogcmVjZWl2ZXJEaXJlY3RvcnkuaWQsXG4gIC8vICAgICAgICAgICAvLyBMb29rcyBsaWtlIHJlY2VpdmVyRGlyZWN0b3J5LndyYXBwZWRJdGVtS2V5IGhhcyBubyBvdGhlciBjb250ZW50IGluIHNpZGUgaXQgZXhjZXB0IGEgd3JhcHBlZCBrZXkuXG4gIC8vICAgICAgICAgICAvLyBTbyB3ZSBjYW4gdHVybiB0aGlzIGluIHRvIGEgZG91Ymx5IHdyYXBwZWQga2V5IGFuZCBqdXN0IHJlbGVhc2UgdGhlIGFzc2VtYmx5IGtleS5cblxuICAvLyAgICAgICAgICAgcmVjZWl2ZXJTaGFyZWRLZXlXcmFwcGVkSXRlbUtleTogd3JhcHBlZEl0ZW1LZXksIC8vIHRoZSB3cmFwcGVkSXRlbUtleSBpcyBhbHJlYWR5IHdyYXBwZWQgYnkgcmVjZWl2ZXJTaGFyZWRLZXlcbiAgLy8gICAgICAgICB9O1xuICAvLyAgICAgICB9KVxuICAvLyAgICk7XG5cbiAgLy8gICByZXR1cm4ge1xuICAvLyAgICAgc2NlbmFyaW9DbGFpbUlkOiBzaGFyZWRDbGFpbUlkLFxuICAvLyAgICAgcmVjZWl2ZXJEaXJlY3RvcmllcyxcbiAgLy8gICB9O1xuICAvLyB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvdmVyQXNzZW1ibHlLZXkoXG4gICAgYXBwcm92YWxzOiBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZWRBcHByb3ZhbE5vZGVbXVxuICApIHtcbiAgICBjb25zdCBwYXJ0aWFscyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBwcm92YWxzLm1hcCgoYXBwcm92YWwpID0+XG4gICAgICAgIHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmc8UGFydGlhbEFzc2VtYmx5S2V5PihcbiAgICAgICAgICBhcHByb3ZhbC5weGsuaWQsXG4gICAgICAgICAgYXBwcm92YWwucmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXNDbGFpbUFwcHJvdmVycyhcbiAgICBzaGFyZWRTY2VuYXJpb0lkLFxuICAgIGNsYWltSWQsXG4gICAgc3RhdGU6IFRwQ2xhaW1BcHByb3ZlclN0YXRlXG4gICkge1xuICAgIGNvbnN0IHNoYXJlZFNjZW5hcmlvID0gKFxuICAgICAgYXdhaXQgdGhpcy5nZXRTaGFyZWRTY2VuYXJpbyhzaGFyZWRTY2VuYXJpb0lkLCBjbGFpbUlkKVxuICAgICkuc2hhcmVkU2NlbmFyaW87XG5cbiAgICByZXR1cm4gbWFwRWRnZXMoc2hhcmVkU2NlbmFyaW8uc2hhcmVkQ2xhaW0uY2xhaW0uYXNDbGFpbUFwcHJvdmVycykuZmlsdGVyKFxuICAgICAgKGFzQ2xhaW1BcHByb3ZlcikgPT4gYXNDbGFpbUFwcHJvdmVyLnN0YXRlID09PSBzdGF0ZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVBcHByb3ZlQ2xhaW1NdXRhdGlvbnMoXG4gICAgc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLFxuICAgIGNsYWltSWQ6IHN0cmluZ1xuICApIHtcbiAgICAvLyBUaGUgY3VycmVudCB1c2VyIG1heSBiZSBhY3RpbmcgYXMgYXBwcm92ZXJzIGluIG11bHRpcGxlIHN1Yi1hc3NlbWJsaWVzIHNvXG4gICAgLy8gd2UgYXBwcm92ZSB0aGVtIGFsbC5cbiAgICBjb25zdCBhc0NsYWltQXBwcm92ZXJzID0gYXdhaXQgdGhpcy5hc0NsYWltQXBwcm92ZXJzKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIGNsYWltSWQsXG4gICAgICBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEXG4gICAgKTtcblxuICAgIHJldHVybiBhc0NsYWltQXBwcm92ZXJzLm1hcChcbiAgICAgIGFzeW5jIChhc0NsYWltQXBwcm92ZXIpID0+XG4gICAgICAgIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICBtdXRhdGlvbjogQXBwcm92ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVBcHByb3ZlQ2xhaW0oYXNDbGFpbUFwcHJvdmVyKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVBcHByb3ZlQ2xhaW0oXG4gICAgYXNDbGFpbUFwcHJvdmVyOiBTaGFyZWRUcENsYWltQXBwcm92ZXJOb2RlXG4gICkge1xuICAgIGNvbnN0IHJlY2VpdmVyQXBwcm92YWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXBFZGdlcyhhc0NsYWltQXBwcm92ZXIucmVjZWl2ZXJBcHByb3ZhbHMpLm1hcCgocmVjZWl2ZXJBcHByb3ZhbCkgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlUmVjZWl2ZXJBcHByb3ZhbCh7XG4gICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbElkOiByZWNlaXZlckFwcHJvdmFsLmlkLFxuICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxQeGtJZDogcmVjZWl2ZXJBcHByb3ZhbC5weGsuaWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uOlxuICAgICAgICAgICAgYXNDbGFpbUFwcHJvdmVyLnNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbixcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYWltQXBwcm92ZXJJZDogYXNDbGFpbUFwcHJvdmVyLmlkLFxuICAgICAgcmVjZWl2ZXJBcHByb3ZhbHMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY2VpdmVyQXBwcm92YWwob3B0aW9uczoge1xuICAgIHJlY2VpdmVyQXBwcm92YWxJZDogc3RyaW5nO1xuICAgIHJlY2VpdmVyQXBwcm92YWxQeGtJZDogc3RyaW5nO1xuICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbjogSlNPTk9iamVjdDtcbiAgfSkge1xuICAgIHJldHVybiB7XG4gICAgICByZWNlaXZlckFwcHJvdmFsSWQ6IG9wdGlvbnMucmVjZWl2ZXJBcHByb3ZhbElkLFxuICAgICAgLy8gVE9ETyBhbGxvdyBzZW5kaW5nIG9mIG1lc3NhZ2VzIHRvIHJlY2VpdmVyLlxuICAgICAgcmVjZWl2ZXJDaXBoZXI6ICcnLFxuICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBvcHRpb25zLnJlY2VpdmVyQXBwcm92YWxQeGtJZCxcbiAgICAgICAgb3B0aW9ucy5zaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb25cbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlamVjdENsYWltTXV0YXRpb25zKFxuICAgIHNoYXJlZFNjZW5hcmlvSWQ6IHN0cmluZyxcbiAgICBjbGFpbUlkOiBzdHJpbmdcbiAgKSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgdXNlciBtYXkgYmUgYWN0aW5nIGFzIGFwcHJvdmVycyBpbiBtdWx0aXBsZSBzdWItYXNzZW1ibGllcyBzb1xuICAgIC8vIHdlIHJlamVjdCB0aGVtIGFsbC5cbiAgICBjb25zdCBhc0NsYWltQXBwcm92ZXJzID0gYXdhaXQgdGhpcy5hc0NsYWltQXBwcm92ZXJzKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIGNsYWltSWQsXG4gICAgICBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEXG4gICAgKTtcblxuICAgIHJldHVybiBhc0NsYWltQXBwcm92ZXJzLm1hcChcbiAgICAgIGFzeW5jIChhc0NsYWltQXBwcm92ZXIpID0+XG4gICAgICAgIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICBtdXRhdGlvbjogUmVqZWN0U2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IHsgY2xhaW1BcHByb3ZlcklkOiBhc0NsYWltQXBwcm92ZXIuaWQgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
679
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zY2VuYXJpby9zY2VuYXJpby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLFFBQVEsRUFHUixhQUFhLEVBR2Isb0JBQW9CLEVBRXJCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXRFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBQ2hDLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN2QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxh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QUFDO1FBQ0osQ0FBQztLQUFBO0lBRWEsMkJBQTJCLENBQ3ZDLGdCQUF3QixFQUN4QixPQUFlOztZQUVmLDRFQUE0RTtZQUM1RSxzQkFBc0I7WUFDdEIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbEQsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxvQkFBb0IsQ0FBQyxPQUFPLENBQzdCLENBQUM7WUFFRixPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FDekIsQ0FBTyxlQUFlLEVBQUUsRUFBRTtnQkFDeEIsT0FBQSxJQUFJLFVBQVUsQ0FBQztvQkFDYixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxFQUFFLEVBQUU7cUJBQy9DO2lCQUNGLENBQUMsQ0FBQTtjQUFBLENBQ0wsQ0FBQztRQUNKLENBQUM7S0FBQTtDQUNGLENBQUE7QUEvNEJlLGlDQUFpQixHQUFHLFdBQVcsQ0FBQzs7O1lBZC9DLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBdEU4QixNQUFNO1lBQWhCLFFBQVE7WUFrQnBCLGVBQWU7WUFGZixXQUFXO1lBV1gsMEJBQTBCO1lBWjFCLGlCQUFpQjs7QUF3RGIsZUFBZTtJQU4zQixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsZUFBZSxDQTA1QjNCO1NBMTVCWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24sIExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7XG4gIEFjY2Vzc1JvbGVDaG9pY2UsXG4gIEpTT05PYmplY3QsXG4gIG1hcEVkZ2VzLFxuICBTY2VuYXJpb05vZGUsXG4gIFNjZW5hcmlvUmVjZWl2ZXJOb2RlLFxuICBTY2VuYXJpb1N0YXRlLFxuICBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZWRBcHByb3ZhbE5vZGUsXG4gIFNoYXJlZFRwQ2xhaW1BcHByb3Zlck5vZGUsXG4gIFRwQ2xhaW1BcHByb3ZlclN0YXRlLFxuICBUcE5vZGVcbn0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSXRlbVNlcnZpY2UgfSBmcm9tICcuLi9pdGVtL2l0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBJZEtleVBhaXIgfSBmcm9tICcuLi9pdGVtL2l0ZW0udHlwZXMnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRwc0tleXNRdWVyeSB9IGZyb20gJy4uL3RwLWFzc2VtYmx5L3RwLWFzc2VtYmx5LnByaXZhdGUuZ3FsJztcbmltcG9ydCB7IFBhcnRpYWxBc3NlbWJseUtleSB9IGZyb20gJy4uL3RwLWFzc2VtYmx5L3RwLWFzc2VtYmx5LnR5cGVzJztcbmltcG9ydCB7XG4gIEtjQmFkQXJndW1lbnRFeGNlcHRpb24sXG4gIEtjQmFkU3RhdGVFeGNlcHRpb25cbn0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7IGFzc2VydF94b3IgfSBmcm9tICcuLi9fY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IFNjZW5hcmlvQXNzZW1ibHlDb250cm9sbGVyIH0gZnJvbSAnLi9zY2VuYXJpby5jb250cm9sbGVyJztcbmltcG9ydCB7XG4gIEFwcHJvdmVTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gIENhbmNlbFNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgQ3JlYXRlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBDcmVhdGVTY2VuYXJpb011dGF0aW9uLFxuICBEZWJ1Z0V4cGlyZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgRGVsZXRlU2NlbmFyaW9NdXRhdGlvbixcbiAgUmVjZWl2ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgUmVqZWN0U2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBVcGRhdGVTY2VuYXJpb011dGF0aW9uXG59IGZyb20gJy4vc2NlbmFyaW8uZ3FsJztcbmltcG9ydCB7IFNjZW5hcmlvUXVlcnksIFNoYXJlZFNjZW5hcmlvUXVlcnkgfSBmcm9tICcuL3NjZW5hcmlvLnByaXZhdGUuZ3FsJztcbmltcG9ydCB7XG4gIENyZWF0ZUNsYWltYW50T3B0aW9ucyxcbiAgQ3JlYXRlUGFydGljaXBhbnRPcHRpb25zLFxuICBDcmVhdGVSZWNlaXZlck9wdGlvbnMsXG4gIENyZWF0ZVNjZW5hcmlvT3B0aW9ucyxcbiAgUGFydGljaXBhbnRPcHRpb25zLFxuICBSZWNlaXZlckRpcmVjdG9yeU9wdGlvbnMsXG4gIFJlY2VpdmVyRmlsZU9wdGlvbnMsXG4gIFJlY2VpdmVySXRlbU9wdGlvbnMsXG4gIFJlc2V0U2NlbmFyaW9PcHRpb25zLFxuICBVcGRhdGVDbGFpbWFudE9wdGlvbnMsXG4gIFVwZGF0ZVJlY2VpdmVyT3B0aW9ucyxcbiAgVXBkYXRlU2NlbmFyaW9PcHRpb25zXG59IGZyb20gJy4vc2NlbmFyaW8udHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dDbGFpbUlkTWlzbWF0Y2goKSB7XG4gIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICdjbGFpbUlkIGRvZXMgbm90IG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgY2xhaW1JZCBvZiB0aGUgc2NlbmFyaW8nXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0NsYWltTm90QXBwcm92ZWQoKSB7XG4gIHRocm93IG5ldyBLY0JhZFN0YXRlRXhjZXB0aW9uKCdTY2VuYXJpbyBjbGFpbSBoYXMgbm90IGJlZW4gYXBwcm92ZWQnKTtcbn1cblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjZW5hcmlvU2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZW1ibHlDb250cm9sbGVyOiBTY2VuYXJpb0Fzc2VtYmx5Q29udHJvbGxlcixcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBTTElQMzlfUEFTU1BIUkFTRSA9ICdsaWZlcmVhZHknO1xuXG4gIHByaXZhdGUgcHJlcGFyZUFkZFJlY2VpdmVyRGlyZWN0b3J5ID0gdGhpcy5wcmVwYXJlUmVjZWl2ZXJEaXJlY3Rvcnk7XG4gIHByaXZhdGUgcHJlcGFyZVVwZGF0ZVJlY2VpdmVyRGlyZWN0b3J5ID0gdGhpcy5wcmVwYXJlUmVjZWl2ZXJEaXJlY3Rvcnk7XG5cbiAgcHJpdmF0ZSBwcmVwYXJlQWRkUmVjZWl2ZXJGaWxlID0gdGhpcy5wcmVwYXJlUmVjZWl2ZXJGaWxlO1xuICBwcml2YXRlIHByZXBhcmVVcGRhdGVSZWNlaXZlckZpbGUgPSB0aGlzLnByZXBhcmVSZWNlaXZlckZpbGU7XG5cbiAgLy8gU2NlbmFyaW9zXG4gIGFzeW5jIGNyZWF0ZVNjZW5hcmlvKG9wdGlvbnM6IENyZWF0ZVNjZW5hcmlvT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZVNjZW5hcmlvTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlU2NlbmFyaW9NdXRhdGlvbihvcHRpb25zOiBDcmVhdGVTY2VuYXJpb09wdGlvbnMpIHtcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUNyZWF0ZVNjZW5hcmlvTXV0YXRpb24ob3B0aW9ucyk7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVTY2VuYXJpb011dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVNjZW5hcmlvKG9wdGlvbnM6IFVwZGF0ZVNjZW5hcmlvT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnVwZGF0ZVNjZW5hcmlvTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlU2NlbmFyaW9NdXRhdGlvbihvcHRpb25zOiBVcGRhdGVTY2VuYXJpb09wdGlvbnMpIHtcbiAgICBjb25zdCBzY2VuYXJpbyA9IChhd2FpdCB0aGlzLmdldFNjZW5hcmlvKG9wdGlvbnMuc2NlbmFyaW9JZCkpLnNjZW5hcmlvO1xuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlU2NlbmFyaW8ob3B0aW9ucywgc2NlbmFyaW8pO1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlU2NlbmFyaW9NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZXNldFNjZW5hcmlvKG9wdGlvbnM6IFJlc2V0U2NlbmFyaW9PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMucmVzZXRTY2VuYXJpb011dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0U2NlbmFyaW9NdXRhdGlvbihvcHRpb25zOiBSZXNldFNjZW5hcmlvT3B0aW9ucykge1xuICAgIGNvbnN0IHNjZW5hcmlvID0gKGF3YWl0IHRoaXMuZ2V0U2NlbmFyaW8ob3B0aW9ucy5zY2VuYXJpb0lkKSkuc2NlbmFyaW87XG5cbiAgICBjb25zdCB7IGFzc2VtYmx5IH0gPSBzY2VuYXJpbztcblxuICAgIC8vIEp1c3QgbmVlZCB0byBkbyBhbiB1cGRhdGUgd2l0aG91dCBjaGFuZ2luZyBhcHByb3ZlcnMuIFRoaXMgd2lsbCByZWNyZWF0ZVxuICAgIC8vIGFsbCBhc3NlbWJseSBrZXlzLlxuICAgIGNvbnN0IHVwZGF0ZVN1YkFzc2VtYmxpZXMgPSBtYXBFZGdlcyhhc3NlbWJseS5zdWJBc3NlbWJsaWVzKS5tYXAoKHNhKSA9PiB7XG4gICAgICBjb25zdCBhcHByb3ZlclRwcyA9IG1hcEVkZ2VzKHNhLmFwcHJvdmVycykubWFwKChhcHByb3ZlcikgPT4gKHtcbiAgICAgICAgdHBJZDogYXBwcm92ZXIudHAuaWQsXG4gICAgICB9KSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBzYS5pZCxcbiAgICAgICAgcXVvcnVtOiBzYS5xdW9ydW0sXG4gICAgICAgIHNpbmdsZVJlamVjdDogc2Euc2luZ2xlUmVqZWN0LFxuICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbjogc2Euc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICAgIGFwcHJvdmVyVHBzLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlU2NlbmFyaW8oXG4gICAgICB7XG4gICAgICAgIHNjZW5hcmlvSWQ6IG9wdGlvbnMuc2NlbmFyaW9JZCxcbiAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5lbmFibGVkLFxuICAgICAgICB1cGRhdGVBc3NlbWJseToge1xuICAgICAgICAgIHF1b3J1bTogYXNzZW1ibHkucXVvcnVtLFxuICAgICAgICAgIHNpbmdsZVJlamVjdDogYXNzZW1ibHkuc2luZ2xlUmVqZWN0LFxuICAgICAgICAgIHVwZGF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2NlbmFyaW9cbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVTY2VuYXJpb011dGF0aW9uLCAvLyB1cGRhdGluZyBzY2VuYXJpbyByZXNldHMgaXRcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVTY2VuYXJpbyhzY2VuYXJpb0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5sckdyYXBoUUwubHJNdXRhdGUodGhpcy5kZWxldGVTY2VuYXJpb011dGF0aW9uKHNjZW5hcmlvSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNjZW5hcmlvTXV0YXRpb24oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVTY2VuYXJpb011dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7IGlucHV0OiB7IHNjZW5hcmlvSWQgfSB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2xhaW1zXG4gIGFzeW5jIGNyZWF0ZUNsYWltKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZUNsYWltTXV0YXRpb24oc2NlbmFyaW9JZCkpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQ2xhaW1NdXRhdGlvbihzY2VuYXJpb0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogeyBpbnB1dDogeyBzY2VuYXJpb0lkIH0gfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbENsYWltKGNsYWltSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNhbmNlbENsYWltTXV0YXRpb24oY2xhaW1JZCkpO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsQ2xhaW1NdXRhdGlvbihjbGFpbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENhbmNlbFNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogeyBpbnB1dDogeyBjbGFpbUlkIH0gfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlamVjdENsYWltKHNoYXJlZFNjZW5hcmlvSWQ6IHN0cmluZywgY2xhaW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMucmVqZWN0Q2xhaW1NdXRhdGlvbihzaGFyZWRTY2VuYXJpb0lkLCBjbGFpbUlkKSk7XG4gIH1cblxuICBhc3luYyByZWplY3RDbGFpbU11dGF0aW9uKHNoYXJlZFNjZW5hcmlvSWQ6IHN0cmluZywgY2xhaW1JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbXV0YXRpb25zID0gYXdhaXQgdGhpcy5wcmVwYXJlUmVqZWN0Q2xhaW1NdXRhdGlvbnMoXG4gICAgICBzaGFyZWRTY2VuYXJpb0lkLFxuICAgICAgY2xhaW1JZFxuICAgICk7XG4gICAgcmV0dXJuIExyTWVyZ2VkTXV0YXRpb24uY3JlYXRlKGF3YWl0IFByb21pc2UuYWxsKG11dGF0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgYXBwcm92ZUNsYWltKHNoYXJlZFNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gICAgLy8gVE9ETyB0aGlzIG5lZWRzIGEgY2FzdCBzbyB0aGUgcmVzdWx0IGlzIG5vdCBBTlkuXG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKFxuICAgICAgdGhpcy5hcHByb3ZlQ2xhaW1NdXRhdGlvbihzaGFyZWRTY2VuYXJpb0lkLCBzaGFyZWRDbGFpbUlkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBhcHByb3ZlQ2xhaW1NdXRhdGlvbihzaGFyZWRTY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG11dGF0aW9ucyA9IGF3YWl0IHRoaXMucHJlcGFyZUFwcHJvdmVDbGFpbU11dGF0aW9ucyhcbiAgICAgIHNoYXJlZFNjZW5hcmlvSWQsXG4gICAgICBzaGFyZWRDbGFpbUlkXG4gICAgKTtcbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoYXdhaXQgUHJvbWlzZS5hbGwobXV0YXRpb25zKSk7XG4gIH1cblxuICBhc3luYyByZWNlaXZlQ2xhaW0oc2NlbmFyaW9JZDogc3RyaW5nLCBzaGFyZWRDbGFpbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5yZWNlaXZlQ2xhaW0yTXV0YXRpb24oc2NlbmFyaW9JZCwgc2hhcmVkQ2xhaW1JZCkpO1xuICB9XG5cbiAgYXN5bmMgcmVjZWl2ZUNsYWltMk11dGF0aW9uKHNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBSZWNlaXZlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVSZWNlaXZlQ2xhaW0yKHNjZW5hcmlvSWQsIHNoYXJlZENsYWltSWQpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlYnVnRXhwaXJlQ2xhaW0oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuZGVidWdFeHBpcmVDbGFpbU11dGF0aW9uKHNjZW5hcmlvSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGRlYnVnRXhwaXJlQ2xhaW1NdXRhdGlvbihzY2VuYXJpb0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlYnVnRXhwaXJlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7IHNjZW5hcmlvSWQgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgYXN5bmMgZ2V0U2NlbmFyaW8oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnkoe1xuICAgICAgcXVlcnk6IFNjZW5hcmlvUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHsgc2NlbmFyaW9JZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRTaGFyZWRTY2VuYXJpbyhzY2VuYXJpb0lkOiBzdHJpbmcsIGNsYWltSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXQgPSBhd2FpdCB0aGlzLnF1ZXJ5KHtcbiAgICAgIHF1ZXJ5OiBTaGFyZWRTY2VuYXJpb1F1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHNjZW5hcmlvSWQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKGNsYWltSWQgJiYgcmV0LnNoYXJlZFNjZW5hcmlvLnNoYXJlZENsYWltLmlkICE9PSBjbGFpbUlkKSB7XG4gICAgICB0aHJvd0NsYWltSWRNaXNtYXRjaCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFBhcnRpY2lwYW50VHBzS2V5cyhvcHRpb25zOiBDcmVhdGVQYXJ0aWNpcGFudE9wdGlvbnNbXSkge1xuICAgIGNvbnN0IHRwSWRzID0gb3B0aW9ucy5tYXAoKHgpID0+IHgudHBJZCk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIHJldHVybiB0cHM7XG4gIH1cblxuICBwcml2YXRlIGZpbGxUcFNoYXJlZEtleUlkKFxuICAgIG9wdGlvbnM6IENyZWF0ZVBhcnRpY2lwYW50T3B0aW9uc1tdLFxuICAgIHRwczogVHBOb2RlW11cbiAgKSB7XG4gICAgb3B0aW9ucy5mb3JFYWNoKChwYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgaWYgKCFwYXJ0aWNpcGFudC50cFNoYXJlZEtleUlkKSB7XG4gICAgICAgIGNvbnN0IHRwID0gdHBzLmZpbmQoKHgpID0+IHguaWQgPT09IHBhcnRpY2lwYW50LnRwSWQpO1xuICAgICAgICBwYXJ0aWNpcGFudC50cFNoYXJlZEtleUlkID1cbiAgICAgICAgICB0cC5jdXJyZW50VXNlclNoYXJlZEtleS51c2VyU2hhcmVkS2V5LnNoYXJlZEtleS5pZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZVNjZW5hcmlvTXV0YXRpb24ob3B0aW9uczogQ3JlYXRlU2NlbmFyaW9PcHRpb25zKSB7XG4gICAgY29uc3QgeyBhc3NlbWJseUtleSwgbXV0YXRpb25JbnB1dDogY3JlYXRlQXNzZW1ibHkgfSA9XG4gICAgICBhd2FpdCB0aGlzLmFzc2VtYmx5Q29udHJvbGxlci5wcmVwYXJlQ3JlYXRlKG9wdGlvbnMuY3JlYXRlQXNzZW1ibHkpO1xuXG4gICAgY29uc3QgY3JlYXRlUmVjZWl2ZXJzT3B0aW9ucyA9IG9wdGlvbnMuY3JlYXRlUmVjZWl2ZXJzIHx8IFtdO1xuICAgIGNvbnN0IGNyZWF0ZUNsYWltYW50c09wdGlvbnMgPSBvcHRpb25zLmNyZWF0ZUNsYWltYW50cyB8fCBbXTtcblxuICAgIC8vIEZldGNoIGFsbCB0aGUgVFBzIHNvIHdlIGRvbid0IGhhdmUgdG8gcGFzcyBpbiB0cFNoYXJlZEtleUlkXG4gICAgY29uc3QgY3JlYXRQYXJ0aWNpcGFudHNPcHRpb25zID0gY3JlYXRlUmVjZWl2ZXJzT3B0aW9ucy5jb25jYXQoXG4gICAgICBjcmVhdGVDbGFpbWFudHNPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IHRwcyA9IGF3YWl0IHRoaXMuZ2V0UGFydGljaXBhbnRUcHNLZXlzKGNyZWF0UGFydGljaXBhbnRzT3B0aW9ucyk7XG5cbiAgICB0aGlzLmZpbGxUcFNoYXJlZEtleUlkKGNyZWF0UGFydGljaXBhbnRzT3B0aW9ucywgdHBzKTtcblxuICAgIGNvbnN0IGNyZWF0ZVJlY2VpdmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY3JlYXRlUmVjZWl2ZXJzT3B0aW9ucy5tYXAoKHJlY2VpdmVyKSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVDcmVhdGVSZWNlaXZlcihyZWNlaXZlciwgYXNzZW1ibHlLZXkpXG4gICAgICApXG4gICAgKTtcblxuICAgIGNvbnN0IGNyZWF0ZUNsYWltYW50cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY3JlYXRlQ2xhaW1hbnRzT3B0aW9ucy5tYXAoKHgpID0+IHRoaXMucHJlcGFyZUNyZWF0ZUNsYWltYW50KHgpKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogb3B0aW9ucy5lbmFibGVkLFxuICAgICAgaW5hY3RpdmVTZWNvbmRzOiBvcHRpb25zLmluYWN0aXZlU2Vjb25kcyxcbiAgICAgIGNyZWF0ZUFzc2VtYmx5LFxuICAgICAgY3JlYXRlUmVjZWl2ZXJzLFxuICAgICAgY3JlYXRlQ2xhaW1hbnRzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVVcGRhdGVTY2VuYXJpbyhcbiAgICBvcHRpb25zOiBVcGRhdGVTY2VuYXJpb09wdGlvbnMsXG4gICAgc2NlbmFyaW86IFNjZW5hcmlvTm9kZVxuICApIHtcbiAgICBsZXQgYXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShcbiAgICAgIHNjZW5hcmlvLmFzc2VtYmx5LmFzc2VtYmx5S2V5LmlkXG4gICAgKTtcblxuICAgIGNvbnN0IHVwZGF0ZUFzc2VtYmx5ID0gb3B0aW9ucy51cGRhdGVBc3NlbWJseVxuICAgICAgPyBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEFzc2VtYmx5IGtleSBpcyBhbHdheXMgcm90YXRlZCB3aGVuIHVwZGF0aW5nIGFzc2VtYmx5LlxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYXNzZW1ibHlDb250cm9sbGVyLnByZXBhcmVVcGRhdGUoXG4gICAgICAgICAgICBvcHRpb25zLnVwZGF0ZUFzc2VtYmx5LFxuICAgICAgICAgICAgc2NlbmFyaW8uYXNzZW1ibHlcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIFVzZSBuZXcgYXNzZW1ibHkga2V5LlxuICAgICAgICAgIGFzc2VtYmx5S2V5ID0gcmVzdWx0LmFzc2VtYmx5S2V5O1xuICAgICAgICAgIHJldHVybiByZXN1bHQubXV0YXRpb25JbnB1dDtcbiAgICAgICAgfSkoKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjcmVhdGVSZWNlaXZlcnNPcHRpb25zID0gb3B0aW9ucy5jcmVhdGVSZWNlaXZlcnMgfHwgW107XG4gICAgY29uc3QgY3JlYXRlQ2xhaW1hbnRzT3B0aW9ucyA9IG9wdGlvbnMuY3JlYXRlQ2xhaW1hbnRzIHx8IFtdO1xuXG4gICAgLy8gRmV0Y2ggYWxsIHRoZSBUUHMgc28gd2UgZG9uJ3QgaGF2ZSB0byBwYXNzIGluIHRwU2hhcmVkS2V5SWRcbiAgICBjb25zdCBjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMgPSBjcmVhdGVSZWNlaXZlcnNPcHRpb25zLmNvbmNhdChcbiAgICAgIGNyZWF0ZUNsYWltYW50c09wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgdHBzID0gYXdhaXQgdGhpcy5nZXRQYXJ0aWNpcGFudFRwc0tleXMoY3JlYXRQYXJ0aWNpcGFudHNPcHRpb25zKTtcblxuICAgIHRoaXMuZmlsbFRwU2hhcmVkS2V5SWQoY3JlYXRQYXJ0aWNpcGFudHNPcHRpb25zLCB0cHMpO1xuXG4gICAgY29uc3QgY3JlYXRlUmVjZWl2ZXJzID1cbiAgICAgIG9wdGlvbnMuY3JlYXRlUmVjZWl2ZXJzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMuY3JlYXRlUmVjZWl2ZXJzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnByZXBhcmVDcmVhdGVSZWNlaXZlcih4LCBhc3NlbWJseUtleSlcbiAgICAgICAgKVxuICAgICAgKSk7XG5cbiAgICBjb25zdCBleGlzdGluZ1JlY2VpdmVycyA9IG1hcEVkZ2VzKHNjZW5hcmlvLnJlY2VpdmVycyk7XG4gICAgbGV0IHVwZGF0ZVJlY2VpdmVycyA9IG9wdGlvbnMudXBkYXRlUmVjZWl2ZXJzXG4gICAgICA/IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIG9wdGlvbnMudXBkYXRlUmVjZWl2ZXJzLm1hcCgodXBkYXRlUmVjZWl2ZXIpID0+IHtcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIHJlY2VpdmVyIHdlIGFyZSB1cGRhdGluZ1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdSZWNlaXZlciA9IGV4aXN0aW5nUmVjZWl2ZXJzLmZpbmQoXG4gICAgICAgICAgICAgICh4KSA9PiB4LnRwLmlkID09PSB1cGRhdGVSZWNlaXZlci50cElkXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmVwYXJlVXBkYXRlUmVjZWl2ZXIoXG4gICAgICAgICAgICAgIHVwZGF0ZVJlY2VpdmVyLFxuICAgICAgICAgICAgICBhc3NlbWJseUtleSxcbiAgICAgICAgICAgICAgZXhpc3RpbmdSZWNlaXZlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICA6IFtdO1xuXG4gICAgLy8gRmlsbCBpbiBhbnkgbWlzc2luZyByZWNlaXZlcnMgd2hlbiB1cGRhdGluZyBhc3NlbWJseS5cbiAgICBpZiAob3B0aW9ucy51cGRhdGVBc3NlbWJseSkge1xuICAgICAgLy8gRmlsdGVyIG91dCB0aGUgcmVjZWl2ZXJzIHRoYXQgd2lsbCBiZSBkZWxldGVkIG9yIGFscmVhZHkgdXBkYXRlZC5cbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gZXhpc3RpbmdSZWNlaXZlcnMuZmlsdGVyKFxuICAgICAgICAoZXhpc3RpbmdSZWNlaXZlcikgPT5cbiAgICAgICAgICAhKG9wdGlvbnMuZGVsZXRlUmVjZWl2ZXJzIHx8IFtdKS5pbmNsdWRlcyhleGlzdGluZ1JlY2VpdmVyLnRwLmlkKSAmJlxuICAgICAgICAgICF1cGRhdGVSZWNlaXZlcnMuc29tZShcbiAgICAgICAgICAgICh1cGRhdGVSZWNlaXZlcikgPT4gdXBkYXRlUmVjZWl2ZXIudHBJZCA9PT0gZXhpc3RpbmdSZWNlaXZlci50cC5pZFxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB1cGRhdGVSZWNlaXZlcnMgPSB1cGRhdGVSZWNlaXZlcnMuY29uY2F0KFxuICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmVFeGlzdGluZ1JlY2VpdmVycyhleGlzdGluZywgYXNzZW1ibHlLZXkpXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNyZWF0ZUNsYWltYW50cyA9XG4gICAgICBvcHRpb25zLmNyZWF0ZUNsYWltYW50cyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLmNyZWF0ZUNsYWltYW50cy5tYXAoKHgpID0+IHRoaXMucHJlcGFyZUNyZWF0ZUNsYWltYW50KHgpKVxuICAgICAgKSk7XG5cbiAgICBjb25zdCBleGlzdGluZ0NsYWltYW50cyA9IG1hcEVkZ2VzKHNjZW5hcmlvLmNsYWltYW50cyk7XG4gICAgY29uc3QgdXBkYXRlQ2xhaW1hbnRzID1cbiAgICAgIG9wdGlvbnMudXBkYXRlQ2xhaW1hbnRzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMudXBkYXRlQ2xhaW1hbnRzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGNsYWltYW50IHdlIGFyZSB1cGRhdGluZ1xuICAgICAgICAgIGNvbnN0IGNsYWltYW50ID0gZXhpc3RpbmdDbGFpbWFudHMuZmluZChcbiAgICAgICAgICAgIChleGlzdGluZ0NsYWltYW50KSA9PiBleGlzdGluZ0NsYWltYW50LnRwLmlkID09PSB4LnRwSWRcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0aGlzLnByZXBhcmVVcGRhdGVDbGFpbWFudCh4LCBjbGFpbWFudC5zaGFyZWRLZXkuaWQpO1xuICAgICAgICB9KVxuICAgICAgKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NlbmFyaW9JZDogb3B0aW9ucy5zY2VuYXJpb0lkLFxuICAgICAgZW5hYmxlZDogb3B0aW9ucy5lbmFibGVkLFxuICAgICAgaW5hY3RpdmVTZWNvbmRzOiBvcHRpb25zLmluYWN0aXZlU2Vjb25kcyxcbiAgICAgIHVwZGF0ZUFzc2VtYmx5LFxuICAgICAgY3JlYXRlUmVjZWl2ZXJzLFxuICAgICAgdXBkYXRlUmVjZWl2ZXJzLFxuICAgICAgZGVsZXRlUmVjZWl2ZXJzOiBvcHRpb25zLmRlbGV0ZVJlY2VpdmVycyxcbiAgICAgIGNyZWF0ZUNsYWltYW50cyxcbiAgICAgIHVwZGF0ZUNsYWltYW50cyxcbiAgICAgIGRlbGV0ZUNsYWltYW50czogb3B0aW9ucy5kZWxldGVDbGFpbWFudHMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY2VpdmVySXRlbShvcHRpb25zOiB7XG4gICAgcmVjZWl2ZXJJdGVtT3B0aW9uczogUmVjZWl2ZXJJdGVtT3B0aW9ucztcbiAgICByZWNlaXZlclNoYXJlZEtleTogSldLLktleTtcbiAgICBhc3NlbWJseUtleTogSldLLktleTtcbiAgICBkaXJlY3Rvcnk/OiBJZEtleVBhaXI7XG4gICAgZmlsZT86IElkS2V5UGFpcjtcbiAgfSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHJlY2VpdmVySXRlbU9wdGlvbnMsXG4gICAgICByZWNlaXZlclNoYXJlZEtleSxcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgZGlyZWN0b3J5LFxuICAgICAgZmlsZSxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGFzc2VydF94b3IoeyBkaXJlY3RvcnksIGZpbGUgfSk7XG5cbiAgICBjb25zdCB7IGFjY2Vzc1JvbGUgfSA9IHJlY2VpdmVySXRlbU9wdGlvbnM7XG5cbiAgICBpZiAoYWNjZXNzUm9sZSA9PSBBY2Nlc3NSb2xlQ2hvaWNlLkRFTlkpIHtcbiAgICAgIGNvbnN0IHJldCA9IHtcbiAgICAgICAgYWNjZXNzUm9sZSxcbiAgICAgICAgaXRlbUtleUlkOiBudWxsLFxuICAgICAgICB3cmFwcGVkSXRlbUtleTogbnVsbCxcbiAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogbnVsbCxcbiAgICAgIH07XG5cbiAgICAgIGlmIChkaXJlY3RvcnkpIHtcbiAgICAgICAgLy8gQ3J5cHRvZ3JhcGhpYyBhY2Nlc3MgdG8gaXRlbSBpcyBub3QgcmVxdWlyZWQuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmV0LFxuICAgICAgICAgIGRpcmVjdG9yeUlkOiBkaXJlY3RvcnkuaWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBmaWxlSWQ6IGZpbGUuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE8gdGhpcyBzaG91bGQgYmUgYmF0Y2hlZFxuICAgICAgbGV0IGl0ZW1LZXk7XG4gICAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICAgIGl0ZW1LZXkgPSBhd2FpdCB0aGlzLml0ZW1TZXJ2aWNlLmdldERpcmVjdG9yeUtleShcbiAgICAgICAgICBkaXJlY3RvcnkuaWQsXG4gICAgICAgICAgZGlyZWN0b3J5LmtleUlkXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtS2V5ID0gYXdhaXQgdGhpcy5pdGVtU2VydmljZS5nZXRGaWxlS2V5KGZpbGUuaWQsIGZpbGUua2V5SWQpO1xuICAgICAgfVxuXG4gICAgICBsZXQgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgcmVjZWl2ZXJTaGFyZWRLZXksXG4gICAgICAgIGl0ZW1LZXkuandrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc2hhcmVkQ2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICByZWNlaXZlclNoYXJlZEtleSxcbiAgICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9ucy5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgICApO1xuXG4gICAgICB3cmFwcGVkSXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBhc3NlbWJseUtleSxcbiAgICAgICAgd3JhcHBlZEl0ZW1LZXlcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJldCA9IHtcbiAgICAgICAgYWNjZXNzUm9sZSxcbiAgICAgICAgaXRlbUtleUlkOiBpdGVtS2V5LmlkLFxuICAgICAgICB3cmFwcGVkSXRlbUtleSxcbiAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YSxcbiAgICAgIH07XG5cbiAgICAgIGlmIChkaXJlY3RvcnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXQsXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IGRpcmVjdG9yeS5pZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmV0LFxuICAgICAgICAgIGZpbGVJZDogZmlsZS5pZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVSZWNlaXZlckRpcmVjdG9yeShcbiAgICBvcHRpb25zOiBSZWNlaXZlckRpcmVjdG9yeU9wdGlvbnMsXG4gICAgcmVjZWl2ZXJTaGFyZWRLZXk6IEpXSy5LZXksXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXlcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZVJlY2VpdmVySXRlbSh7XG4gICAgICByZWNlaXZlckl0ZW1PcHRpb25zOiBvcHRpb25zLFxuICAgICAgcmVjZWl2ZXJTaGFyZWRLZXksXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIGRpcmVjdG9yeToge1xuICAgICAgICBpZDogb3B0aW9ucy5kaXJlY3RvcnlJZCxcbiAgICAgICAga2V5SWQ6IG9wdGlvbnMuZGlyZWN0b3J5S2V5SWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVjZWl2ZXJGaWxlKFxuICAgIG9wdGlvbnM6IFJlY2VpdmVyRmlsZU9wdGlvbnMsXG4gICAgcmVjZWl2ZXJTaGFyZWRLZXk6IEpXSy5LZXksXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXlcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZVJlY2VpdmVySXRlbSh7XG4gICAgICByZWNlaXZlckl0ZW1PcHRpb25zOiBvcHRpb25zLFxuICAgICAgcmVjZWl2ZXJTaGFyZWRLZXksXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIGZpbGU6IHtcbiAgICAgICAgaWQ6IG9wdGlvbnMuZmlsZUlkLFxuICAgICAgICBrZXlJZDogb3B0aW9ucy5maWxlS2V5SWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ3JlYXRlUmVjZWl2ZXIoXG4gICAgb3B0aW9uczogQ3JlYXRlUmVjZWl2ZXJPcHRpb25zLFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIGNvbnN0IHsgc2hhcmVkS2V5LCBtdXRhdGlvbklucHV0IH0gPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVQYXJ0aWNpcGFudChcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgYWRkRGlyZWN0b3JpZXMgPVxuICAgICAgb3B0aW9ucy5hZGREaXJlY3RvcmllcyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLmFkZERpcmVjdG9yaWVzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnByZXBhcmVBZGRSZWNlaXZlckRpcmVjdG9yeSh4LCBzaGFyZWRLZXkua2V5LCBhc3NlbWJseUtleSlcbiAgICAgICAgKVxuICAgICAgKSk7XG5cbiAgICBjb25zdCBhZGRGaWxlcyA9XG4gICAgICBvcHRpb25zLmFkZEZpbGVzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMuYWRkRmlsZXMubWFwKCh4KSA9PlxuICAgICAgICAgIHRoaXMucHJlcGFyZUFkZFJlY2VpdmVyRmlsZSh4LCBzaGFyZWRLZXkua2V5LCBhc3NlbWJseUtleSlcbiAgICAgICAgKVxuICAgICAgKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubXV0YXRpb25JbnB1dCxcbiAgICAgIGFkZERpcmVjdG9yaWVzLFxuICAgICAgYWRkRmlsZXMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZVJlY2VpdmVyKFxuICAgIG9wdGlvbnM6IFVwZGF0ZVJlY2VpdmVyT3B0aW9ucyxcbiAgICBhc3NlbWJseUtleTogSldLLktleSxcbiAgICBleGlzdGluZ1JlY2VpdmVyOiBTY2VuYXJpb1JlY2VpdmVyTm9kZVxuICApIHtcbiAgICBjb25zdCBzaGFyZWRLZXlJZCA9IGV4aXN0aW5nUmVjZWl2ZXIuc2hhcmVkS2V5LmlkO1xuXG4gICAgY29uc3QgZGVsZXRlRGlyZWN0b3JpZXNPcHRpb25zID0gb3B0aW9ucy5kZWxldGVEaXJlY3RvcmllcyB8fCBbXTtcbiAgICBjb25zdCB1cGRhdGVEaXJlY3Rvcmllc09wdGlvbnMgPSBvcHRpb25zLnVwZGF0ZURpcmVjdG9yaWVzIHx8IFtdO1xuXG4gICAgY29uc3QgZGVsZXRlRmlsZXNPcHRpb25zID0gb3B0aW9ucy5kZWxldGVGaWxlcyB8fCBbXTtcbiAgICBjb25zdCB1cGRhdGVGaWxlc09wdGlvbnMgPSBvcHRpb25zLnVwZGF0ZUZpbGVzIHx8IFtdO1xuXG4gICAgLy8gRmlsbCBpbiBhbnkgbWlzc2luZyB1cGRhdGUgZGlyZWN0b3JpZXNcbiAgICBtYXBFZGdlcyhleGlzdGluZ1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJEaXJlY3RvcmllcykuZm9yRWFjaChcbiAgICAgIChleGlzdGluZ0RpcmVjdG9yeSkgPT4ge1xuICAgICAgICBpZiAoZGVsZXRlRGlyZWN0b3JpZXNPcHRpb25zLmluY2x1ZGVzKGV4aXN0aW5nRGlyZWN0b3J5LmRpcmVjdG9yeS5pZCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdXBkYXRlRGlyZWN0b3JpZXNPcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAoeCkgPT4geC5kaXJlY3RvcnlJZCA9PT0gZXhpc3RpbmdEaXJlY3RvcnkuZGlyZWN0b3J5LmlkXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVEaXJlY3Rvcmllc09wdGlvbnMucHVzaCh7XG4gICAgICAgICAgYWNjZXNzUm9sZTogZXhpc3RpbmdEaXJlY3RvcnkuYWNjZXNzUm9sZSxcbiAgICAgICAgICBkaXJlY3RvcnlJZDogZXhpc3RpbmdEaXJlY3RvcnkuZGlyZWN0b3J5LmlkLFxuICAgICAgICAgIGRpcmVjdG9yeUtleUlkOiBleGlzdGluZ0RpcmVjdG9yeS5kaXJlY3Rvcnkua2V5SWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjpcbiAgICAgICAgICAgIGV4aXN0aW5nRGlyZWN0b3J5LnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBGaWxsIGluIGFueSBtaXNzaW5nIHVwZGF0ZSBmaWxlc1xuICAgIG1hcEVkZ2VzKGV4aXN0aW5nUmVjZWl2ZXIucmVjZWl2ZXJJdGVtcy5yZWNlaXZlckZpbGVzKS5mb3JFYWNoKFxuICAgICAgKGV4aXN0aW5nRmlsZSkgPT4ge1xuICAgICAgICBpZiAoZGVsZXRlRmlsZXNPcHRpb25zLmluY2x1ZGVzKGV4aXN0aW5nRmlsZS5maWxlLmlkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cGRhdGVGaWxlc09wdGlvbnMuZmluZCgoeCkgPT4geC5maWxlSWQgPT09IGV4aXN0aW5nRmlsZS5maWxlLmlkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZUZpbGVzT3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICBhY2Nlc3NSb2xlOiBleGlzdGluZ0ZpbGUuYWNjZXNzUm9sZSxcbiAgICAgICAgICBmaWxlSWQ6IGV4aXN0aW5nRmlsZS5maWxlLmlkLFxuICAgICAgICAgIGZpbGVLZXlJZDogZXhpc3RpbmdGaWxlLmZpbGUua2V5SWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjogZXhpc3RpbmdGaWxlLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCB7IHNoYXJlZEtleSwgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlUGFydGljaXBhbnQoXG4gICAgICBvcHRpb25zLFxuICAgICAgc2hhcmVkS2V5SWRcbiAgICApO1xuXG4gICAgY29uc3QgYWRkRGlyZWN0b3JpZXMgPVxuICAgICAgb3B0aW9ucy5hZGREaXJlY3RvcmllcyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLmFkZERpcmVjdG9yaWVzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnByZXBhcmVBZGRSZWNlaXZlckRpcmVjdG9yeSh4LCBzaGFyZWRLZXksIGFzc2VtYmx5S2V5KVxuICAgICAgICApXG4gICAgICApKTtcblxuICAgIGNvbnN0IGFkZEZpbGVzID1cbiAgICAgIG9wdGlvbnMuYWRkRmlsZXMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5hZGRGaWxlcy5tYXAoKHgpID0+XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQWRkUmVjZWl2ZXJGaWxlKHgsIHNoYXJlZEtleSwgYXNzZW1ibHlLZXkpXG4gICAgICAgIClcbiAgICAgICkpO1xuXG4gICAgY29uc3QgdXBkYXRlRGlyZWN0b3JpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVwZGF0ZURpcmVjdG9yaWVzT3B0aW9ucy5tYXAoKHgpID0+XG4gICAgICAgIHRoaXMucHJlcGFyZVVwZGF0ZVJlY2VpdmVyRGlyZWN0b3J5KHgsIHNoYXJlZEtleSwgYXNzZW1ibHlLZXkpXG4gICAgICApXG4gICAgKTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpbGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB1cGRhdGVGaWxlc09wdGlvbnMubWFwKCh4KSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVVcGRhdGVSZWNlaXZlckZpbGUoeCwgc2hhcmVkS2V5LCBhc3NlbWJseUtleSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm11dGF0aW9uSW5wdXQsXG4gICAgICBhZGREaXJlY3RvcmllcyxcbiAgICAgIGFkZEZpbGVzLFxuICAgICAgdXBkYXRlRGlyZWN0b3JpZXMsXG4gICAgICB1cGRhdGVGaWxlcyxcbiAgICAgIGRlbGV0ZURpcmVjdG9yaWVzOiBvcHRpb25zLmRlbGV0ZURpcmVjdG9yaWVzLFxuICAgICAgZGVsZXRlRmlsZXM6IG9wdGlvbnMuZGVsZXRlRmlsZXMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUV4aXN0aW5nUmVjZWl2ZXIoXG4gICAgZXhpc3RpbmdSZWNlaXZlcjogU2NlbmFyaW9SZWNlaXZlck5vZGUsXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXlcbiAgKSB7XG4gICAgY29uc3QgdXBkYXRlRGlyZWN0b3JpZXMgPSBtYXBFZGdlcyhcbiAgICAgIGV4aXN0aW5nUmVjZWl2ZXIucmVjZWl2ZXJJdGVtcy5yZWNlaXZlckRpcmVjdG9yaWVzXG4gICAgKS5tYXAoKHsgYWNjZXNzUm9sZSwgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbiwgZGlyZWN0b3J5IH0pID0+ICh7XG4gICAgICBhY2Nlc3NSb2xlLFxuICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIGRpcmVjdG9yeUlkOiBkaXJlY3RvcnkuaWQsXG4gICAgICBkaXJlY3RvcnlLZXlJZDogZGlyZWN0b3J5LmtleUlkLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpbGVzID0gbWFwRWRnZXMoXG4gICAgICBleGlzdGluZ1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJGaWxlc1xuICAgICkubWFwKCh7IGFjY2Vzc1JvbGUsIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sIGZpbGUgfSkgPT4gKHtcbiAgICAgIGFjY2Vzc1JvbGUsXG4gICAgICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgZmlsZUlkOiBmaWxlLmlkLFxuICAgICAgZmlsZUtleUlkOiBmaWxlLmtleUlkLFxuICAgIH0pKTtcblxuICAgIC8vIEZpbGwgaXQgaW4gd2l0aCBleGlzdGluZyByZWNlaXZlci5cbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlVXBkYXRlUmVjZWl2ZXIoXG4gICAgICB7XG4gICAgICAgIHRwSWQ6IGV4aXN0aW5nUmVjZWl2ZXIudHAuaWQsXG4gICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246IGV4aXN0aW5nUmVjZWl2ZXIuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgICAgdXBkYXRlRGlyZWN0b3JpZXMsXG4gICAgICAgIHVwZGF0ZUZpbGVzLFxuICAgICAgfSxcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgZXhpc3RpbmdSZWNlaXZlclxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVFeGlzdGluZ1JlY2VpdmVycyhcbiAgICBleGlzdGluZ1JlY2VpdmVyczogU2NlbmFyaW9SZWNlaXZlck5vZGVbXSxcbiAgICBhc3NlbWJseUtleTogSldLLktleVxuICApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBleGlzdGluZ1JlY2VpdmVycy5tYXAoKGV4aXN0aW5nUmVjZWl2ZXIpID0+XG4gICAgICAgIHRoaXMucHJlcGFyZUV4aXN0aW5nUmVjZWl2ZXIoZXhpc3RpbmdSZWNlaXZlciwgYXNzZW1ibHlLZXkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZVBhcnRpY2lwYW50KG9wdGlvbnM6IENyZWF0ZVBhcnRpY2lwYW50T3B0aW9ucykge1xuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFdpdGhOZXdLZXkoXG4gICAgICBvcHRpb25zLnRwU2hhcmVkS2V5SWQsXG4gICAgICBvcHRpb25zLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBzaGFyZWRLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIHRwSWQ6IG9wdGlvbnMudHBJZCxcbiAgICAgICAgdHBTaGFyZWRLZXlJZDogb3B0aW9ucy50cFNoYXJlZEtleUlkLFxuICAgICAgICB0cFNoYXJlZEtleVdyYXBwZWRTaGFyZWRLZXk6IHNoYXJlZEtleS53cmFwcGVkS2V5LFxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhOiBzaGFyZWRLZXkuY2lwaGVyLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlVXBkYXRlUGFydGljaXBhbnQoXG4gICAgb3B0aW9uczogUGFydGljaXBhbnRPcHRpb25zLFxuICAgIHNoYXJlZEtleUlkOiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRKd2tLZXkoc2hhcmVkS2V5SWQpO1xuXG4gICAgY29uc3Qgc2hhcmVkQ2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5LFxuICAgICAgb3B0aW9ucy5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzaGFyZWRLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIHRwSWQ6IG9wdGlvbnMudHBJZCxcbiAgICAgICAgc2hhcmVkS2V5SWQsXG4gICAgICAgIHNoYXJlZENpcGhlckRhdGEsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDcmVhdGVDbGFpbWFudChvcHRpb25zOiBDcmVhdGVDbGFpbWFudE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IG11dGF0aW9uSW5wdXQgfSA9IGF3YWl0IHRoaXMucHJlcGFyZUNyZWF0ZVBhcnRpY2lwYW50KG9wdGlvbnMpO1xuICAgIHJldHVybiBtdXRhdGlvbklucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlVXBkYXRlQ2xhaW1hbnQoXG4gICAgb3B0aW9uczogVXBkYXRlQ2xhaW1hbnRPcHRpb25zLFxuICAgIHNoYXJlZEtleUlkOiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgeyBtdXRhdGlvbklucHV0IH0gPSBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVQYXJ0aWNpcGFudChcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzaGFyZWRLZXlJZFxuICAgICk7XG5cbiAgICByZXR1cm4gbXV0YXRpb25JbnB1dDtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmVSZWNlaXZlQ2xhaW0yKHNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gICAgLy8gR2V0IGFsbCB0aGUgc2hhcmVkIGl0ZW1zXG4gICAgY29uc3Qgc2hhcmVkU2NlbmFyaW8gPSAoXG4gICAgICBhd2FpdCB0aGlzLmdldFNoYXJlZFNjZW5hcmlvKHNjZW5hcmlvSWQsIHNoYXJlZENsYWltSWQpXG4gICAgKS5zaGFyZWRTY2VuYXJpbztcblxuICAgIGlmIChzaGFyZWRTY2VuYXJpby5zdGF0ZSAhPT0gU2NlbmFyaW9TdGF0ZS5BUFBST1ZFRCkge1xuICAgICAgdGhyb3dDbGFpbU5vdEFwcHJvdmVkKCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXBwcm92YWxzID0gbWFwRWRnZXMoXG4gICAgICBzaGFyZWRTY2VuYXJpby5zaGFyZWRDbGFpbS5hc0NsYWltUmVjZWl2ZXIuYXBwcm92YWxzXG4gICAgKTtcblxuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5yZWNvdmVyQXNzZW1ibHlLZXkoYXBwcm92YWxzKTtcblxuICAgIC8vIFdyYXAgYXNzZW1ibHkga2V5IHdpdGggc2hhcmVkIGtleS5cbiAgICAvLz8/P1xuICAgIC8vIFRoaXMgc2hhcmVkS2V5IGlzIGNyZWF0ZWQganVzdCBmb3IgdGhpcyBzY2VuYXJpby4gSXQncyB3cmFwcGVkIGJ5IHRoZSB0cFNoYXJlZEtleS5cbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShcbiAgICAgIHNoYXJlZFNjZW5hcmlvLmFzUmVjZWl2ZXIuc2hhcmVkS2V5LmlkXG4gICAgKTtcblxuICAgIGNvbnN0IHNoYXJlZEtleVdyYXBwZWRBc3NlbWJseUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXkudG9KU09OKHRydWUpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzY2VuYXJpb0NsYWltSWQ6IHNoYXJlZENsYWltSWQsXG4gICAgICBzaGFyZWRLZXlXcmFwcGVkQXNzZW1ibHlLZXksXG4gICAgICBzaGFyZWRLZXlJZDogc2hhcmVkS2V5LmlkLFxuICAgICAgYXNzZW1ibHlLZXlJZDogc2hhcmVkU2NlbmFyaW8uc2hhcmVkQ2xhaW0uYXNDbGFpbVJlY2VpdmVyLmFzc2VtYmx5S2V5SWQsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGFzeW5jIHByZXBhcmVSZWNlaXZlQ2xhaW0oc2NlbmFyaW9JZDogc3RyaW5nLCBzaGFyZWRDbGFpbUlkOiBzdHJpbmcpIHtcbiAgLy8gICAvLyBHZXQgYWxsIHRoZSBzaGFyZWQgaXRlbXNcbiAgLy8gICBjb25zdCBzaGFyZWRTY2VuYXJpbyA9IChcbiAgLy8gICAgIGF3YWl0IHRoaXMuZ2V0U2hhcmVkU2NlbmFyaW8oc2NlbmFyaW9JZCwgc2hhcmVkQ2xhaW1JZClcbiAgLy8gICApLnNoYXJlZFNjZW5hcmlvO1xuXG4gIC8vICAgaWYgKHNoYXJlZFNjZW5hcmlvLnN0YXRlICE9PSBTY2VuYXJpb1N0YXRlLkFQUFJPVkVEKSB7XG4gIC8vICAgICB0aHJvd0NsYWltTm90QXBwcm92ZWQoKTtcbiAgLy8gICB9XG5cbiAgLy8gICBjb25zdCBhcHByb3ZhbHMgPSBtYXBFZGdlcyhcbiAgLy8gICAgIHNoYXJlZFNjZW5hcmlvLnNoYXJlZENsYWltLmFzQ2xhaW1SZWNlaXZlci5hcHByb3ZhbHNcbiAgLy8gICApO1xuXG4gIC8vICAgY29uc3QgYXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLnJlY292ZXJBc3NlbWJseUtleShhcHByb3ZhbHMpO1xuXG4gIC8vICAgLy8gRGVjcnlwdCBhbGwgaXRlbXNcbiAgLy8gICBjb25zdCByZWNlaXZlckRpcmVjdG9yaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gIC8vICAgICBzaGFyZWRTY2VuYXJpby5hc1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJEaXJlY3Rvcmllcy5lZGdlc1xuICAvLyAgICAgICAubWFwKChlZGdlKSA9PiBlZGdlLm5vZGUpXG4gIC8vICAgICAgIC5tYXAoYXN5bmMgKHJlY2VpdmVyRGlyZWN0b3J5KSA9PiB7XG4gIC8vICAgICAgICAgY29uc3Qgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gIC8vICAgICAgICAgICBhc3NlbWJseUtleSxcbiAgLy8gICAgICAgICAgIHJlY2VpdmVyRGlyZWN0b3J5LndyYXBwZWRJdGVtS2V5XG4gIC8vICAgICAgICAgKTtcblxuICAvLyAgICAgICAgIHJldHVybiB7XG4gIC8vICAgICAgICAgICByZWNlaXZlckRpcmVjdG9yeUlkOiByZWNlaXZlckRpcmVjdG9yeS5pZCxcbiAgLy8gICAgICAgICAgIC8vIExvb2tzIGxpa2UgcmVjZWl2ZXJEaXJlY3Rvcnkud3JhcHBlZEl0ZW1LZXkgaGFzIG5vIG90aGVyIGNvbnRlbnQgaW4gc2lkZSBpdCBleGNlcHQgYSB3cmFwcGVkIGtleS5cbiAgLy8gICAgICAgICAgIC8vIFNvIHdlIGNhbiB0dXJuIHRoaXMgaW4gdG8gYSBkb3VibHkgd3JhcHBlZCBrZXkgYW5kIGp1c3QgcmVsZWFzZSB0aGUgYXNzZW1ibHkga2V5LlxuXG4gIC8vICAgICAgICAgICByZWNlaXZlclNoYXJlZEtleVdyYXBwZWRJdGVtS2V5OiB3cmFwcGVkSXRlbUtleSwgLy8gdGhlIHdyYXBwZWRJdGVtS2V5IGlzIGFscmVhZHkgd3JhcHBlZCBieSByZWNlaXZlclNoYXJlZEtleVxuICAvLyAgICAgICAgIH07XG4gIC8vICAgICAgIH0pXG4gIC8vICAgKTtcblxuICAvLyAgIHJldHVybiB7XG4gIC8vICAgICBzY2VuYXJpb0NsYWltSWQ6IHNoYXJlZENsYWltSWQsXG4gIC8vICAgICByZWNlaXZlckRpcmVjdG9yaWVzLFxuICAvLyAgIH07XG4gIC8vIH1cblxuICBwcml2YXRlIGFzeW5jIHJlY292ZXJBc3NlbWJseUtleShcbiAgICBhcHByb3ZhbHM6IFNoYXJlZFNjZW5hcmlvQ2xhaW1SZWNlaXZlZEFwcHJvdmFsTm9kZVtdXG4gICkge1xuICAgIGNvbnN0IHBhcnRpYWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBhcHByb3ZhbHMubWFwKChhcHByb3ZhbCkgPT5cbiAgICAgICAgdGhpcy5rZXlHcmFwaC5kZWNyeXB0RnJvbVN0cmluZzxQYXJ0aWFsQXNzZW1ibHlLZXk+KFxuICAgICAgICAgIGFwcHJvdmFsLnB4ay5pZCxcbiAgICAgICAgICBhcHByb3ZhbC5yZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmFzc2VtYmx5Q29udHJvbGxlci5yZWNvdmVyQXNzZW1ibHlLZXkocGFydGlhbHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhc0NsYWltQXBwcm92ZXJzKFxuICAgIHNoYXJlZFNjZW5hcmlvSWQsXG4gICAgY2xhaW1JZCxcbiAgICBzdGF0ZTogVHBDbGFpbUFwcHJvdmVyU3RhdGVcbiAgKSB7XG4gICAgY29uc3Qgc2hhcmVkU2NlbmFyaW8gPSAoXG4gICAgICBhd2FpdCB0aGlzLmdldFNoYXJlZFNjZW5hcmlvKHNoYXJlZFNjZW5hcmlvSWQsIGNsYWltSWQpXG4gICAgKS5zaGFyZWRTY2VuYXJpbztcblxuICAgIHJldHVybiBtYXBFZGdlcyhzaGFyZWRTY2VuYXJpby5zaGFyZWRDbGFpbS5jbGFpbS5hc0NsYWltQXBwcm92ZXJzKS5maWx0ZXIoXG4gICAgICAoYXNDbGFpbUFwcHJvdmVyKSA9PiBhc0NsYWltQXBwcm92ZXIuc3RhdGUgPT09IHN0YXRlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUFwcHJvdmVDbGFpbU11dGF0aW9ucyhcbiAgICBzaGFyZWRTY2VuYXJpb0lkOiBzdHJpbmcsXG4gICAgY2xhaW1JZDogc3RyaW5nXG4gICkge1xuICAgIC8vIFRoZSBjdXJyZW50IHVzZXIgbWF5IGJlIGFjdGluZyBhcyBhcHByb3ZlcnMgaW4gbXVsdGlwbGUgc3ViLWFzc2VtYmxpZXMgc29cbiAgICAvLyB3ZSBhcHByb3ZlIHRoZW0gYWxsLlxuICAgIGNvbnN0IGFzQ2xhaW1BcHByb3ZlcnMgPSBhd2FpdCB0aGlzLmFzQ2xhaW1BcHByb3ZlcnMoXG4gICAgICBzaGFyZWRTY2VuYXJpb0lkLFxuICAgICAgY2xhaW1JZCxcbiAgICAgIFRwQ2xhaW1BcHByb3ZlclN0YXRlLkNMQUlNRURcbiAgICApO1xuXG4gICAgcmV0dXJuIGFzQ2xhaW1BcHByb3ZlcnMubWFwKFxuICAgICAgYXN5bmMgKGFzQ2xhaW1BcHByb3ZlcikgPT5cbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBBcHByb3ZlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IGF3YWl0IHRoaXMucHJlcGFyZUFwcHJvdmVDbGFpbShhc0NsYWltQXBwcm92ZXIpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUFwcHJvdmVDbGFpbShcbiAgICBhc0NsYWltQXBwcm92ZXI6IFNoYXJlZFRwQ2xhaW1BcHByb3Zlck5vZGVcbiAgKSB7XG4gICAgY29uc3QgcmVjZWl2ZXJBcHByb3ZhbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1hcEVkZ2VzKGFzQ2xhaW1BcHByb3Zlci5yZWNlaXZlckFwcHJvdmFscykubWFwKChyZWNlaXZlckFwcHJvdmFsKSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVSZWNlaXZlckFwcHJvdmFsKHtcbiAgICAgICAgICByZWNlaXZlckFwcHJvdmFsSWQ6IHJlY2VpdmVyQXBwcm92YWwuaWQsXG4gICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbFB4a0lkOiByZWNlaXZlckFwcHJvdmFsLnB4ay5pZCxcbiAgICAgICAgICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb246XG4gICAgICAgICAgICBhc0NsYWltQXBwcm92ZXIuc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xhaW1BcHByb3ZlcklkOiBhc0NsYWltQXBwcm92ZXIuaWQsXG4gICAgICByZWNlaXZlckFwcHJvdmFscyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVjZWl2ZXJBcHByb3ZhbChvcHRpb25zOiB7XG4gICAgcmVjZWl2ZXJBcHByb3ZhbElkOiBzdHJpbmc7XG4gICAgcmVjZWl2ZXJBcHByb3ZhbFB4a0lkOiBzdHJpbmc7XG4gICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uOiBKU09OT2JqZWN0O1xuICB9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY2VpdmVyQXBwcm92YWxJZDogb3B0aW9ucy5yZWNlaXZlckFwcHJvdmFsSWQsXG4gICAgICAvLyBUT0RPIGFsbG93IHNlbmRpbmcgb2YgbWVzc2FnZXMgdG8gcmVjZWl2ZXIuXG4gICAgICByZWNlaXZlckNpcGhlcjogJycsXG4gICAgICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleTogYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIG9wdGlvbnMucmVjZWl2ZXJBcHByb3ZhbFB4a0lkLFxuICAgICAgICBvcHRpb25zLnNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvblxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVqZWN0Q2xhaW1NdXRhdGlvbnMoXG4gICAgc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLFxuICAgIGNsYWltSWQ6IHN0cmluZ1xuICApIHtcbiAgICAvLyBUaGUgY3VycmVudCB1c2VyIG1heSBiZSBhY3RpbmcgYXMgYXBwcm92ZXJzIGluIG11bHRpcGxlIHN1Yi1hc3NlbWJsaWVzIHNvXG4gICAgLy8gd2UgcmVqZWN0IHRoZW0gYWxsLlxuICAgIGNvbnN0IGFzQ2xhaW1BcHByb3ZlcnMgPSBhd2FpdCB0aGlzLmFzQ2xhaW1BcHByb3ZlcnMoXG4gICAgICBzaGFyZWRTY2VuYXJpb0lkLFxuICAgICAgY2xhaW1JZCxcbiAgICAgIFRwQ2xhaW1BcHByb3ZlclN0YXRlLkNMQUlNRURcbiAgICApO1xuXG4gICAgcmV0dXJuIGFzQ2xhaW1BcHByb3ZlcnMubWFwKFxuICAgICAgYXN5bmMgKGFzQ2xhaW1BcHByb3ZlcikgPT5cbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBSZWplY3RTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBpbnB1dDogeyBjbGFpbUFwcHJvdmVySWQ6IGFzQ2xhaW1BcHByb3Zlci5pZCB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -31,6 +31,7 @@ query DirectoryShareQuery($id: LrRelayIdInput!) {
|
|
|
31
31
|
tp {
|
|
32
32
|
id
|
|
33
33
|
}
|
|
34
|
+
shareType
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
`;
|
|
@@ -43,7 +44,8 @@ query FileShareItemIdQuery($id: LrRelayIdInput!) {
|
|
|
43
44
|
tp {
|
|
44
45
|
id
|
|
45
46
|
}
|
|
47
|
+
shareType
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
`;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5ncWwucHJpdmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi90cnVzdGVkLXBhcnR5L3RydXN0ZWQtcGFydHkuZ3FsLnByaXZhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBdUIxQyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxRQUFRLENBQTZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0IvRSxDQUFDO0FBZUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUEyQjs7Ozs7Ozs7Ozs7O0NBWXJFLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFzQjs7Ozs7Ozs7Ozs7O0NBWTNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRCwgU2hhcmVUeXBlQ2hvaWNlIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IGdxbFR5cGVkIH0gZnJvbSAnLi4vX2NvbW1vbi9hc3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRwQ3VycmVudFVzZXJTaGFyZWRLZXlRdWVyeSB7XG4gIHRwOiB7XG4gICAgY3VycmVudFVzZXJTaGFyZWRLZXk6IHtcbiAgICAgIHVzZXJTaGFyZWRLZXk6IHtcbiAgICAgICAgc2hhcmVkS2V5OiB7XG4gICAgICAgICAgaWQ6IElEO1xuICAgICAgICB9O1xuICAgICAgICBta1NoYXJlZEtleToge1xuICAgICAgICAgIGlkOiBJRDtcbiAgICAgICAgfTtcbiAgICAgICAgbWtQeGs6IHtcbiAgICAgICAgICBpZDogSUQ7XG4gICAgICAgIH07XG4gICAgICAgIG1rUmVzaGFyZVJlcXVlc3RDaXBoZXI6IHN0cmluZztcbiAgICAgICAgbWtSZXNoYXJlUmVxdWVzdFNlbnQ6IGJvb2xlYW47XG4gICAgICAgIG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyOiBzdHJpbmc7XG4gICAgICAgIG1rUmVzaGFyZVJlc3BvbnNlU2VudDogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnkgPSBncWxUeXBlZDxUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnk+YFxucXVlcnkgVHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5KCRpZDogTHJSZWxheUlkSW5wdXQhKSB7XG4gIHRwKGlkOiAkaWQpe1xuICAgIGN1cnJlbnRVc2VyU2hhcmVkS2V5IHtcbiAgICAgIHVzZXJTaGFyZWRLZXkge1xuICAgICAgICBzaGFyZWRLZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgbWtTaGFyZWRLZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgbWtQeGsge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgbWtSZXNoYXJlUmVxdWVzdENpcGhlclxuICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0U2VudFxuICAgICAgICBta1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICAgICAgICBta1Jlc2hhcmVSZXNwb25zZVNlbnRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVNoYXJlUXVlcnlSZXN1bHQge1xuICBpdGVtOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgfTtcbiAgdHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICB9O1xuICBzaGFyZVR5cGU6IFNoYXJlVHlwZUNob2ljZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlTaGFyZVF1ZXJ5UmVzdWx0IHtcbiAgZGlyZWN0b3J5U2hhcmU6IEl0ZW1TaGFyZVF1ZXJ5UmVzdWx0O1xufVxuZXhwb3J0IGNvbnN0IERpcmVjdG9yeVNoYXJlUXVlcnkgPSBncWxUeXBlZDxEaXJlY3RvcnlTaGFyZVF1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IERpcmVjdG9yeVNoYXJlUXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgZGlyZWN0b3J5U2hhcmUoaWQ6ICRpZCkge1xuICAgIGl0ZW0ge1xuICAgICAgaWRcbiAgICB9XG4gICAgdHAge1xuICAgICAgaWRcbiAgICB9XG4gICAgc2hhcmVUeXBlXG4gIH1cbn1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVNoYXJlUXVlcnlSZXN1bHQge1xuICBmaWxlU2hhcmU6IEl0ZW1TaGFyZVF1ZXJ5UmVzdWx0O1xufVxuZXhwb3J0IGNvbnN0IEZpbGVTaGFyZVF1ZXJ5ID0gZ3FsVHlwZWQ8RmlsZVNoYXJlUXVlcnlSZXN1bHQ+YFxucXVlcnkgRmlsZVNoYXJlSXRlbUlkUXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgZmlsZVNoYXJlKGlkOiAkaWQpIHtcbiAgICBpdGVtIHtcbiAgICAgIGlkXG4gICAgfVxuICAgIHRwIHtcbiAgICAgIGlkXG4gICAgfVxuICAgIHNoYXJlVHlwZVxuICB9XG59XG5gO1xuIl19
|