@techextensor/tab-core-utility 2.2.197 → 2.2.198
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/esm2022/index.mjs +11 -10
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +1 -9
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +16 -1
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +14 -18
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +8 -12
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +3 -3
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +56 -200
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +5 -6
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +30 -16
- package/esm2022/lib/tab-core-utility/app/enums/dsq.enum.mjs +13 -13
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +6 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +6 -2
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +9 -21
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +8 -53
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +6 -90
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +1 -9
- package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +36 -64
- package/esm2022/lib/tab-core-utility/app/models/app-object.class.mjs +1 -27
- package/esm2022/lib/tab-core-utility/app/models/data-source-queries.class.mjs +1 -22
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +4 -4
- package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +16 -18
- package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +9 -13
- package/esm2022/lib/tab-core-utility/app/utils/filter.util.mjs +3 -3
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +1 -13
- package/esm2022/lib/tab-core-utility/app/utils/select-query.util.mjs +107 -0
- package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +8 -5
- package/index.d.ts +10 -1
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +0 -4
- package/lib/tab-core-utility/app/constants/common.d.ts +15 -1
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +1 -1
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +16 -67
- package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +3 -1
- package/lib/tab-core-utility/app/enums/dsq.enum.d.ts +2 -2
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +4 -1
- package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +1 -0
- package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +0 -17
- package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -18
- package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +0 -53
- package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -6
- package/lib/tab-core-utility/app/models/api-query.class.d.ts +84 -94
- package/lib/tab-core-utility/app/models/app-object.class.d.ts +2 -65
- package/lib/tab-core-utility/app/models/data-source-queries.class.d.ts +2 -71
- package/lib/tab-core-utility/app/models/filter.model.d.ts +9 -11
- package/lib/tab-core-utility/app/models/sort.model.d.ts +5 -7
- package/lib/tab-core-utility/app/utils/filter.util.d.ts +2 -2
- package/lib/tab-core-utility/app/utils/req-res.util.d.ts +0 -8
- package/lib/tab-core-utility/app/utils/select-query.util.d.ts +24 -0
- package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +3 -3
- package/package.json +1 -1
- package/esm2022/lib/tab-core-utility/app/enums/workflow.enum.mjs +0 -37
- package/lib/tab-core-utility/app/enums/workflow.enum.d.ts +0 -30
|
@@ -19,6 +19,10 @@ export class MetadataHelper {
|
|
|
19
19
|
this.appMenuMap = new Map();
|
|
20
20
|
this.allAppMenus = null;
|
|
21
21
|
this.sessionStorageService = inject(SessionStorageService);
|
|
22
|
+
// Auto-invalidate every cached model whenever Common.tabJson is reassigned.
|
|
23
|
+
// This is the single point of cache invalidation — no caller needs to call
|
|
24
|
+
// clearCache() explicitly anywhere else.
|
|
25
|
+
Common.onSchemaChange(() => this.clearCache());
|
|
22
26
|
}
|
|
23
27
|
/**
|
|
24
28
|
* Helper method to get current app ID from session
|
|
@@ -297,5 +301,5 @@ export class MetadataHelper {
|
|
|
297
301
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: MetadataHelper, decorators: [{
|
|
298
302
|
type: Injectable,
|
|
299
303
|
args: [{ providedIn: 'root' }]
|
|
300
|
-
}] });
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFVSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFDcEQsZ0JBQVcsR0FBMEIsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNwRCxnQkFBVyxHQUEwQixJQUFJLENBQUM7UUFFakMs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RSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDekIsQ0FBQztRQUVGLHNFQUFzRTtRQUN0RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDO1lBQ0gsYUFBYTtZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFeEIsY0FBYztZQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRTFCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQzsrR0EvWFUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9jb21tb25cIjtcclxuaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1vYmplY3QubW9kZWxcIjtcclxuaW1wb3J0IHsgQXBwRmllbGRNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLWZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhLXNvdXJjZS1xdWVyeS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUVudGl0eVR5cGUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9zY2hlbWEuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFwcFNjcmVlbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtc2NyZWVuLm1vZGVsXCI7XHJcbmltcG9ydCB7IE9yZ0luZm9Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvb3JnSW5mby5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBcHBNZW51TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1tZW51Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzL3N0b3JhZ2UtY29uc3RhbnRzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFIZWxwZXIge1xyXG4gIHByaXZhdGUgYXBwT2JqZWN0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFwcE9iamVjdE1vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbEFwcE9iamVjdHM6IEFwcE9iamVjdE1vZGVsW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBhcHBTY3JlZW5NYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwU2NyZWVuTW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsQXBwU2NyZWVuczogQXBwU2NyZWVuTW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIG9yZ0luZm9NYXAgPSBuZXcgTWFwPHN0cmluZywgT3JnSW5mb01vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbE9yZ0luZm9zOiBPcmdJbmZvTW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGFwcE1lbnVNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwTWVudU1vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbEFwcE1lbnVzOiBBcHBNZW51TW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZ2V0IGN1cnJlbnQgYXBwIElEIGZyb20gc2Vzc2lvblxyXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgYXBwIElEIG9yIG51bGwgaWYgbm90IGF2YWlsYWJsZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Q3VycmVudEFwcElkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYXBwSW5mbyA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMuYXBwSW5mbyk7XHJcbiAgICAgIGNvbnN0IHBhcnNlZEFwcEluZm8gPSBhcHBJbmZvID8gSlNPTi5wYXJzZShhcHBJbmZvKSA6IG51bGw7XHJcbiAgICAgIHJldHVybiBwYXJzZWRBcHBJbmZvPy5JZCB8fCBudWxsO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gZ2V0IGN1cnJlbnQgYXBwIElEIGZyb20gc2Vzc2lvbjonLCBlcnJvcik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkgZnJvbSB0aGUgZ2l2ZW4gbWFwLlxyXG4gICAqIElmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCwgYW5kIHRoZSBzb3VyY2UgbGlzdCBjb250YWlucyBhbiBpdGVtIHRoYXQgbWF0Y2hlc1xyXG4gICAqIHRoZSBnaXZlbiBjb25kaXRpb24sIGl0IGNyZWF0ZXMgYSBuZXcgbW9kZWwgdXNpbmcgdGhlIGdpdmVuIG1vZGVsIGZhY3RvcnkgYW5kIGFkZHMgaXQgdG8gdGhlIG1hcC5cclxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc2VhcmNoIGluLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxyXG4gICAqIEBwYXJhbSBzb3VyY2VMaXN0IFRoZSBsaXN0IG9mIHJhdyBpdGVtcyB0byBzZWFyY2ggaW4uXHJcbiAgICogQHBhcmFtIG1hdGNoRm4gVGhlIGNvbmRpdGlvbiB0byBtYXRjaCBhZ2FpbnN0IHJhdyBpdGVtcy5cclxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBmcm9tIHJhdyBpdGVtLlxyXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleSwgb3IgbnVsbCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cclxuICAgKi9cclxuICBwcml2YXRlIGdldEZyb21NYXBPckNyZWF0ZTxUUmF3LCBUTW9kZWw+KFxyXG4gICAgbWFwOiBNYXA8c3RyaW5nLCBUTW9kZWwgfCBudWxsPixcclxuICAgIGtleTogc3RyaW5nLFxyXG4gICAgc291cmNlTGlzdDogVFJhd1tdLFxyXG4gICAgbWF0Y2hGbjogKGl0ZW06IFRSYXcpID0+IGJvb2xlYW4sXHJcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUUmF3KSA9PiBUTW9kZWxcclxuICApOiBUTW9kZWwgfCBudWxsIHtcclxuICAgIGlmICgha2V5KSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChtYXAuaGFzKGtleSkpIHJldHVybiBtYXAuZ2V0KGtleSkgfHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCBpdGVtID0gc291cmNlTGlzdD8uZmluZChtYXRjaEZuKTtcclxuICAgIGNvbnN0IG1vZGVsID0gaXRlbSA/IG1vZGVsRmFjdG9yeShpdGVtKSA6IG51bGw7XHJcbiAgICBtYXAuc2V0KGtleSwgbW9kZWwpO1xyXG4gICAgcmV0dXJuIG1vZGVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF6aWx5IGluaXRpYWxpemVzIGEgbGlzdCBvZiBtb2RlbHMgZnJvbSBhIHNvdXJjZSBsaXN0LlxyXG4gICAqIEl0IGNyZWF0ZXMgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZHMgaXQgdG8gdGhlIGdpdmVuIG1hcC5cclxuICAgKiBJdCBhbHNvIHNldHMgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXHJcbiAgICogQHBhcmFtIGxpc3RSZWYgVGhlIHJlZmVyZW5jZSB0byB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICogQHBhcmFtIHNldHRlciBUaGUgc2V0dGVyIHRvIHNldCB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICogQHBhcmFtIHNvdXJjZUxpc3QgVGhlIHNvdXJjZSBsaXN0IG9mIGl0ZW1zLlxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byBzdG9yZSB0aGUgbW9kZWxzLlxyXG4gICAqIEBwYXJhbSBnZXRLZXlzIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgZm9yIHRoZSBnaXZlbiBpdGVtLlxyXG4gICAqIEBwYXJhbSBtb2RlbEZhY3RvcnkgVGhlIGZhY3RvcnkgdG8gY3JlYXRlIGEgbmV3IG1vZGVsIGZvciB0aGUgZ2l2ZW4gaXRlbS5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsYXp5SW5pdExpc3Q8VCwgTT4oXHJcbiAgICBsaXN0UmVmOiBNW10gfCBudWxsLFxyXG4gICAgc2V0dGVyOiAobGlzdDogTVtdKSA9PiB2b2lkLFxyXG4gICAgc291cmNlTGlzdDogVFtdLFxyXG4gICAgbWFwOiBNYXA8c3RyaW5nLCBNIHwgbnVsbD4sXHJcbiAgICBnZXRLZXlzOiAoaXRlbTogVCkgPT4gc3RyaW5nW10sXHJcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUKSA9PiBNXHJcbiAgKTogTVtdIHtcclxuICAgIC8vIElmIHRoZSBsaXN0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJldHVybiBpdC5cclxuICAgIGlmIChsaXN0UmVmKSByZXR1cm4gbGlzdFJlZjtcclxuXHJcbiAgICAvLyBDcmVhdGUgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZCBpdCB0byB0aGUgbWFwLlxyXG4gICAgY29uc3QgbW9kZWxzID0gc291cmNlTGlzdC5tYXAoKGl0ZW06IFQpID0+IHtcclxuICAgICAgY29uc3QgbW9kZWwgPSBtb2RlbEZhY3RvcnkoaXRlbSk7XHJcbiAgICAgIGdldEtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4gbWFwLnNldChrZXksIG1vZGVsKSk7XHJcbiAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldCB0aGUgbGlzdCBvZiBtb2RlbHMgdG8gdGhlIGdpdmVuIHNldHRlci5cclxuICAgIHNldHRlcihtb2RlbHMpO1xyXG5cclxuICAgIC8vIFJldHVybiB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICByZXR1cm4gbW9kZWxzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYW4gYXBwIG9iamVjdCBpbiB0aGUgbWFwIGJ5IGl0cyBuYW1lIG9yIGlkLlxyXG4gICAqIElmIHRoZSBhcHAgb2JqZWN0IGlzIG5vdCBmb3VuZCwgaXQgY3JlYXRlcyBhIG5ldyBvbmUgYW5kIGFkZHMgaXQgdG8gdGhlIG1hcC5cclxuICAgKiBAcGFyYW0gbmFtZU9ySWQgVGhlIG5hbWUgb3IgaWQgb2YgdGhlIGFwcCBvYmplY3QgdG8gZmluZC5cclxuICAgKiBAcmV0dXJucyBUaGUgYXBwIG9iamVjdCBpZiBmb3VuZCwgb3IgbnVsbCBpZiBub3QgZm91bmQuXHJcbiAgICovXHJcbiAgZ2V0QXBwT2JqZWN0QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwT2JqZWN0TW9kZWwgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcclxuICAgICAgdGhpcy5hcHBPYmplY3RNYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5hcHBPYmplY3RzLFxyXG4gICAgICAob2JqOiBhbnkpID0+IG9iai5hcHBPYmplY3ROYW1lID09PSBuYW1lT3JJZCB8fCBvYmouYXBwT2JqZWN0SWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAob2JqOiBhbnkpID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmosIHRoaXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgYXBwIG9iamVjdHMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggYXBwIG9iamVjdC5cclxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIG9iamVjdHMuXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYXBwIG9iamVjdHMuXHJcbiAgICovXHJcbiAgZ2V0QWxsQXBwT2JqZWN0cyhmaWx0ZXJGbj86IChvYmo6IEFwcE9iamVjdE1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogQXBwT2JqZWN0TW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGFwcCBvYmplY3RzIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxBcHBPYmplY3RzLFxyXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwT2JqZWN0cyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLmFwcE9iamVjdHMsXHJcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxyXG4gICAgICAob2JqOiBhbnkpID0+IFtvYmouYXBwT2JqZWN0SWQ/LnRvTG93ZXJDYXNlKCksIG9iai5hcHBPYmplY3ROYW1lXSxcclxuICAgICAgb2JqID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmosIHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBmaWx0ZXJlZExpc3Q6IEFwcE9iamVjdE1vZGVsW10gPSBsaXN0O1xyXG4gICAgaWYgKCFpbmNsdWRlU3lzdGVtRGF0YSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50QXBwSWQgPSB0aGlzLmdldEN1cnJlbnRBcHBJZCgpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBmaWx0ZXJlZExpc3QgPSBsaXN0LmZpbHRlcihvYmogPT5cclxuICAgICAgICAhb2JqLkFwcElkIHx8ICAgICAgICAgICAgICAgICAgICAvLyBHbG9iYWwgZGF0YSAoYXBwID0gbnVsbClcclxuICAgICAgICBvYmouQXBwSWQgPT09IGN1cnJlbnRBcHBJZCAgICAgICAvLyBDdXJyZW50IGFwcCBkYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gZmlsdGVyZWRMaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBmaWx0ZXJlZExpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBmaWVsZHMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggZmllbGQuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBmaWVsZHMuXHJcbiAgICovXHJcbiAgZ2V0QWxsRmllbGRzKGZpbHRlckZuPzogKGZpZWxkOiBBcHBGaWVsZE1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogQXBwRmllbGRNb2RlbFtdIHtcclxuICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIGZpZWxkcyBmcm9tIGFsbCBhcHAgb2JqZWN0cy5cclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyh1bmRlZmluZWQsIGluY2x1ZGVTeXN0ZW1EYXRhKS5mbGF0TWFwKG9iaiA9PiBvYmouZmllbGRzKCkpO1xyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBmaWVsZHMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBhbGxGaWVsZHMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbEZpZWxkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGEgZmllbGQgYnkgaXRzIElEIGFjcm9zcyBhbGwgYXBwIG9iamVjdHNcclxuICAgKiBAcGFyYW0gZmllbGRJZCBUaGUgSUQgb2YgdGhlIGZpZWxkIHRvIGZpbmRcclxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgaWYgZm91bmQsIG9yIG51bGwgaWYgbm90IGZvdW5kXHJcbiAgICovXHJcbiAgZ2V0RmllbGRCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBGaWVsZE1vZGVsIHwgbnVsbCB7XHJcbiAgICBpZiAoIW5hbWVPcklkKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PlxyXG4gICAgICBmaWVsZC5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHxcclxuICAgICAgZmllbGQuRmllbGROYW1lID09PSBuYW1lT3JJZCxcclxuICAgICAgdHJ1ZVxyXG4gICAgKVswXSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcyBpbiB0aGUgbWV0YWRhdGEuXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzLlxyXG4gICAqL1xyXG4gIGdldEFsbERhdGFTb3VyY2VRdWVyaWVzKGZpbHRlckZuPzogKGRzcTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwpID0+IGJvb2xlYW4sIGluY2x1ZGVTeXN0ZW1EYXRhID0gZmFsc2UpOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcclxuICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgZnJvbSBhbGwgYXBwIG9iamVjdHMuXHJcbiAgICBjb25zdCBhbGxEU1FzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKHVuZGVmaW5lZCwgaW5jbHVkZVN5c3RlbURhdGEpLmZsYXRNYXAob2JqID0+IG9iai5kYXRhU291cmNlUXVlcmllcygpKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbERTUXMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbERTUXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBkYXRhIHNvdXJjZSBxdWVyeSBieSBpdHMgSUQsIFF1ZXJ5TmFtZSwgb3IgRGlzcGxheU5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsfSAtIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsIHtcclxuICAgIC8vIFNlYXJjaCBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGJ5IElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lXHJcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyh1bmRlZmluZWQsIHRydWUpLmZpbmQoXHJcbiAgICAgIGRzcSA9PiBkc3E/LklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBkc3E/LlF1ZXJ5TmFtZSA9PT0gbmFtZU9ySWQgfHwgZHNxPy5EaXNwbGF5TmFtZSA9PT0gbmFtZU9ySWRcclxuICAgICkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhbiBhcHAgc2NyZWVuIGJ5IGl0cyBJRCwgTmFtZSwgb3IgRGlzcGxheU5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIHNjcmVlbnMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgYXBwIHNjcmVlbiB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7QXBwU2NyZWVuTW9kZWwgfCBudWxsfSAtIFRoZSBhcHAgc2NyZWVuIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRBcHBTY3JlZW5CeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBTY3JlZW5Nb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLmFwcFNjcmVlbk1hcCxcclxuICAgICAgbmFtZU9ySWQsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLnNjcmVlbnMsXHJcbiAgICAgIChzY3JlZW46IGFueSkgPT4gc2NyZWVuPy5zY3JlZW5JZD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgc2NyZWVuPy5zY3JlZW5OYW1lID09PSBuYW1lT3JJZCxcclxuICAgICAgKHNjcmVlbjogYW55KSA9PiBuZXcgQXBwU2NyZWVuTW9kZWwoc2NyZWVuKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIGFwcCBzY3JlZW5zLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBhcHAgc2NyZWVucy5cclxuICAgKiBAcmV0dXJucyB7QXBwU2NyZWVuTW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgKi9cclxuICBnZXRBbGxBcHBTY3JlZW5zKGZpbHRlckZuPzogKHNjcmVlbjogQXBwU2NyZWVuTW9kZWwpID0+IGJvb2xlYW4pOiBBcHBTY3JlZW5Nb2RlbFtdIHtcclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMgbGF6aWx5LlxyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxyXG4gICAgICB0aGlzLmFsbEFwcFNjcmVlbnMsXHJcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBTY3JlZW5zID0gdmFsKSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uc2NyZWVucyxcclxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAsXHJcbiAgICAgIChzOiBhbnkpID0+IFtzPy5zY3JlZW5JZD8udG9Mb3dlckNhc2UoKSwgcz8uc2NyZWVuTmFtZV0sXHJcbiAgICAgIHMgPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGxpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGxpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW4gb3JnYW5pemF0aW9uIGluZm8gYnkgaXRzIElEIG9yIFRlbmFudENvZGUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgb3JnYW5pemF0aW9uIGluZm8gYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JUZW5hbnRDb2RlIC0gVGhlIElEIG9yIFRlbmFudENvZGUgb2YgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtPcmdJbmZvTW9kZWwgfCBudWxsfSAtIFRoZSBvcmdhbml6YXRpb24gaW5mbyBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0T3JnSW5mb0J5SWRPclRlbmFudENvZGUobmFtZU9yVGVuYW50Q29kZTogc3RyaW5nKTogT3JnSW5mb01vZGVsIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXHJcbiAgICAgIHRoaXMub3JnSW5mb01hcCxcclxuICAgICAgbmFtZU9yVGVuYW50Q29kZSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIGJ5IElEIG9yIFRlbmFudENvZGVcclxuICAgICAgKG9yZzogYW55KSA9PiBvcmcuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPclRlbmFudENvZGU/LnRvTG93ZXJDYXNlKCkgfHwgb3JnLlRlbmFudENvZGUgPT09IG5hbWVPclRlbmFudENvZGUsXHJcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBPcmdJbmZvTW9kZWwgaWYgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIGlzIGZvdW5kXHJcbiAgICAgIChvcmc6IGFueSkgPT4gbmV3IE9yZ0luZm9Nb2RlbChvcmcpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBvcmdhbml6YXRpb24gaW5mby5cclxuICAgKiBAcmV0dXJucyB7T3JnSW5mb01vZGVsW119IC0gVGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICovXHJcbiAgZ2V0QWxsT3JnSW5mb3MoZmlsdGVyRm4/OiAob3JnOiBPcmdJbmZvTW9kZWwpID0+IGJvb2xlYW4pOiBPcmdJbmZvTW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxPcmdJbmZvcyxcclxuICAgICAgdmFsID0+ICh0aGlzLmFsbE9yZ0luZm9zID0gdmFsKSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXHJcbiAgICAgIHRoaXMub3JnSW5mb01hcCxcclxuICAgICAgKG9yZzogYW55KSA9PiBbb3JnPy5JRD8udG9Mb3dlckNhc2UoKSwgb3JnPy5UZW5hbnRDb2RlXSxcclxuICAgICAgb3JnID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybXMgYSBnbG9iYWwgc2VhcmNoIGFjcm9zcyBhbGwgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc2VhcmNoIHRlcm0uXHJcbiAgICogWW91IGNhbiBuYXJyb3cgdGhlIHNlYXJjaCBieSBwcm92aWRpbmcgYSBsaXN0IG9mIGVudGl0eSB0eXBlcyB0byBzZWFyY2ggd2l0aGluLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtIC0gVGhlIHNlYXJjaCB0ZXJtIHRvIHNlYXJjaCBmb3IuXHJcbiAgICogQHBhcmFtIHtNZXRhZGF0YUVudGl0eVR5cGVbXX0gZW50aXR5VHlwZXMgLSBUaGUgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi4gSWYgb21pdHRlZCwgYWxsIGVudGl0eSB0eXBlcyBhcmUgc2VhcmNoZWQuXHJcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueVtdPn0gLSBBIGRpY3Rpb25hcnkgd2l0aCByZXN1bHRzIGdyb3VwZWQgYnkgZW50aXR5IHR5cGUuXHJcbiAgICovXHJcbiAgc2VhcmNoTWV0YWRhdGEodGVybTogc3RyaW5nLCBlbnRpdHlUeXBlcz86IE1ldGFkYXRhRW50aXR5VHlwZVtdKTogUmVjb3JkPHN0cmluZywgYW55W10+IHtcclxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhIGdpdmVuIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cclxuICAgICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlfSB0eXBlIC0gVGhlIGVudGl0eSB0eXBlIHRvIGNoZWNrLlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgZW50aXR5IHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxyXG4gICAgICovXHJcbiAgICBjb25zdCBzaG91bGRTZWFyY2ggPSAodHlwZTogTWV0YWRhdGFFbnRpdHlUeXBlKSA9PiAhZW50aXR5VHlwZXMgfHwgZW50aXR5VHlwZXMuaW5jbHVkZXModHlwZSk7XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX09CSkVDVFMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIG9iamVjdHMgYnkgSUQsIE9iamVjdE5hbWUsIERpc3BsYXlOYW1lLCBvciBTeXN0ZW1EQlRhYmxlTmFtZVxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9PQkpFQ1RTXSA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT5cclxuICAgICAgICBbb2JqPy5JRCwgb2JqPy5PYmplY3ROYW1lLCBvYmo/LkRpc3BsYXlOYW1lLCBvYmo/LlN5c3RlbURCVGFibGVOYW1lXVxyXG4gICAgICAgICAgLnNvbWUodmFsID0+IHZhbCA9PT0gc2VhcmNoVGVybSB8fCB2YWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEUykpIHtcclxuICAgICAgLy8gU2VhcmNoIGZvciBhcHAgZmllbGRzIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXHJcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEU10gPSB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PiBmaWVsZC5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgZGF0YSBzb3VyY2UgcXVlcmllcyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVNdID0gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyhkc3EgPT4gZHNxLnNlYXJjaChzZWFyY2hUZXJtKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIHNjcmVlbnMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfU0NSRUVOU10gPSB0aGlzLmdldEFsbEFwcFNjcmVlbnMoc2NyZWVuID0+IHNjcmVlbi5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW4gYXBwIG1lbnUgYnkgaXRzIElEIG9yIG5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIG1lbnVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9ySWQgLSBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgYXBwIG1lbnUgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0FwcE1lbnVNb2RlbCB8IG51bGx9IC0gVGhlIGFwcCBtZW51IG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRBcHBNZW51QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwTWVudU1vZGVsIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXHJcbiAgICAgIHRoaXMuYXBwTWVudU1hcCxcclxuICAgICAgbmFtZU9ySWQsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk1lbnVzLFxyXG4gICAgICAvLyBTZWFyY2ggZm9yIHRoZSBhcHAgbWVudSBieSBJRCBvciBuYW1lXHJcbiAgICAgIChtZW51OiBhbnkpID0+IG1lbnU/LklkPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBtZW51Py5NZW51TmFtZSA9PT0gbmFtZU9ySWQsXHJcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBBcHBNZW51TW9kZWwgaWYgdGhlIGFwcCBtZW51IGlzIGZvdW5kXHJcbiAgICAgIChtZW51OiBhbnkpID0+IG5ldyBBcHBNZW51TW9kZWwobWVudSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBhcHAgbWVudXMuXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2YgYXBwIG1lbnVzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIG1lbnVzLlxyXG4gICAqIEByZXR1cm5zIHtBcHBNZW51TW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBhcHAgbWVudXMuXHJcbiAgICovXHJcbiAgZ2V0QWxsQXBwTWVudXMoZmlsdGVyRm4/OiAobWVudTogQXBwTWVudU1vZGVsKSA9PiBib29sZWFuKTogQXBwTWVudU1vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsQXBwTWVudXMsXHJcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBNZW51cyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk1lbnVzLFxyXG4gICAgICB0aGlzLmFwcE1lbnVNYXAsXHJcbiAgICAgIChtOiBhbnkpID0+IFttPy5JZD8udG9Mb3dlckNhc2UoKSwgbT8uTmFtZV0sXHJcbiAgICAgIHMgPT4gbmV3IEFwcE1lbnVNb2RlbChzKVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXJzIGFsbCBjYWNoZWQgbWV0YWRhdGEgc2FmZWx5LlxyXG4gICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbiBjb250ZXh0IGNoYW5nZXMgKGUuZy4sIHdoZW4gYXBwLCBvcmcsIG9yIHNlc3Npb24gY2hhbmdlcykuXHJcbiAgICovXHJcbiAgY2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIENsZWFyIG1hcHNcclxuICAgICAgdGhpcy5hcHBPYmplY3RNYXAuY2xlYXIoKTtcclxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAuY2xlYXIoKTtcclxuICAgICAgdGhpcy5vcmdJbmZvTWFwLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuYXBwTWVudU1hcC5jbGVhcigpO1xyXG5cclxuICAgICAgLy8gUmVzZXQgbGlzdHNcclxuICAgICAgdGhpcy5hbGxBcHBPYmplY3RzID0gbnVsbDtcclxuICAgICAgdGhpcy5hbGxBcHBTY3JlZW5zID0gbnVsbDtcclxuICAgICAgdGhpcy5hbGxPcmdJbmZvcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsQXBwTWVudXMgPSBudWxsO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignTWV0YWRhdGFIZWxwZXIgRmFpbGVkIHRvIGNsZWFyIGNhY2hlOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59Il19
|
|
304
|
+
}], ctorParameters: () => [] });
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLGNBQWM7SUFlekI7UUFkUSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFDcEQsZ0JBQVcsR0FBMEIsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNwRCxnQkFBVyxHQUEwQixJQUFJLENBQUM7UUFFakMs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eyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBBcHBPYmplY3RNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLW9iamVjdC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBcHBGaWVsZE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtZmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsXCI7XHJcbmltcG9ydCB7IE1ldGFkYXRhRW50aXR5VHlwZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3NjaGVtYS5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQXBwU2NyZWVuTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1zY3JlZW4ubW9kZWxcIjtcclxuaW1wb3J0IHsgT3JnSW5mb01vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9vcmdJbmZvLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFwcE1lbnVNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLW1lbnUubW9kZWxcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2F1dGgvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RvcmFnZUNvbnN0YW50cyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YUhlbHBlciB7XHJcbiAgcHJpdmF0ZSBhcHBPYmplY3RNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwT2JqZWN0TW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsQXBwT2JqZWN0czogQXBwT2JqZWN0TW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGFwcFNjcmVlbk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBTY3JlZW5Nb2RlbCB8IG51bGw+KCk7XHJcbiAgcHJpdmF0ZSBhbGxBcHBTY3JlZW5zOiBBcHBTY3JlZW5Nb2RlbFtdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgb3JnSW5mb01hcCA9IG5ldyBNYXA8c3RyaW5nLCBPcmdJbmZvTW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsT3JnSW5mb3M6IE9yZ0luZm9Nb2RlbFtdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgYXBwTWVudU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBNZW51TW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsQXBwTWVudXM6IEFwcE1lbnVNb2RlbFtdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBBdXRvLWludmFsaWRhdGUgZXZlcnkgY2FjaGVkIG1vZGVsIHdoZW5ldmVyIENvbW1vbi50YWJKc29uIGlzIHJlYXNzaWduZWQuXHJcbiAgICAvLyBUaGlzIGlzIHRoZSBzaW5nbGUgcG9pbnQgb2YgY2FjaGUgaW52YWxpZGF0aW9uIOKAlCBubyBjYWxsZXIgbmVlZHMgdG8gY2FsbFxyXG4gICAgLy8gY2xlYXJDYWNoZSgpIGV4cGxpY2l0bHkgYW55d2hlcmUgZWxzZS5cclxuICAgIENvbW1vbi5vblNjaGVtYUNoYW5nZSgoKSA9PiB0aGlzLmNsZWFyQ2FjaGUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCBjdXJyZW50IGFwcCBJRCBmcm9tIHNlc3Npb25cclxuICAgKiBAcmV0dXJucyBDdXJyZW50IGFwcCBJRCBvciBudWxsIGlmIG5vdCBhdmFpbGFibGVcclxuICAgKi9cclxuICBwcml2YXRlIGdldEN1cnJlbnRBcHBJZCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGFwcEluZm8gPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLmFwcEluZm8pO1xyXG4gICAgICBjb25zdCBwYXJzZWRBcHBJbmZvID0gYXBwSW5mbyA/IEpTT04ucGFyc2UoYXBwSW5mbykgOiBudWxsO1xyXG4gICAgICByZXR1cm4gcGFyc2VkQXBwSW5mbz8uSWQgfHwgbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGdldCBjdXJyZW50IGFwcCBJRCBmcm9tIHNlc3Npb246JywgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGZyb20gdGhlIGdpdmVuIG1hcC5cclxuICAgKiBJZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAsIGFuZCB0aGUgc291cmNlIGxpc3QgY29udGFpbnMgYW4gaXRlbSB0aGF0IG1hdGNoZXNcclxuICAgKiB0aGUgZ2l2ZW4gY29uZGl0aW9uLCBpdCBjcmVhdGVzIGEgbmV3IG1vZGVsIHVzaW5nIHRoZSBnaXZlbiBtb2RlbCBmYWN0b3J5IGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXHJcbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIHRvIHNlYXJjaCBpbi5cclxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cclxuICAgKiBAcGFyYW0gc291cmNlTGlzdCBUaGUgbGlzdCBvZiByYXcgaXRlbXMgdG8gc2VhcmNoIGluLlxyXG4gICAqIEBwYXJhbSBtYXRjaEZuIFRoZSBjb25kaXRpb24gdG8gbWF0Y2ggYWdhaW5zdCByYXcgaXRlbXMuXHJcbiAgICogQHBhcmFtIG1vZGVsRmFjdG9yeSBUaGUgZmFjdG9yeSB0byBjcmVhdGUgYSBuZXcgbW9kZWwgZnJvbSByYXcgaXRlbS5cclxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXksIG9yIG51bGwgaWYgbm8gbWF0Y2ggaXMgZm91bmQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRGcm9tTWFwT3JDcmVhdGU8VFJhdywgVE1vZGVsPihcclxuICAgIG1hcDogTWFwPHN0cmluZywgVE1vZGVsIHwgbnVsbD4sXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICAgIHNvdXJjZUxpc3Q6IFRSYXdbXSxcclxuICAgIG1hdGNoRm46IChpdGVtOiBUUmF3KSA9PiBib29sZWFuLFxyXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVFJhdykgPT4gVE1vZGVsXHJcbiAgKTogVE1vZGVsIHwgbnVsbCB7XHJcbiAgICBpZiAoIWtleSkgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAobWFwLmhhcyhrZXkpKSByZXR1cm4gbWFwLmdldChrZXkpIHx8IG51bGw7XHJcblxyXG4gICAgY29uc3QgaXRlbSA9IHNvdXJjZUxpc3Q/LmZpbmQobWF0Y2hGbik7XHJcbiAgICBjb25zdCBtb2RlbCA9IGl0ZW0gPyBtb2RlbEZhY3RvcnkoaXRlbSkgOiBudWxsO1xyXG4gICAgbWFwLnNldChrZXksIG1vZGVsKTtcclxuICAgIHJldHVybiBtb2RlbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExhemlseSBpbml0aWFsaXplcyBhIGxpc3Qgb2YgbW9kZWxzIGZyb20gYSBzb3VyY2UgbGlzdC5cclxuICAgKiBJdCBjcmVhdGVzIGEgbmV3IG1vZGVsIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHNvdXJjZSBsaXN0IGFuZCBhZGRzIGl0IHRvIHRoZSBnaXZlbiBtYXAuXHJcbiAgICogSXQgYWxzbyBzZXRzIHRoZSBsaXN0IG9mIG1vZGVscyB0byB0aGUgZ2l2ZW4gc2V0dGVyLlxyXG4gICAqIEBwYXJhbSBsaXN0UmVmIFRoZSByZWZlcmVuY2UgdG8gdGhlIGxpc3Qgb2YgbW9kZWxzLlxyXG4gICAqIEBwYXJhbSBzZXR0ZXIgVGhlIHNldHRlciB0byBzZXQgdGhlIGxpc3Qgb2YgbW9kZWxzLlxyXG4gICAqIEBwYXJhbSBzb3VyY2VMaXN0IFRoZSBzb3VyY2UgbGlzdCBvZiBpdGVtcy5cclxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc3RvcmUgdGhlIG1vZGVscy5cclxuICAgKiBAcGFyYW0gZ2V0S2V5cyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIGZvciB0aGUgZ2l2ZW4gaXRlbS5cclxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBmb3IgdGhlIGdpdmVuIGl0ZW0uXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgbW9kZWxzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgbGF6eUluaXRMaXN0PFQsIE0+KFxyXG4gICAgbGlzdFJlZjogTVtdIHwgbnVsbCxcclxuICAgIHNldHRlcjogKGxpc3Q6IE1bXSkgPT4gdm9pZCxcclxuICAgIHNvdXJjZUxpc3Q6IFRbXSxcclxuICAgIG1hcDogTWFwPHN0cmluZywgTSB8IG51bGw+LFxyXG4gICAgZ2V0S2V5czogKGl0ZW06IFQpID0+IHN0cmluZ1tdLFxyXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVCkgPT4gTVxyXG4gICk6IE1bXSB7XHJcbiAgICAvLyBJZiB0aGUgbGlzdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCByZXR1cm4gaXQuXHJcbiAgICBpZiAobGlzdFJlZikgcmV0dXJuIGxpc3RSZWY7XHJcblxyXG4gICAgLy8gQ3JlYXRlIGEgbmV3IG1vZGVsIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHNvdXJjZSBsaXN0IGFuZCBhZGQgaXQgdG8gdGhlIG1hcC5cclxuICAgIGNvbnN0IG1vZGVscyA9IHNvdXJjZUxpc3QubWFwKChpdGVtOiBUKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1vZGVsID0gbW9kZWxGYWN0b3J5KGl0ZW0pO1xyXG4gICAgICBnZXRLZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IG1hcC5zZXQoa2V5LCBtb2RlbCkpO1xyXG4gICAgICByZXR1cm4gbW9kZWw7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBTZXQgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXHJcbiAgICBzZXR0ZXIobW9kZWxzKTtcclxuXHJcbiAgICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgbW9kZWxzLlxyXG4gICAgcmV0dXJuIG1vZGVscztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGFuIGFwcCBvYmplY3QgaW4gdGhlIG1hcCBieSBpdHMgbmFtZSBvciBpZC5cclxuICAgKiBJZiB0aGUgYXBwIG9iamVjdCBpcyBub3QgZm91bmQsIGl0IGNyZWF0ZXMgYSBuZXcgb25lIGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXHJcbiAgICogQHBhcmFtIG5hbWVPcklkIFRoZSBuYW1lIG9yIGlkIG9mIHRoZSBhcHAgb2JqZWN0IHRvIGZpbmQuXHJcbiAgICogQHJldHVybnMgVGhlIGFwcCBvYmplY3QgaWYgZm91bmQsIG9yIG51bGwgaWYgbm90IGZvdW5kLlxyXG4gICAqL1xyXG4gIGdldEFwcE9iamVjdEJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcE9iamVjdE1vZGVsIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXHJcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxyXG4gICAgICBuYW1lT3JJZCxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uYXBwT2JqZWN0cyxcclxuICAgICAgKG9iajogYW55KSA9PiBvYmouYXBwT2JqZWN0TmFtZSA9PT0gbmFtZU9ySWQgfHwgb2JqLmFwcE9iamVjdElkPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSxcclxuICAgICAgKG9iajogYW55KSA9PiBuZXcgQXBwT2JqZWN0TW9kZWwob2JqLCB0aGlzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFwcCBvYmplY3RzIGluIHRoZSBtZXRhZGF0YS5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byBlYWNoIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBvYmplY3RzLlxyXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxyXG4gICAqL1xyXG4gIGdldEFsbEFwcE9iamVjdHMoZmlsdGVyRm4/OiAob2JqOiBBcHBPYmplY3RNb2RlbCkgPT4gYm9vbGVhbiwgaW5jbHVkZVN5c3RlbURhdGEgPSBmYWxzZSk6IEFwcE9iamVjdE1vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsQXBwT2JqZWN0cyxcclxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcE9iamVjdHMgPSB2YWwpLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5hcHBPYmplY3RzLFxyXG4gICAgICB0aGlzLmFwcE9iamVjdE1hcCxcclxuICAgICAgKG9iajogYW55KSA9PiBbb2JqLmFwcE9iamVjdElkPy50b0xvd2VyQ2FzZSgpLCBvYmouYXBwT2JqZWN0TmFtZV0sXHJcbiAgICAgIG9iaiA9PiBuZXcgQXBwT2JqZWN0TW9kZWwob2JqLCB0aGlzKVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgZmlsdGVyZWRMaXN0OiBBcHBPYmplY3RNb2RlbFtdID0gbGlzdDtcclxuICAgIGlmICghaW5jbHVkZVN5c3RlbURhdGEpIHtcclxuICAgICAgY29uc3QgY3VycmVudEFwcElkID0gdGhpcy5nZXRDdXJyZW50QXBwSWQoKT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgZmlsdGVyZWRMaXN0ID0gbGlzdC5maWx0ZXIob2JqID0+XHJcbiAgICAgICAgIW9iai5BcHBJZCB8fCAgICAgICAgICAgICAgICAgICAgLy8gR2xvYmFsIGRhdGEgKGFwcCA9IG51bGwpXHJcbiAgICAgICAgb2JqLkFwcElkID09PSBjdXJyZW50QXBwSWQgICAgICAgLy8gQ3VycmVudCBhcHAgZGF0YVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGZpbHRlcmVkTGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogZmlsdGVyZWRMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmllbGRzIGluIHRoZSBtZXRhZGF0YS5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byBlYWNoIGZpZWxkLlxyXG4gICAqIEBwYXJhbSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZmllbGRzLlxyXG4gICAqL1xyXG4gIGdldEFsbEZpZWxkcyhmaWx0ZXJGbj86IChmaWVsZDogQXBwRmllbGRNb2RlbCkgPT4gYm9vbGVhbiwgaW5jbHVkZVN5c3RlbURhdGEgPSBmYWxzZSk6IEFwcEZpZWxkTW9kZWxbXSB7XHJcbiAgICAvLyBHZXQgYSBsaXN0IG9mIGFsbCBmaWVsZHMgZnJvbSBhbGwgYXBwIG9iamVjdHMuXHJcbiAgICBjb25zdCBhbGxGaWVsZHMgPSB0aGlzLmdldEFsbEFwcE9iamVjdHModW5kZWZpbmVkLCBpbmNsdWRlU3lzdGVtRGF0YSkuZmxhdE1hcChvYmogPT4gb2JqLmZpZWxkcygpKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gYWxsRmllbGRzLmZpbHRlcihmaWx0ZXJGbikgOiBhbGxGaWVsZHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kcyBhIGZpZWxkIGJ5IGl0cyBJRCBhY3Jvc3MgYWxsIGFwcCBvYmplY3RzXHJcbiAgICogQHBhcmFtIGZpZWxkSWQgVGhlIElEIG9mIHRoZSBmaWVsZCB0byBmaW5kXHJcbiAgICogQHJldHVybnMgVGhlIGZpZWxkIGlmIGZvdW5kLCBvciBudWxsIGlmIG5vdCBmb3VuZFxyXG4gICAqL1xyXG4gIGdldEZpZWxkQnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwRmllbGRNb2RlbCB8IG51bGwge1xyXG4gICAgaWYgKCFuYW1lT3JJZCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxGaWVsZHMoZmllbGQgPT5cclxuICAgICAgZmllbGQuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8XHJcbiAgICAgIGZpZWxkLkZpZWxkTmFtZSA9PT0gbmFtZU9ySWQsXHJcbiAgICAgIHRydWVcclxuICAgIClbMF0gfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGRhdGEgc291cmNlIHF1ZXJpZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgKi9cclxuICBnZXRBbGxEYXRhU291cmNlUXVlcmllcyhmaWx0ZXJGbj86IChkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB7XHJcbiAgICAvLyBHZXQgYSBsaXN0IG9mIGFsbCBkYXRhIHNvdXJjZSBxdWVyaWVzIGZyb20gYWxsIGFwcCBvYmplY3RzLlxyXG4gICAgY29uc3QgYWxsRFNRcyA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyh1bmRlZmluZWQsIGluY2x1ZGVTeXN0ZW1EYXRhKS5mbGF0TWFwKG9iaiA9PiBvYmouZGF0YVNvdXJjZVF1ZXJpZXMoKSk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBhbGxEU1FzLmZpbHRlcihmaWx0ZXJGbikgOiBhbGxEU1FzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZGF0YSBzb3VyY2UgcXVlcnkgYnkgaXRzIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCwgUXVlcnlOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyeU1vZGVsIHwgbnVsbH0gLSBUaGUgZGF0YSBzb3VyY2UgcXVlcnkgbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxyXG4gICAqL1xyXG4gIGdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IERhdGFTb3VyY2VRdWVyeU1vZGVsIHwgbnVsbCB7XHJcbiAgICAvLyBTZWFyY2ggZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSBieSBJRCwgUXVlcnlOYW1lLCBvciBEaXNwbGF5TmFtZVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVF1ZXJpZXModW5kZWZpbmVkLCB0cnVlKS5maW5kKFxyXG4gICAgICBkc3EgPT4gZHNxPy5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgZHNxPy5RdWVyeU5hbWUgPT09IG5hbWVPcklkIHx8IGRzcT8uRGlzcGxheU5hbWUgPT09IG5hbWVPcklkXHJcbiAgICApIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW4gYXBwIHNjcmVlbiBieSBpdHMgSUQsIE5hbWUsIG9yIERpc3BsYXlOYW1lLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGFwcCBzY3JlZW5zIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCwgTmFtZSwgb3IgRGlzcGxheU5hbWUgb2YgdGhlIGFwcCBzY3JlZW4gdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0FwcFNjcmVlbk1vZGVsIHwgbnVsbH0gLSBUaGUgYXBwIHNjcmVlbiBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0QXBwU2NyZWVuQnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwU2NyZWVuTW9kZWwgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcclxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5zY3JlZW5zLFxyXG4gICAgICAoc2NyZWVuOiBhbnkpID0+IHNjcmVlbj8uc2NyZWVuSWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IHNjcmVlbj8uc2NyZWVuTmFtZSA9PT0gbmFtZU9ySWQsXHJcbiAgICAgIChzY3JlZW46IGFueSkgPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHNjcmVlbilcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBhcHAgc2NyZWVucy5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIHNjcmVlbnMuXHJcbiAgICogQHJldHVybnMge0FwcFNjcmVlbk1vZGVsW119IC0gVGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXHJcbiAgICovXHJcbiAgZ2V0QWxsQXBwU2NyZWVucyhmaWx0ZXJGbj86IChzY3JlZW46IEFwcFNjcmVlbk1vZGVsKSA9PiBib29sZWFuKTogQXBwU2NyZWVuTW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxBcHBTY3JlZW5zLFxyXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwU2NyZWVucyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLnNjcmVlbnMsXHJcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLFxyXG4gICAgICAoczogYW55KSA9PiBbcz8uc2NyZWVuSWQ/LnRvTG93ZXJDYXNlKCksIHM/LnNjcmVlbk5hbWVdLFxyXG4gICAgICBzID0+IG5ldyBBcHBTY3JlZW5Nb2RlbChzKVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuIG9yZ2FuaXphdGlvbiBpbmZvIGJ5IGl0cyBJRCBvciBUZW5hbnRDb2RlLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIG9yZ2FuaXphdGlvbiBpbmZvIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9yVGVuYW50Q29kZSAtIFRoZSBJRCBvciBUZW5hbnRDb2RlIG9mIHRoZSBvcmdhbml6YXRpb24gaW5mbyB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7T3JnSW5mb01vZGVsIHwgbnVsbH0gLSBUaGUgb3JnYW5pemF0aW9uIGluZm8gbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxyXG4gICAqL1xyXG4gIGdldE9yZ0luZm9CeUlkT3JUZW5hbnRDb2RlKG5hbWVPclRlbmFudENvZGU6IHN0cmluZyk6IE9yZ0luZm9Nb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXHJcbiAgICAgIG5hbWVPclRlbmFudENvZGUsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk9yZ0luZm9zLFxyXG4gICAgICAvLyBTZWFyY2ggZm9yIHRoZSBvcmdhbml6YXRpb24gaW5mbyBieSBJRCBvciBUZW5hbnRDb2RlXHJcbiAgICAgIChvcmc6IGFueSkgPT4gb3JnLklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JUZW5hbnRDb2RlPy50b0xvd2VyQ2FzZSgpIHx8IG9yZy5UZW5hbnRDb2RlID09PSBuYW1lT3JUZW5hbnRDb2RlLFxyXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgT3JnSW5mb01vZGVsIGlmIHRoZSBvcmdhbml6YXRpb24gaW5mbyBpcyBmb3VuZFxyXG4gICAgICAob3JnOiBhbnkpID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogQHJldHVybnMge09yZ0luZm9Nb2RlbFtdfSAtIFRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqL1xyXG4gIGdldEFsbE9yZ0luZm9zKGZpbHRlckZuPzogKG9yZzogT3JnSW5mb01vZGVsKSA9PiBib29sZWFuKTogT3JnSW5mb01vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mbyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsT3JnSW5mb3MsXHJcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxPcmdJbmZvcyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk9yZ0luZm9zLFxyXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXHJcbiAgICAgIChvcmc6IGFueSkgPT4gW29yZz8uSUQ/LnRvTG93ZXJDYXNlKCksIG9yZz8uVGVuYW50Q29kZV0sXHJcbiAgICAgIG9yZyA9PiBuZXcgT3JnSW5mb01vZGVsKG9yZylcclxuICAgICk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm1zIGEgZ2xvYmFsIHNlYXJjaCBhY3Jvc3MgYWxsIG1ldGFkYXRhIGZvciBhIGdpdmVuIHNlYXJjaCB0ZXJtLlxyXG4gICAqIFlvdSBjYW4gbmFycm93IHRoZSBzZWFyY2ggYnkgcHJvdmlkaW5nIGEgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGVybSAtIFRoZSBzZWFyY2ggdGVybSB0byBzZWFyY2ggZm9yLlxyXG4gICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlW119IGVudGl0eVR5cGVzIC0gVGhlIGxpc3Qgb2YgZW50aXR5IHR5cGVzIHRvIHNlYXJjaCB3aXRoaW4uIElmIG9taXR0ZWQsIGFsbCBlbnRpdHkgdHlwZXMgYXJlIHNlYXJjaGVkLlxyXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnlbXT59IC0gQSBkaWN0aW9uYXJ5IHdpdGggcmVzdWx0cyBncm91cGVkIGJ5IGVudGl0eSB0eXBlLlxyXG4gICAqL1xyXG4gIHNlYXJjaE1ldGFkYXRhKHRlcm06IHN0cmluZywgZW50aXR5VHlwZXM/OiBNZXRhZGF0YUVudGl0eVR5cGVbXSk6IFJlY29yZDxzdHJpbmcsIGFueVtdPiB7XHJcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gdGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbiBlbnRpdHkgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXHJcbiAgICAgKiBAcGFyYW0ge01ldGFkYXRhRW50aXR5VHlwZX0gdHlwZSAtIFRoZSBlbnRpdHkgdHlwZSB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhlIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cclxuICAgICAqL1xyXG4gICAgY29uc3Qgc2hvdWxkU2VhcmNoID0gKHR5cGU6IE1ldGFkYXRhRW50aXR5VHlwZSkgPT4gIWVudGl0eVR5cGVzIHx8IGVudGl0eVR5cGVzLmluY2x1ZGVzKHR5cGUpO1xyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9PQkpFQ1RTKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBvYmplY3RzIGJ5IElELCBPYmplY3ROYW1lLCBEaXNwbGF5TmFtZSwgb3IgU3lzdGVtREJUYWJsZU5hbWVcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfT0JKRUNUU10gPSB0aGlzLmdldEFsbEFwcE9iamVjdHMob2JqID0+XHJcbiAgICAgICAgW29iaj8uSUQsIG9iaj8uT2JqZWN0TmFtZSwgb2JqPy5EaXNwbGF5TmFtZSwgb2JqPy5TeXN0ZW1EQlRhYmxlTmFtZV1cclxuICAgICAgICAgIC5zb21lKHZhbCA9PiB2YWwgPT09IHNlYXJjaFRlcm0gfHwgdmFsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIGZpZWxkcyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFNdID0gdGhpcy5nZXRBbGxGaWVsZHMoZmllbGQgPT4gZmllbGQuc2VhcmNoKHNlYXJjaFRlcm0pKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5EQVRBX1NPVVJDRV9RVUVSSUVTKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGRhdGEgc291cmNlIHF1ZXJpZXMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5EQVRBX1NPVVJDRV9RVUVSSUVTXSA9IHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVF1ZXJpZXMoZHNxID0+IGRzcS5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9TQ1JFRU5TKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBzY3JlZW5zIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXHJcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlNdID0gdGhpcy5nZXRBbGxBcHBTY3JlZW5zKHNjcmVlbiA9PiBzY3JlZW4uc2VhcmNoKHNlYXJjaFRlcm0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuIGFwcCBtZW51IGJ5IGl0cyBJRCBvciBuYW1lLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGFwcCBtZW51cyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElEIG9yIG5hbWUgb2YgdGhlIGFwcCBtZW51IHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtBcHBNZW51TW9kZWwgfCBudWxsfSAtIFRoZSBhcHAgbWVudSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0QXBwTWVudUJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcE1lbnVNb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLmFwcE1lbnVNYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5NZW51cyxcclxuICAgICAgLy8gU2VhcmNoIGZvciB0aGUgYXBwIG1lbnUgYnkgSUQgb3IgbmFtZVxyXG4gICAgICAobWVudTogYW55KSA9PiBtZW51Py5JZD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgbWVudT8uTWVudU5hbWUgPT09IG5hbWVPcklkLFxyXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgQXBwTWVudU1vZGVsIGlmIHRoZSBhcHAgbWVudSBpcyBmb3VuZFxyXG4gICAgICAobWVudTogYW55KSA9PiBuZXcgQXBwTWVudU1vZGVsKG1lbnUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgYXBwIG1lbnVzLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIGFwcCBtZW51cy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiAtIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBtZW51cy5cclxuICAgKiBAcmV0dXJucyB7QXBwTWVudU1vZGVsW119IC0gVGhlIGxpc3Qgb2YgYXBwIG1lbnVzLlxyXG4gICAqL1xyXG4gIGdldEFsbEFwcE1lbnVzKGZpbHRlckZuPzogKG1lbnU6IEFwcE1lbnVNb2RlbCkgPT4gYm9vbGVhbik6IEFwcE1lbnVNb2RlbFtdIHtcclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMgbGF6aWx5LlxyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxyXG4gICAgICB0aGlzLmFsbEFwcE1lbnVzLFxyXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwTWVudXMgPSB2YWwpLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5NZW51cyxcclxuICAgICAgdGhpcy5hcHBNZW51TWFwLFxyXG4gICAgICAobTogYW55KSA9PiBbbT8uSWQ/LnRvTG93ZXJDYXNlKCksIG0/Lk5hbWVdLFxyXG4gICAgICBzID0+IG5ldyBBcHBNZW51TW9kZWwocylcclxuICAgICk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFycyBhbGwgY2FjaGVkIG1ldGFkYXRhIHNhZmVseS5cclxuICAgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb24gY29udGV4dCBjaGFuZ2VzIChlLmcuLCB3aGVuIGFwcCwgb3JnLCBvciBzZXNzaW9uIGNoYW5nZXMpLlxyXG4gICAqL1xyXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBDbGVhciBtYXBzXHJcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMub3JnSW5mb01hcC5jbGVhcigpO1xyXG4gICAgICB0aGlzLmFwcE1lbnVNYXAuY2xlYXIoKTtcclxuXHJcbiAgICAgIC8vIFJlc2V0IGxpc3RzXHJcbiAgICAgIHRoaXMuYWxsQXBwT2JqZWN0cyA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsQXBwU2NyZWVucyA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsT3JnSW5mb3MgPSBudWxsO1xyXG4gICAgICB0aGlzLmFsbEFwcE1lbnVzID0gbnVsbDtcclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ01ldGFkYXRhSGVscGVyIEZhaWxlZCB0byBjbGVhciBjYWNoZTonLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufSJdfQ==
|
|
@@ -12,7 +12,14 @@ export class RequestResponseHelper {
|
|
|
12
12
|
* @returns The payload for the bulk insert operation
|
|
13
13
|
*/
|
|
14
14
|
bulkInsertPayload(table, whereClause, value, fields) {
|
|
15
|
-
return
|
|
15
|
+
return {
|
|
16
|
+
QueryObjectID: table,
|
|
17
|
+
QueryType: QueryType.BulkInsert,
|
|
18
|
+
Joins: [],
|
|
19
|
+
WhereClause: whereClause,
|
|
20
|
+
Values: value,
|
|
21
|
+
Fields: fields,
|
|
22
|
+
};
|
|
16
23
|
}
|
|
17
24
|
/**
|
|
18
25
|
* Generates the payload for deleting data from a table
|
|
@@ -27,25 +34,6 @@ export class RequestResponseHelper {
|
|
|
27
34
|
whereClause: whereClause,
|
|
28
35
|
};
|
|
29
36
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Creates a payload object for bulk insert operations
|
|
32
|
-
* @param table The table name for the payload
|
|
33
|
-
* @param whereClause The filter criteria for the payload
|
|
34
|
-
* @param value The value sets for the payload
|
|
35
|
-
* @param queryType The type of query for the payload (BulkInsert)
|
|
36
|
-
* @param fields Optional list of fields to include in the insert operation
|
|
37
|
-
* @returns The payload object with QueryObjectID, QueryType, Joins, WhereClause, Values, and Fields
|
|
38
|
-
*/
|
|
39
|
-
createBulkInsertPayload(table, whereClause, value, queryType, fields) {
|
|
40
|
-
return {
|
|
41
|
-
QueryObjectID: table,
|
|
42
|
-
QueryType: queryType,
|
|
43
|
-
Joins: [],
|
|
44
|
-
WhereClause: whereClause,
|
|
45
|
-
Values: value,
|
|
46
|
-
Fields: fields,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
37
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: RequestResponseHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
50
38
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: RequestResponseHelper, providedIn: 'root' }); }
|
|
51
39
|
}
|
|
@@ -53,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
|
|
|
53
41
|
type: Injectable,
|
|
54
42
|
args: [{ providedIn: 'root' }]
|
|
55
43
|
}] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRW5ELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUNmLEtBQWEsRUFDYixXQUE4QixFQUM5QixLQUFxQyxFQUNyQyxNQUFpQjtRQUVqQixPQUFPO1lBQ0wsYUFBYSxFQUFFLEtBQUs7WUFDcEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVO1lBQy9CLEtBQUssRUFBRSxFQUFFO1lBQ1QsV0FBVyxFQUFFLFdBQVc7WUFDeEIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUFDLFNBQWlCLEVBQUUsV0FBOEI7UUFDN0QsT0FBTztZQUNMLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFdBQVcsRUFBRSxXQUFXO1NBQ3pCLENBQUM7SUFDSixDQUFDOytHQXJDVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQURSLE1BQU07OzRGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBUElCdWxrSW5zZXJ0RmllbGRzVmFsdWVTZXRzLCBBUElGaWx0ZXJDcml0ZXJpYSB9IGZyb20gJy4uLy4uL21vZGVscy9hcGktcXVlcnkuY2xhc3MnO1xyXG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9xdWVyeS5lbnVtJztcclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFJlcXVlc3RSZXNwb25zZUhlbHBlciB7XHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBwYXlsb2FkIGZvciBpbnNlcnRpbmcgZGF0YSBpbnRvIGEgdGFibGUgaW4gYnVsa1xyXG4gICAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgbmFtZSB0byBpbnNlcnQgZGF0YSBpbnRvXHJcbiAgICogQHBhcmFtIHdoZXJlQ2xhdXNlIFRoZSBmaWx0ZXIgY3JpdGVyaWEgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBzZXRzIHRvIGJlIGluc2VydGVkXHJcbiAgICogQHBhcmFtIGZpZWxkcyBPcHRpb25hbCBsaXN0IG9mIGZpZWxkcyB0byBpbmNsdWRlIGluIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIHBheWxvYWQgZm9yIHRoZSBidWxrIGluc2VydCBvcGVyYXRpb25cclxuICAgKi9cclxuICBidWxrSW5zZXJ0UGF5bG9hZChcclxuICAgIHRhYmxlOiBzdHJpbmcsXHJcbiAgICB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEsXHJcbiAgICB2YWx1ZTogQVBJQnVsa0luc2VydEZpZWxkc1ZhbHVlU2V0c1tdLFxyXG4gICAgZmllbGRzPzogc3RyaW5nW11cclxuICApIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIFF1ZXJ5T2JqZWN0SUQ6IHRhYmxlLFxyXG4gICAgICBRdWVyeVR5cGU6IFF1ZXJ5VHlwZS5CdWxrSW5zZXJ0LFxyXG4gICAgICBKb2luczogW10sXHJcbiAgICAgIFdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZSxcclxuICAgICAgVmFsdWVzOiB2YWx1ZSxcclxuICAgICAgRmllbGRzOiBmaWVsZHMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBwYXlsb2FkIGZvciBkZWxldGluZyBkYXRhIGZyb20gYSB0YWJsZVxyXG4gICAqIE5FVzogUmV0dXJucyBuZXcgZm9ybWF0IGZvciAvcmVjb3Jkcy9kZWxldGUgZW5kcG9pbnRcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChlbnRpdHlOYW1lKSB0byBkZWxldGUgZGF0YSBmcm9tXHJcbiAgICogQHBhcmFtIHdoZXJlQ2xhdXNlIFRoZSBmaWx0ZXIgY3JpdGVyaWEgZm9yIHRoZSBkZWxldGUgb3BlcmF0aW9uIChORVcgZm9ybWF0IHdpdGggbG93ZXJjYXNlKVxyXG4gICAqIEByZXR1cm5zIFRoZSBwYXlsb2FkIGZvciB0aGUgZGVsZXRlIG9wZXJhdGlvbiBpbiBORVcgZm9ybWF0XHJcbiAgICovXHJcbiAgZGVsZXRlUGF5bG9hZCh0YWJsZU5hbWU6IHN0cmluZywgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlbnRpdHlOYW1lOiB0YWJsZU5hbWUsXHJcbiAgICAgIHdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Injectable, inject } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { ConjunctionClause, RelationalOperator, FilterValueType, } from '../../enums/dsq.enum';
|
|
4
4
|
import { APIFilterCriteria } from '../../models/api-query.class';
|
|
5
5
|
import { MetadataHelper } from './meta-data.helpers';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -36,23 +36,6 @@ export class WhereClauseHelper {
|
|
|
36
36
|
bindWhereClauseForDeleteWithMultiplePrimaryKeys(data, fieldName, crudTableName) {
|
|
37
37
|
return this.bindWhereClauseForMultiplePrimaryKeys(data, fieldName, crudTableName);
|
|
38
38
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Binds the where clause for an insert operation
|
|
41
|
-
* @returns The bound where clause for insert operation
|
|
42
|
-
*/
|
|
43
|
-
bindWhereClauseForInsert() {
|
|
44
|
-
return this.bindWhereClauseEmpty();
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Binds an empty where clause
|
|
48
|
-
* @returns The bound empty where clause
|
|
49
|
-
*/
|
|
50
|
-
bindWhereClauseEmpty() {
|
|
51
|
-
const whereClause = new APIFilterCriteria();
|
|
52
|
-
whereClause.filterLogic = '1';
|
|
53
|
-
whereClause.filters = [];
|
|
54
|
-
return whereClause;
|
|
55
|
-
}
|
|
56
39
|
/**
|
|
57
40
|
* Binds the where clause based on provided parameters
|
|
58
41
|
* @param fields The fields to bind the where clause
|
|
@@ -66,7 +49,7 @@ export class WhereClauseHelper {
|
|
|
66
49
|
? f.Field?.FieldName === fieldName
|
|
67
50
|
: f.Field?.FieldName === 'Id' || f.Field?.FieldName === 'ID');
|
|
68
51
|
const filters = filteredFields.map((field, index) => ({
|
|
69
|
-
conjunction:
|
|
52
|
+
conjunction: ConjunctionClause.AND,
|
|
70
53
|
fieldName: crudTableName + '.' + field.Field.FieldName,
|
|
71
54
|
operator: RelationalOperator.EqualTo,
|
|
72
55
|
valueType: FilterValueType.Literal,
|
|
@@ -94,7 +77,7 @@ export class WhereClauseHelper {
|
|
|
94
77
|
const value = data[element.FieldName];
|
|
95
78
|
if (value) {
|
|
96
79
|
const filter = {
|
|
97
|
-
conjunction:
|
|
80
|
+
conjunction: ConjunctionClause.AND,
|
|
98
81
|
fieldName: crudTableName + '.' + element.FieldName,
|
|
99
82
|
operator: RelationalOperator.EqualTo,
|
|
100
83
|
valueType: FilterValueType.Literal,
|
|
@@ -121,7 +104,7 @@ export class WhereClauseHelper {
|
|
|
121
104
|
if (queryFieldsArray.length) {
|
|
122
105
|
queryFieldsArray.forEach((element, index) => {
|
|
123
106
|
const filter = {
|
|
124
|
-
conjunction:
|
|
107
|
+
conjunction: ConjunctionClause.AND,
|
|
125
108
|
fieldName: tableName + '.' + element.FieldName,
|
|
126
109
|
operator: RelationalOperator.EqualTo,
|
|
127
110
|
valueType: FilterValueType.Literal,
|
|
@@ -146,7 +129,7 @@ export class WhereClauseHelper {
|
|
|
146
129
|
const whereClause = new APIFilterCriteria();
|
|
147
130
|
whereClause.filters = [];
|
|
148
131
|
const filter = {
|
|
149
|
-
conjunction:
|
|
132
|
+
conjunction: ConjunctionClause.AND,
|
|
150
133
|
fieldName: tableName + '.' + primaryKey,
|
|
151
134
|
operator: RelationalOperator.EqualTo,
|
|
152
135
|
valueType: FilterValueType.Literal,
|
|
@@ -176,7 +159,7 @@ export class WhereClauseHelper {
|
|
|
176
159
|
const whereClause = new APIFilterCriteria();
|
|
177
160
|
whereClause.filters = [];
|
|
178
161
|
const filter = {
|
|
179
|
-
conjunction:
|
|
162
|
+
conjunction: ConjunctionClause.AND,
|
|
180
163
|
fieldName: tableName + '.' + primaryKey,
|
|
181
164
|
operator: RelationalOperator.IN,
|
|
182
165
|
valueType: FilterValueType.Literal,
|
|
@@ -199,34 +182,6 @@ export class WhereClauseHelper {
|
|
|
199
182
|
bindWhereClauseForUpdateGrid(Fields, value, fieldName, crudTableName) {
|
|
200
183
|
return this.bindWhereClause(Fields, value, fieldName, crudTableName);
|
|
201
184
|
}
|
|
202
|
-
/**
|
|
203
|
-
* Binds the where clause for updating records using filters
|
|
204
|
-
* @param tableName The name of the table to update
|
|
205
|
-
* @param filters The array of filters for the update query
|
|
206
|
-
* @param fields The array of fields from the app object to map with field ID - used in replacing ID With name
|
|
207
|
-
* @returns The bound where clause for update operation
|
|
208
|
-
*/
|
|
209
|
-
bindWhereClauseForUpdateUsingFilters(tableName, filters, fields) {
|
|
210
|
-
const whereClause = new APIFilterCriteria();
|
|
211
|
-
whereClause.filters = [];
|
|
212
|
-
if (filters.length) {
|
|
213
|
-
filters.forEach((element, index) => {
|
|
214
|
-
const field = fields.find((f) => f.ID === element.FieldID) || {};
|
|
215
|
-
const filter = {
|
|
216
|
-
conjunction: element.ConjuctionClause,
|
|
217
|
-
fieldName: tableName + '.' + field.FieldName,
|
|
218
|
-
operator: element.RelationalOperator,
|
|
219
|
-
valueType: element.ValueType,
|
|
220
|
-
value: element.Value,
|
|
221
|
-
sequence: element.Sequence || index + 1,
|
|
222
|
-
groupId: element.GroupID,
|
|
223
|
-
};
|
|
224
|
-
whereClause.filters.push(filter);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
whereClause.filterLogic = '1';
|
|
228
|
-
return whereClause;
|
|
229
|
-
}
|
|
230
185
|
/**
|
|
231
186
|
* Binds the where clause for deleting records using a set of key value pairs
|
|
232
187
|
* @param tableName The name of the table from which to delete records
|
|
@@ -240,7 +195,7 @@ export class WhereClauseHelper {
|
|
|
240
195
|
// The conjuction clause is AND for all items
|
|
241
196
|
keyValuePairs.forEach((pair, index) => {
|
|
242
197
|
const filter = {
|
|
243
|
-
conjunction: index === 0 ?
|
|
198
|
+
conjunction: index === 0 ? ConjunctionClause.AND : ConjunctionClause.AND,
|
|
244
199
|
fieldName: tableName + '.' + pair.key,
|
|
245
200
|
operator: RelationalOperator.EqualTo,
|
|
246
201
|
valueType: FilterValueType.Literal,
|
|
@@ -261,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
|
|
|
261
216
|
type: Injectable,
|
|
262
217
|
args: [{ providedIn: 'root' }]
|
|
263
218
|
}] });
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtY2xhdXNlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGVBQWUsR0FDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JELE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFbUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0F1VDFEO0lBdFRDOzs7Ozs7O09BT0c7SUFDSCx3QkFBd0IsQ0FDdEIsTUFBVyxFQUNYLEtBQVUsRUFDVixTQUFpQixFQUNqQixhQUFxQjtRQUVyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEYsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixhQUFhLEdBQUcsVUFBVSxDQUFDLGlCQUFp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LEVBQUUsZUFBZSxDQUFDLE9BQU87Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDO2dCQUNuQixPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUM7WUFDRixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILG9EQUFvRDtRQUNwRCxXQUFXLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOytHQXZUVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgUmVsYXRpb25hbE9wZXJhdG9yLFxyXG4gIEZpbHRlclZhbHVlVHlwZSxcclxufSBmcm9tICcuLi8uLi9lbnVtcy9kc3EuZW51bSc7XHJcbmltcG9ydCB7IEFQSUZpbHRlckNyaXRlcmlhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzcyc7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnLi9tZXRhLWRhdGEuaGVscGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgV2hlcmVDbGF1c2VIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYmFzZWQgb24gZmllbGQsIHZhbHVlLCBmaWVsZCBuYW1lLCBhbmQgQ1JVRCB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIGJpbmQgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlKFxyXG4gICAgZmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSBjcnVkVGFibGVOYW1lKVswXTtcclxuICAgIGlmIChhcHBvYmogJiYgYXBwb2JqLkNSVURBcHBPYmplY3RJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBjcnVkQXBwT2JqID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKGFwcG9iai5DUlVEQXBwT2JqZWN0SWQpO1xyXG4gICAgICBpZiAoY3J1ZEFwcE9iaikge1xyXG4gICAgICAgIGNydWRUYWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2UoZmllbGRzLCB2YWx1ZSwgZmllbGROYW1lLCBjcnVkVGFibGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVXaXRoTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgY3J1ZFRhYmxlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBmaWVsZE5hbWUsXHJcbiAgICAgIGNydWRUYWJsZU5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBhbiBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckluc2VydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZUVtcHR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyBhbiBlbXB0eSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgZW1wdHkgd2hlcmUgY2xhdXNlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRW1wdHkoKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHByb3ZpZGVkIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2VcclxuICAgKi9cclxuICBwcml2YXRlIGJpbmRXaGVyZUNsYXVzZShcclxuICAgIGZpZWxkczogYW55W10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApOiBBUElGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKGY6IGFueSkgPT5cclxuICAgICAgZmllbGROYW1lXHJcbiAgICAgICAgPyBmLkZpZWxkPy5GaWVsZE5hbWUgPT09IGZpZWxkTmFtZVxyXG4gICAgICAgIDogZi5GaWVsZD8uRmllbGROYW1lID09PSAnSWQnIHx8IGYuRmllbGQ/LkZpZWxkTmFtZSA9PT0gJ0lEJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyZWRGaWVsZHMubWFwKChmaWVsZDogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogY3J1ZFRhYmxlTmFtZSArICcuJyArIGZpZWxkLkZpZWxkLkZpZWxkTmFtZSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcblxyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5cyBUaGUgYXJyYXkgb2YgcHJpbWFyeSBrZXkgZmllbGRzXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgcHJpbWFyeUtleXM6IGFueSxcclxuICAgIGNydWRUYWJsZU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChwcmltYXJ5S2V5cyAmJiBwcmltYXJ5S2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHByaW1hcnlLZXlzLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtlbGVtZW50LkZpZWxkTmFtZV07XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGNydWRUYWJsZU5hbWUgKyAnLicgKyBlbGVtZW50LkZpZWxkTmFtZSxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBxdWVyeUZpZWxkc0FycmF5IFRoZSBhcnJheSBvZiBmaWVsZHMgYW5kIHZhbHVlcyBmb3IgdGhlIHVwZGF0ZSBxdWVyeVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGUodGFibGVOYW1lOiBzdHJpbmcsIHF1ZXJ5RmllbGRzQXJyYXk6IGFueSkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChxdWVyeUZpZWxkc0FycmF5Lmxlbmd0aCkge1xyXG4gICAgICBxdWVyeUZpZWxkc0FycmF5LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgZmllbGROYW1lOiB0YWJsZU5hbWUgKyAnLicgKyBlbGVtZW50LkZpZWxkTmFtZSxcclxuICAgICAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgICB2YWx1ZTogZWxlbWVudC5GaWVsZFZhbHVlLFxyXG4gICAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB3aGVyZUNsYXVzZS5maWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYnkgdGFibGUgYW5kIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgZnJvbSB3aGljaCB0byBkZWxldGUgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5IFRoZSBuYW1lIG9mIHRoZSBwcmltYXJ5IGtleSBmaWVsZFxyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5VmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcmltYXJ5IGtleVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgdGFibGUgYW5kIHByaW1hcnkga2V5XHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlQnlUYWJsZShcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleVZhbHVlOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBmaWVsZE5hbWU6IHRhYmxlTmFtZSArICcuJyArIHByaW1hcnlLZXksXHJcbiAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHByaW1hcnlLZXlWYWx1ZSxcclxuICAgICAgc2VxdWVuY2U6IDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9O1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgdXNpbmcgSU4gb3BlcmF0b3IgYnkgdGFibGVcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5IGZpZWxkXHJcbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgYXJyYXkgb2YgdmFsdWVzIGZvciB0aGUgSU4gb3BlcmF0b3JcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIElOIG9wZXJhdG9yIGFuZCB0YWJsZVxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZVVzaW5nSW5PcGVyYXRvckJ5VGFibGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXk6IHN0cmluZyxcclxuICAgIHZhbHVlczogW11cclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSB0YWJsZU5hbWUpWzBdO1xyXG4gICAgaWYgKGFwcG9iaj8uQ1JVREFwcE9iamVjdElkICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGNydWRBcHBPYmogPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUoYXBwb2JqLkNSVURBcHBPYmplY3RJZCB8fCAnJyk7XHJcbiAgICAgIGlmIChjcnVkQXBwT2JqKSB7XHJcbiAgICAgICAgdGFibGVOYW1lID0gY3J1ZEFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcHJpbWFyeUtleSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5JTixcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHZhbHVlcy5qb2luKCcsJyksXHJcbiAgICAgIHNlcXVlbmNlOiAxLFxyXG4gICAgICBncm91cElkOiAwLFxyXG4gICAgfTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzIGluIGEgZ3JpZFxyXG4gICAqIEBwYXJhbSBGaWVsZHMgVGhlIGZpZWxkcyB0byBiaW5kIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIFRoZSBmaWVsZCBuYW1lIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvbiBpbiBhIGdyaWRcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKFxyXG4gICAgRmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZShGaWVsZHMsIHZhbHVlLCBmaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3JkcyB1c2luZyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGFycmF5IG9mIGZpbHRlcnMgZm9yIHRoZSB1cGRhdGUgcXVlcnlcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBhcnJheSBvZiBmaWVsZHMgZnJvbSB0aGUgYXBwIG9iamVjdCB0byBtYXAgd2l0aCBmaWVsZCBJRCAtIHVzZWQgaW4gcmVwbGFjaW5nIElEIFdpdGggbmFtZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGZpbHRlcnM6IGFueSxcclxuICAgIGZpZWxkczogYW55W11cclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmKSA9PiBmLklEID09PSBlbGVtZW50LkZpZWxkSUQpIHx8IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICBjb25qdW5jdGlvbjogZWxlbWVudC5Db25qdWN0aW9uQ2xhdXNlLFxyXG4gICAgICAgICAgZmllbGROYW1lOiB0YWJsZU5hbWUgKyAnLicgKyBmaWVsZC5GaWVsZE5hbWUsXHJcbiAgICAgICAgICBvcGVyYXRvcjogZWxlbWVudC5SZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgICAgICAgICB2YWx1ZVR5cGU6IGVsZW1lbnQuVmFsdWVUeXBlLFxyXG4gICAgICAgICAgdmFsdWU6IGVsZW1lbnQuVmFsdWUsXHJcbiAgICAgICAgICBzZXF1ZW5jZTogZWxlbWVudC5TZXF1ZW5jZSB8fCBpbmRleCArIDEsXHJcbiAgICAgICAgICBncm91cElkOiBlbGVtZW50Lkdyb3VwSUQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBhIHNldCBvZiBrZXkgdmFsdWUgcGFpcnNcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIGtleVZhbHVlUGFpcnMgVGhlIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycyB0byB1c2UgaW4gdGhlIGRlbGV0ZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckR5bmFtaWNEZWxldGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGtleVZhbHVlUGFpcnM6IGFueVtdXHJcbiAgKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGtleSB2YWx1ZSBwYWlycyBhbmQgYWRkIHRoZW0gdG8gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAgLy8gVGhlIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBmb3IgYWxsIGl0ZW1zXHJcbiAgICBrZXlWYWx1ZVBhaXJzLmZvckVhY2goKHBhaXIsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgICBjb25qdW5jdGlvbjogaW5kZXggPT09IDAgPyBDb25qdWN0aW9uQ2xhdXNlLkFORCA6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcGFpci5rZXksXHJcbiAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgdmFsdWU6IHBhaXIudmFsdWUsXHJcbiAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICBncm91cElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gVGhlIGZpbHRlciBsb2dpYyBpcyBhbHdheXMgJzEnIGZvciBkeW5hbWljIGRlbGV0ZVxyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtY2xhdXNlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGVBQWUsR0FDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JELE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFbUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0FnUTFEO0lBL1BDOzs7Ozs7O09BT0c7SUFDSCx3QkFBd0IsQ0FDdEIsTUFBVyxFQUNYLEtBQVUsRUFDVixTQUFpQixFQUNqQixhQUFxQjtRQUVyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEYsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixhQUFhLEdBQUcsVUFBVSxDQUFDLGlCQUFp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LENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxvREFBb0Q7UUFDcEQsV0FBVyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDOUIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzsrR0FoUVUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FESixNQUFNOzs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBDb25qdW5jdGlvbkNsYXVzZSxcclxuICBSZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgRmlsdGVyVmFsdWVUeXBlLFxyXG59IGZyb20gJy4uLy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgQVBJRmlsdGVyQ3JpdGVyaWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBpLXF1ZXJ5LmNsYXNzJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuL21ldGEtZGF0YS5oZWxwZXJzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBXaGVyZUNsYXVzZUhlbHBlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBtZXRhZGF0YUhlbHBlciA9IGluamVjdChNZXRhZGF0YUhlbHBlcik7XHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyBiYXNlZCBvbiBmaWVsZCwgdmFsdWUsIGZpZWxkIG5hbWUsIGFuZCBDUlVEIHRhYmxlIG5hbWVcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGUoXHJcbiAgICBmaWVsZHM6IGFueSxcclxuICAgIHZhbHVlOiBhbnksXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIGNydWRUYWJsZU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3QgYXBwb2JqID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBbGxBcHBPYmplY3RzKG9iaiA9PiBvYmouU3lzdGVtREJUYWJsZU5hbWUgPT09IGNydWRUYWJsZU5hbWUpWzBdO1xyXG4gICAgaWYgKGFwcG9iaiAmJiBhcHBvYmouQ1JVREFwcE9iamVjdElkICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGNydWRBcHBPYmogPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUoYXBwb2JqLkNSVURBcHBPYmplY3RJZCk7XHJcbiAgICAgIGlmIChjcnVkQXBwT2JqKSB7XHJcbiAgICAgICAgY3J1ZFRhYmxlTmFtZSA9IGNydWRBcHBPYmouU3lzdGVtREJUYWJsZU5hbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZShmaWVsZHMsIHZhbHVlLCBmaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB3aXRoIG11bHRpcGxlIHByaW1hcnkga2V5c1xyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIGNvbnRhaW5pbmcgcHJpbWFyeSBrZXkgdmFsdWVzXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXlcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB3aXRoIG11bHRpcGxlIHByaW1hcnkga2V5c1xyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZVdpdGhNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZUZvck11bHRpcGxlUHJpbWFyeUtleXMoXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGZpZWxkTmFtZSxcclxuICAgICAgY3J1ZFRhYmxlTmFtZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgYmFzZWQgb24gcHJvdmlkZWQgcGFyYW1ldGVyc1xyXG4gICAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBiaW5kIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIFRoZSBmaWVsZCBuYW1lIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYmluZFdoZXJlQ2xhdXNlKFxyXG4gICAgZmllbGRzOiBhbnlbXSxcclxuICAgIHZhbHVlOiBhbnksXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIGNydWRUYWJsZU5hbWU6IHN0cmluZ1xyXG4gICk6IEFQSUZpbHRlckNyaXRlcmlhIHtcclxuICAgIGNvbnN0IGZpbHRlcmVkRmllbGRzID0gZmllbGRzLmZpbHRlcigoZjogYW55KSA9PlxyXG4gICAgICBmaWVsZE5hbWVcclxuICAgICAgICA/IGYuRmllbGQ/LkZpZWxkTmFtZSA9PT0gZmllbGROYW1lXHJcbiAgICAgICAgOiBmLkZpZWxkPy5GaWVsZE5hbWUgPT09ICdJZCcgfHwgZi5GaWVsZD8uRmllbGROYW1lID09PSAnSUQnXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSBmaWx0ZXJlZEZpZWxkcy5tYXAoKGZpZWxkOiBhbnksIGluZGV4OiBudW1iZXIpID0+ICh7XHJcbiAgICAgIGNvbmp1bmN0aW9uOiBDb25qdW5jdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogY3J1ZFRhYmxlTmFtZSArICcuJyArIGZpZWxkLkZpZWxkLkZpZWxkTmFtZSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcblxyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5cyBUaGUgYXJyYXkgb2YgcHJpbWFyeSBrZXkgZmllbGRzXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgcHJpbWFyeUtleXM6IGFueSxcclxuICAgIGNydWRUYWJsZU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChwcmltYXJ5S2V5cyAmJiBwcmltYXJ5S2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHByaW1hcnlLZXlzLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtlbGVtZW50LkZpZWxkTmFtZV07XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgICAgICAgY29uanVuY3Rpb246IENvbmp1bmN0aW9uQ2xhdXNlLkFORCxcclxuICAgICAgICAgICAgZmllbGROYW1lOiBjcnVkVGFibGVOYW1lICsgJy4nICsgZWxlbWVudC5GaWVsZE5hbWUsXHJcbiAgICAgICAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICBzZXF1ZW5jZTogaW5kZXggKyAxLFxyXG4gICAgICAgICAgICBncm91cElkOiAwLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0aW5nIHJlY29yZHNcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byB1cGRhdGVcclxuICAgKiBAcGFyYW0gcXVlcnlGaWVsZHNBcnJheSBUaGUgYXJyYXkgb2YgZmllbGRzIGFuZCB2YWx1ZXMgZm9yIHRoZSB1cGRhdGUgcXVlcnlcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yVXBkYXRlKHRhYmxlTmFtZTogc3RyaW5nLCBxdWVyeUZpZWxkc0FycmF5OiBhbnkpIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBpZiAocXVlcnlGaWVsZHNBcnJheS5sZW5ndGgpIHtcclxuICAgICAgcXVlcnlGaWVsZHNBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgICAgIGNvbmp1bmN0aW9uOiBDb25qdW5jdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgICAgICBmaWVsZE5hbWU6IHRhYmxlTmFtZSArICcuJyArIGVsZW1lbnQuRmllbGROYW1lLFxyXG4gICAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICAgIHZhbHVlOiBlbGVtZW50LkZpZWxkVmFsdWUsXHJcbiAgICAgICAgICBzZXF1ZW5jZTogaW5kZXggKyAxLFxyXG4gICAgICAgICAgZ3JvdXBJZDogMCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyBieSB0YWJsZSBhbmQgcHJpbWFyeSBrZXlcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5IGZpZWxkXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXlWYWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHByaW1hcnkga2V5XHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB1c2luZyB0YWJsZSBhbmQgcHJpbWFyeSBrZXlcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVCeVRhYmxlKFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBwcmltYXJ5S2V5OiBzdHJpbmcsXHJcbiAgICBwcmltYXJ5S2V5VmFsdWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVuY3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBmaWVsZE5hbWU6IHRhYmxlTmFtZSArICcuJyArIHByaW1hcnlLZXksXHJcbiAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHByaW1hcnlLZXlWYWx1ZSxcclxuICAgICAgc2VxdWVuY2U6IDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9O1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgdXNpbmcgSU4gb3BlcmF0b3IgYnkgdGFibGVcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5IGZpZWxkXHJcbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgYXJyYXkgb2YgdmFsdWVzIGZvciB0aGUgSU4gb3BlcmF0b3JcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIElOIG9wZXJhdG9yIGFuZCB0YWJsZVxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZVVzaW5nSW5PcGVyYXRvckJ5VGFibGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXk6IHN0cmluZyxcclxuICAgIHZhbHVlczogW11cclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSB0YWJsZU5hbWUpWzBdO1xyXG4gICAgaWYgKGFwcG9iaj8uQ1JVREFwcE9iamVjdElkICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGNydWRBcHBPYmogPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUoYXBwb2JqLkNSVURBcHBPYmplY3RJZCB8fCAnJyk7XHJcbiAgICAgIGlmIChjcnVkQXBwT2JqKSB7XHJcbiAgICAgICAgdGFibGVOYW1lID0gY3J1ZEFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVuY3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBmaWVsZE5hbWU6IHRhYmxlTmFtZSArICcuJyArIHByaW1hcnlLZXksXHJcbiAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuSU4sXHJcbiAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgIHZhbHVlOiB2YWx1ZXMuam9pbignLCcpLFxyXG4gICAgICBzZXF1ZW5jZTogMSxcclxuICAgICAgZ3JvdXBJZDogMCxcclxuICAgIH07XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3JkcyBpbiBhIGdyaWRcclxuICAgKiBAcGFyYW0gRmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb24gaW4gYSBncmlkXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yVXBkYXRlR3JpZChcclxuICAgIEZpZWxkczogYW55LFxyXG4gICAgdmFsdWU6IGFueSxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgY3J1ZFRhYmxlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2UoRmllbGRzLCB2YWx1ZSwgZmllbGROYW1lLCBjcnVkVGFibGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgdXNpbmcgYSBzZXQgb2Yga2V5IHZhbHVlIHBhaXJzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgZnJvbSB3aGljaCB0byBkZWxldGUgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSBrZXlWYWx1ZVBhaXJzIFRoZSBhcnJheSBvZiBrZXkgdmFsdWUgcGFpcnMgdG8gdXNlIGluIHRoZSBkZWxldGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB1c2luZyBrZXkgdmFsdWUgcGFpcnNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEeW5hbWljRGVsZXRlKFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBrZXlWYWx1ZVBhaXJzOiBhbnlbXVxyXG4gICk6IEFQSUZpbHRlckNyaXRlcmlhIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcblxyXG4gICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBrZXkgdmFsdWUgcGFpcnMgYW5kIGFkZCB0aGVtIHRvIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgIC8vIFRoZSBjb25qdWN0aW9uIGNsYXVzZSBpcyBBTkQgZm9yIGFsbCBpdGVtc1xyXG4gICAga2V5VmFsdWVQYWlycy5mb3JFYWNoKChwYWlyLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgY29uanVuY3Rpb246IGluZGV4ID09PSAwID8gQ29uanVuY3Rpb25DbGF1c2UuQU5EIDogQ29uanVuY3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcGFpci5rZXksXHJcbiAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgdmFsdWU6IHBhaXIudmFsdWUsXHJcbiAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICBncm91cElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gVGhlIGZpbHRlciBsb2dpYyBpcyBhbHdheXMgJzEnIGZvciBkeW5hbWljIGRlbGV0ZVxyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,90 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import { inject, Injectable } from '@angular/core';
|
|
3
|
-
import { MetadataHelper } from '../common/meta-data.helpers';
|
|
4
|
-
import { of } from 'rxjs';
|
|
5
|
-
import { Common } from '../../constants/common';
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
6
2
|
import * as i0 from "@angular/core";
|
|
7
3
|
export class GridHelper {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.metadataHelper = inject(MetadataHelper);
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Generates a grid schema for the master app object.
|
|
13
|
-
* @param masterAppObj The master app object.
|
|
14
|
-
* @param dsqID The data source query ID.
|
|
15
|
-
* @returns The generated grid schema.
|
|
16
|
-
*/
|
|
17
|
-
generateGridSchema(masterAppObj, dsqID) {
|
|
18
|
-
const schema = {
|
|
19
|
-
label: masterAppObj?.SystemDBTableName,
|
|
20
|
-
type: 'customGrid',
|
|
21
|
-
key: masterAppObj?.SystemDBTableName,
|
|
22
|
-
input: true,
|
|
23
|
-
redrawOn: masterAppObj?.SystemDBTableName,
|
|
24
|
-
'customOptions.dataSourceQueryId': dsqID,
|
|
25
|
-
};
|
|
26
|
-
return schema;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Generates a grid schema for the child relationship.
|
|
30
|
-
* @param childRel The child relationship.
|
|
31
|
-
* @param masterAppObj The master app object.
|
|
32
|
-
* @returns The generated child grid schema.
|
|
33
|
-
*/
|
|
34
|
-
generateChildGridSchema(childRel, masterAppObj) {
|
|
35
|
-
const dsqNameString = 'FK_' +
|
|
36
|
-
childRel.childDetails.LookupObject +
|
|
37
|
-
'_' +
|
|
38
|
-
masterAppObj.SystemDBTableName;
|
|
39
|
-
const appObjectModel = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === childRel.childDetails.LookupObject)[0];
|
|
40
|
-
const dsqObject = appObjectModel?.dataSourceQuery(dsqNameString);
|
|
41
|
-
if (dsqObject) {
|
|
42
|
-
return {
|
|
43
|
-
label: childRel?.childDetails?.LookupObject,
|
|
44
|
-
type: 'customGrid',
|
|
45
|
-
key: childRel?.childDetails?.LookupObject,
|
|
46
|
-
input: true,
|
|
47
|
-
redrawOn: masterAppObj?.SystemDBTableName,
|
|
48
|
-
'customOptions.dataSourceQueryId': dsqObject ? dsqObject.ID : '',
|
|
49
|
-
logic: [
|
|
50
|
-
{
|
|
51
|
-
name: 'Update Fields',
|
|
52
|
-
trigger: {
|
|
53
|
-
type: 'javascript',
|
|
54
|
-
javascript: 'result=true;',
|
|
55
|
-
},
|
|
56
|
-
actions: [
|
|
57
|
-
{
|
|
58
|
-
name: 'Refresh ' + childRel?.childDetails?.LookupObject + ' Grid',
|
|
59
|
-
type: 'property',
|
|
60
|
-
property: {
|
|
61
|
-
label: 'parameters',
|
|
62
|
-
value: 'customOptions.parameters',
|
|
63
|
-
type: 'string',
|
|
64
|
-
},
|
|
65
|
-
text: '{{data.' + masterAppObj?.SystemDBTableName + '}}',
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
return of({});
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Retrieves the default grid configuration.
|
|
76
|
-
* @returns The default grid configuration.
|
|
77
|
-
*/
|
|
78
|
-
getDefaultGridConfiguration() {
|
|
79
|
-
const tabData = Common.tabJson;
|
|
80
|
-
if (tabData) {
|
|
81
|
-
const configuration = tabData?.AppConfigurations.find((c) => c.Setting_Key === 'GridConfig');
|
|
82
|
-
if (configuration) {
|
|
83
|
-
return JSON.parse(configuration.Value);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
4
|
/**
|
|
89
5
|
* Determines the column type based on the data type.
|
|
90
6
|
* @param dataType The data type.
|
|
@@ -100,9 +16,9 @@ export class GridHelper {
|
|
|
100
16
|
else if (dataType === 4 || (dataType >= 7 && dataType <= 15))
|
|
101
17
|
return 'string';
|
|
102
18
|
else if (dataType === 5)
|
|
103
|
-
return 'date';
|
|
19
|
+
return 'date';
|
|
104
20
|
else if (dataType === 6)
|
|
105
|
-
return 'dateTime';
|
|
21
|
+
return 'dateTime';
|
|
106
22
|
else
|
|
107
23
|
return 'string';
|
|
108
24
|
}
|
|
@@ -121,9 +37,9 @@ export class GridHelper {
|
|
|
121
37
|
else if (dataType === 4 || (dataType >= 7 && dataType <= 15))
|
|
122
38
|
return 'defaultEdit';
|
|
123
39
|
else if (dataType === 5)
|
|
124
|
-
return 'datePickerEdit';
|
|
40
|
+
return 'datePickerEdit';
|
|
125
41
|
else if (dataType === 6)
|
|
126
|
-
return 'dateTimePickerEdit';
|
|
42
|
+
return 'dateTimePickerEdit';
|
|
127
43
|
else if (dataType === 17)
|
|
128
44
|
return 'dropDownEdit';
|
|
129
45
|
else
|
|
@@ -136,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
|
|
|
136
52
|
type: Injectable,
|
|
137
53
|
args: [{ providedIn: 'root' }]
|
|
138
54
|
}] });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvc2NyZWVuL2dyaWQuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUloRCxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVtQixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQW1IMUQ7SUFsSEM7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxZQUF1QixFQUFFLEtBQVU7UUFDcEQsTUFBTSxNQUFNLEdBQUc7WUFDYixLQUFLLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUN0QyxJQUFJLEVBQUUsWUFBWTtZQUNsQixHQUFHLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUNwQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCO1lBQ3pDLGlDQUFpQyxFQUFFLEtBQUs7U0FDekMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLFFBQWEsRUFBRSxZQUF1QjtRQUM1RCxNQUFNLGFBQWEsR0FDakIsS0FBSztZQUNMLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWTtZQUNsQyxHQUFHO1lBQ0gsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElB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LElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUMxRSxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssRUFBRTtZQUFFLE9BQU8sYUFBYSxDQUFDO2FBQzlFLElBQUksUUFBUSxLQUFLLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUN6QyxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUM5RSxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFHLG1CQUFtQjthQUNsRSxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLG9CQUFvQjthQUNyRSxJQUFJLFFBQVEsS0FBSyxFQUFFO1lBQUUsT0FBTyxjQUFjLENBQUM7O1lBQzNDLE9BQU8sYUFBYSxDQUFDO0lBQzVCLENBQUM7K0dBbkhVLFVBQVU7bUhBQVYsVUFBVSxjQURHLE1BQU07OzRGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwcE9iamVjdCB9IGZyb20gJy4uLy4uL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgSnFXaWRnaHRNb2RlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZ3JpZC5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEdyaWRIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhIGdyaWQgc2NoZW1hIGZvciB0aGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIGRzcUlEIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBJRC5cclxuICAgKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIGdyaWQgc2NoZW1hLlxyXG4gICAqL1xyXG4gIGdlbmVyYXRlR3JpZFNjaGVtYShtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCwgZHNxSUQ6IGFueSkge1xyXG4gICAgY29uc3Qgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgdHlwZTogJ2N1c3RvbUdyaWQnLFxyXG4gICAgICBrZXk6IG1hc3RlckFwcE9iaj8uU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgJ2N1c3RvbU9wdGlvbnMuZGF0YVNvdXJjZVF1ZXJ5SWQnOiBkc3FJRCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gc2NoZW1hO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGEgZ3JpZCBzY2hlbWEgZm9yIHRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIGNoaWxkUmVsIFRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBjaGlsZCBncmlkIHNjaGVtYS5cclxuICAgKi9cclxuICBnZW5lcmF0ZUNoaWxkR3JpZFNjaGVtYShjaGlsZFJlbDogYW55LCBtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCkge1xyXG4gICAgY29uc3QgZHNxTmFtZVN0cmluZyA9XHJcbiAgICAgICdGS18nICtcclxuICAgICAgY2hpbGRSZWwuY2hpbGREZXRhaWxzLkxvb2t1cE9iamVjdCArXHJcbiAgICAgICdfJyArXHJcbiAgICAgIG1hc3RlckFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBbGxBcHBPYmplY3RzKG9iaiA9PiBvYmouU3lzdGVtREJUYWJsZU5hbWUgPT09IGNoaWxkUmVsLmNoaWxkRGV0YWlscy5Mb29rdXBPYmplY3QpWzBdO1xyXG4gICAgY29uc3QgZHNxT2JqZWN0ID0gYXBwT2JqZWN0TW9kZWw/LmRhdGFTb3VyY2VRdWVyeShkc3FOYW1lU3RyaW5nKTtcclxuICAgIGlmIChkc3FPYmplY3QpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogY2hpbGRSZWw/LmNoaWxkRGV0YWlscz8uTG9va3VwT2JqZWN0LFxyXG4gICAgICAgIHR5cGU6ICdjdXN0b21HcmlkJyxcclxuICAgICAgICBrZXk6IGNoaWxkUmVsPy5jaGlsZERldGFpbHM/Lkxvb2t1cE9iamVjdCxcclxuICAgICAgICBpbnB1dDogdHJ1ZSxcclxuICAgICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgICAnY3VzdG9tT3B0aW9ucy5kYXRhU291cmNlUXVlcnlJZCc6IGRzcU9iamVjdCA/IGRzcU9iamVjdC5JRCA6ICcnLFxyXG4gICAgICAgIGxvZ2ljOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdVcGRhdGUgRmllbGRzJyxcclxuICAgICAgICAgICAgdHJpZ2dlcjoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICAgICAgICBqYXZhc2NyaXB0OiAncmVzdWx0PXRydWU7JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6XHJcbiAgICAgICAgICAgICAgICAgICdSZWZyZXNoICcgKyBjaGlsZFJlbD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgKyAnIEdyaWQnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Byb3BlcnR5JyxcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5OiB7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAncGFyYW1ldGVycycsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tT3B0aW9ucy5wYXJhbWV0ZXJzJyxcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogJ3t7ZGF0YS4nICsgbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSArICd9fScsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZih7fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRlZmF1bHQgZ3JpZCBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGdyaWQgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBnZXREZWZhdWx0R3JpZENvbmZpZ3VyYXRpb24oKTogSnFXaWRnaHRNb2RlbCB8IG51bGwge1xyXG4gICAgY29uc3QgdGFiRGF0YTogYW55ID0gQ29tbW9uLnRhYkpzb247XHJcbiAgICBpZiAodGFiRGF0YSkge1xyXG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGFiRGF0YT8uQXBwQ29uZmlndXJhdGlvbnMuZmluZChcclxuICAgICAgICAoYzogYW55KSA9PiBjLlNldHRpbmdfS2V5ID09PSAnR3JpZENvbmZpZydcclxuICAgICAgKTtcclxuICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uLlZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb2x1bW4gdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLlxyXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUaGUgZGF0YSB0eXBlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBjb2x1bW4gdHlwZS5cclxuICAgKi9cclxuICBnZXRDb2x1bW5UeXBlKGRhdGFUeXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGFUeXBlID09PSAxIHx8IChkYXRhVHlwZSA+PSA3ICYmIGRhdGFUeXBlID09PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1iZXInO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDMpIHJldHVybiAnYm9vbGVhbic7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA1KSByZXR1cm4gJ2RhdGUnOyAgLy9kYXRlXHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNikgcmV0dXJuICdkYXRlVGltZSc7IC8vIGRhdGVUaW1lXHJcbiAgICBlbHNlIHJldHVybiAnc3RyaW5nJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgdGhlIHR5cGUgb2YgY29tcG9uZW50IGZvciBlZGl0YWJsZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0ICdzdHJpbmdlZGl0J1xyXG4gICAqL1xyXG4gIGdldENvbHVtbkNvbXBvbmVudFR5cGVGb3JFZGl0YWJsZShkYXRhVHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChkYXRhVHlwZSA9PT0gMSB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA9PT0gMTUpKSByZXR1cm4gJ2RlZmF1bHRFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1lcmljRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMykgcmV0dXJuICdib29sZWFuRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnZGVmYXVsdEVkaXQnO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDUpIHJldHVybiAnZGF0ZVBpY2tlckVkaXQnOyAgIC8vIGRhdGVQaWNrZXJFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA2KSByZXR1cm4gJ2RhdGVUaW1lUGlja2VyRWRpdCc7IC8vZGF0ZVRpbWVQaWNrZXJFZGl0XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMTcpIHJldHVybiAnZHJvcERvd25FZGl0JztcclxuICAgIGVsc2UgcmV0dXJuICdkZWZhdWx0RWRpdCc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvc2NyZWVuL2dyaWQuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLFFBQWdCO1FBQzVCLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDO2FBQ3JFLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFO1lBQUUsT0FBTyxRQUFRLENBQUM7YUFDekUsSUFBSSxRQUFRLEtBQUssQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO2FBQ3JDLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDO2FBQ3pFLElBQUksUUFBUSxLQUFLLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQzthQUNsQyxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxVQUFVLENBQUM7O1lBQ3RDLE9BQU8sUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUNBQWlDLENBQUMsUUFBZ0I7UUFDaEQsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxRQUFRLEtBQUssRUFBRSxDQUFDO1lBQUUsT0FBTyxhQUFhLENBQUM7YUFDMUUsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLEVBQUU7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUM5RSxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxhQUFhLENBQUM7YUFDekMsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxRQUFRLElBQUksRUFBRSxDQUFDO1lBQUUsT0FBTyxhQUFhLENBQUM7YUFDOUUsSUFBSSxRQUFRLEtBQUssQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUM7YUFDNUMsSUFBSSxRQUFRLEtBQUssQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUM7YUFDaEQsSUFBSSxRQUFRLEtBQUssRUFBRTtZQUFFLE9BQU8sY0FBYyxDQUFDOztZQUMzQyxPQUFPLGFBQWEsQ0FBQztJQUM1QixDQUFDOytHQTlCVSxVQUFVO21IQUFWLFVBQVUsY0FERyxNQUFNOzs0RkFDbkIsVUFBVTtrQkFEdEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgR3JpZEhlbHBlciB7XHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyB0aGUgY29sdW1uIHR5cGUgYmFzZWQgb24gdGhlIGRhdGEgdHlwZS5cclxuICAgKiBAcGFyYW0gZGF0YVR5cGUgVGhlIGRhdGEgdHlwZS5cclxuICAgKiBAcmV0dXJucyBUaGUgY29sdW1uIHR5cGUuXHJcbiAgICovXHJcbiAgZ2V0Q29sdW1uVHlwZShkYXRhVHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChkYXRhVHlwZSA9PT0gMSB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA9PT0gMTUpKSByZXR1cm4gJ3N0cmluZyc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMiB8fCBkYXRhVHlwZSA9PT0gNCB8fCBkYXRhVHlwZSA9PT0gMTYpIHJldHVybiAnbnVtYmVyJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAzKSByZXR1cm4gJ2Jvb2xlYW4nO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDQgfHwgKGRhdGFUeXBlID49IDcgJiYgZGF0YVR5cGUgPD0gMTUpKSByZXR1cm4gJ3N0cmluZyc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNSkgcmV0dXJuICdkYXRlJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA2KSByZXR1cm4gJ2RhdGVUaW1lJztcclxuICAgIGVsc2UgcmV0dXJuICdzdHJpbmcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiBjb21wb25lbnQgZm9yIGVkaXRhYmxlLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgJ3N0cmluZ2VkaXQnXHJcbiAgICovXHJcbiAgZ2V0Q29sdW1uQ29tcG9uZW50VHlwZUZvckVkaXRhYmxlKGRhdGFUeXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGFUeXBlID09PSAxIHx8IChkYXRhVHlwZSA+PSA3ICYmIGRhdGFUeXBlID09PSAxNSkpIHJldHVybiAnZGVmYXVsdEVkaXQnO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDIgfHwgZGF0YVR5cGUgPT09IDQgfHwgZGF0YVR5cGUgPT09IDE2KSByZXR1cm4gJ251bWVyaWNFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAzKSByZXR1cm4gJ2Jvb2xlYW5FZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA0IHx8IChkYXRhVHlwZSA+PSA3ICYmIGRhdGFUeXBlIDw9IDE1KSkgcmV0dXJuICdkZWZhdWx0RWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNSkgcmV0dXJuICdkYXRlUGlja2VyRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNikgcmV0dXJuICdkYXRlVGltZVBpY2tlckVkaXQnO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDE3KSByZXR1cm4gJ2Ryb3BEb3duRWRpdCc7XHJcbiAgICBlbHNlIHJldHVybiAnZGVmYXVsdEVkaXQnO1xyXG4gIH1cclxufVxyXG4iXX0=
|