kipon-xrmservice
Version:
Dynamics 365 CE web api wrapper for angular, making life easier when building angular based web resources
147 lines • 28.5 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
const KiponXrmLOCAL_getFormType = "KiponXrmServiceLOCAL_getFormType";
const KiponXrmLOCAL_formentityr = "KiponXrmServiceLOCAL_formentityr";
const KiponXrmLOCAL_context = "KiponXrmServiceLOCAL_context";
export class XrmFormKey {
}
export class XrmContextInstance {
constructor(ctx) {
this.apiurl = '/api/data/v9.0/';
this.clientUrl = ctx.getClientUrl();
this.queryStringParameters = ctx.getQueryStringParameters();
this.version = ctx.getVersion();
this.userName = ctx.getUserName();
this.userId = ctx.getUserId();
}
getClientUrl() {
return this.clientUrl;
}
getQueryStringParameters() {
return this.queryStringParameters;
}
getVersion() {
return this.version;
}
getUserName() {
return this.userName;
}
getUserId() {
return this.userId;
}
$devClientUrl() {
return this.clientUrl + this.apiurl;
;
}
}
export class XrmFormService {
constructor() { }
getContext() {
if (window[KiponXrmLOCAL_context]) {
return window[KiponXrmLOCAL_context];
}
if (typeof window["GetGlobalContext"] != "undefined") {
window[KiponXrmLOCAL_context] = new XrmContextInstance(window["GetGlobalContext"]());
return window[KiponXrmLOCAL_context];
}
if (window.parent && window.parent[KiponXrmLOCAL_context]) {
window[KiponXrmLOCAL_context] = new XrmContextInstance(window.parent[KiponXrmLOCAL_context]);
return window[KiponXrmLOCAL_context];
}
if (window.opener && window.opener[KiponXrmLOCAL_context]) {
window[KiponXrmLOCAL_context] = new XrmContextInstance(window.opener[KiponXrmLOCAL_context]);
return window[KiponXrmLOCAL_context];
}
if (window["Xrm"] && window["Xrm"]["Page"] && window["Xrm"]["Page"]["context"]) {
window[KiponXrmLOCAL_context] = new XrmContextInstance(window["Xrm"]["Page"]["context"]);
return window[KiponXrmLOCAL_context];
}
if (window.parent && window.parent["Xrm"] && window.parent["Xrm"]["Page"] && window.parent["Xrm"]["Page"]["context"]) {
window[KiponXrmLOCAL_context] = new XrmContextInstance(window.parent["Xrm"]["Page"]["context"]);
return window[KiponXrmLOCAL_context];
}
if (window.opener && window.opener["Xrm"] && window.opener["Xrm"]["Page"] && window.opener["Xrm"]["Page"]["context"]) {
window[KiponXrmLOCAL_context] = new XrmContextInstance(window.opener["Xrm"]["Page"]["context"]);
return window[KiponXrmLOCAL_context];
}
return null;
}
getFormType(clear = false) {
if (!clear && window[KiponXrmLOCAL_getFormType])
delete window[KiponXrmLOCAL_getFormType];
if (window[KiponXrmLOCAL_getFormType]) {
return window[KiponXrmLOCAL_getFormType];
}
if (!clear && window.parent && window.parent[KiponXrmLOCAL_getFormType]) {
window[KiponXrmLOCAL_getFormType] = window.parent[KiponXrmLOCAL_getFormType];
return window[KiponXrmLOCAL_getFormType];
}
if (!clear && window.opener && window.opener[KiponXrmLOCAL_getFormType]) {
window[KiponXrmLOCAL_getFormType] = window.opener[KiponXrmLOCAL_getFormType];
return window[KiponXrmLOCAL_getFormType];
}
if (window["Xrm"] && window["Xrm"]["Page"] && window["Xrm"]["Page"]["ui"] && window["Xrm"]["Page"]["ui"]["getFormType"]) {
window[KiponXrmLOCAL_getFormType] = window["Xrm"]["Page"]["ui"]["getFormType"]();
return window[KiponXrmLOCAL_getFormType];
}
if (window.parent && window.parent["Xrm"] && window.parent["Xrm"]["Page"] && window.parent["Xrm"]["Page"]["ui"] && window.parent["Xrm"]["Page"]["ui"]["getFormType"]) {
window[KiponXrmLOCAL_getFormType] = window.parent["Xrm"]["Page"]["ui"]["getFormType"]();
return window[KiponXrmLOCAL_getFormType];
}
if (window.opener && window.opener["Xrm"] && window.opener["Xrm"]["Page"] && window.opener["Xrm"]["Page"]["ui"] && window.opener["Xrm"]["Page"]["ui"]["getFormType"]) {
window[KiponXrmLOCAL_getFormType] = window.opener["Xrm"]["Page"]["ui"]["getFormType"]();
return window[KiponXrmLOCAL_getFormType];
}
return null;
}
getFormKey(id, type, clear = false) {
if (typeof id != 'undefined' && id != null && id != '' && typeof type != 'undefined' && type != null && type != '') {
let result = new XrmFormKey();
result.id = id;
result.type = type;
window[KiponXrmLOCAL_formentityr] = result;
return result;
}
if (clear && window[KiponXrmLOCAL_formentityr])
delete window[KiponXrmLOCAL_formentityr];
if (window[KiponXrmLOCAL_formentityr]) {
return window[KiponXrmLOCAL_formentityr];
}
if (!clear && window.parent && window.parent[KiponXrmLOCAL_formentityr]) {
window[KiponXrmLOCAL_formentityr] = window.parent[KiponXrmLOCAL_formentityr];
return window[KiponXrmLOCAL_formentityr];
}
if (!clear && window.opener && window.opener[KiponXrmLOCAL_formentityr]) {
window[KiponXrmLOCAL_formentityr] = window.opener[KiponXrmLOCAL_formentityr];
return window[KiponXrmLOCAL_formentityr];
}
if (window["Xrm"] && window["Xrm"]["Page"] && window["Xrm"]["Page"]["data"] && window["Xrm"]["Page"]["data"]["entity"]) {
var result = new XrmFormKey();
result.id = window["Xrm"]["Page"]["data"]["entity"]["getId"]();
result.type = window["Xrm"]["Page"]["data"]["entity"]["getEntityName"]();
window[KiponXrmLOCAL_formentityr] = result;
return window[KiponXrmLOCAL_formentityr];
}
if (window.parent && window.parent["Xrm"] && window.parent["Xrm"]["Page"] && window.parent["Xrm"]["Page"]["data"] && window.parent["Xrm"]["Page"]["data"]["entity"]) {
var result = new XrmFormKey();
result.id = window.parent["Xrm"]["Page"]["data"]["entity"]["getId"]();
result.type = window.parent["Xrm"]["Page"]["data"]["entity"]["getEntityName"]();
window[KiponXrmLOCAL_formentityr] = result;
return window[KiponXrmLOCAL_formentityr];
}
if (window.opener && window.opener["Xrm"] && window.opener["Xrm"]["Page"] && window.opener["Xrm"]["Page"]["data"] && window.opener["Xrm"]["Page"]["data"]["entity"]) {
var result = new XrmFormKey();
result.id = window.opener["Xrm"]["Page"]["data"]["entity"]["getId"]();
result.type = window.opener["Xrm"]["Page"]["data"]["entity"]["getEntityName"]();
window[KiponXrmLOCAL_formentityr] = result;
return window[KiponXrmLOCAL_formentityr];
}
return null;
}
}
XrmFormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
XrmFormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmFormService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: XrmFormService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJtZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMva2lwb24teHJtc2VydmljZS9zcmMvbGliL3hybWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLHlCQUF5QixHQUFHLGtDQUFrQyxDQUFDO0FBQ3JFLE1BQU0seUJBQXlCLEdBQUcsa0NBQWtDLENBQUM7QUFDckUsTUFBTSxxQkFBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQVk3RCxNQUFNLE9BQU8sVUFBVTtDQUd0QjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFRN0IsWUFBWSxHQUFlO1FBRm5CLFdBQU0sR0FBVyxpQkFBaUIsQ0FBQztRQUd6QyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsR0FBRyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFB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ZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUVoRixNQUFNLENBQUMseUJBQXlCLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDM0MsT0FBTyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUMxQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7MkdBcklVLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuY29uc3QgS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZSA9IFwiS2lwb25Ycm1TZXJ2aWNlTE9DQUxfZ2V0Rm9ybVR5cGVcIjtcclxuY29uc3QgS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5ciA9IFwiS2lwb25Ycm1TZXJ2aWNlTE9DQUxfZm9ybWVudGl0eXJcIjtcclxuY29uc3QgS2lwb25Ycm1MT0NBTF9jb250ZXh0ID0gXCJLaXBvblhybVNlcnZpY2VMT0NBTF9jb250ZXh0XCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFhybUNvbnRleHQge1xyXG4gIGdldENsaWVudFVybCgpOiBzdHJpbmc7XHJcbiAgZ2V0UXVlcnlTdHJpbmdQYXJhbWV0ZXJzKCk6IGFueTtcclxuICBnZXRWZXJzaW9uKCk6IHN0cmluZztcclxuICBnZXRVc2VyTmFtZSgpOiBzdHJpbmc7XHJcbiAgZ2V0VXNlcklkKCk6IHN0cmluZztcclxuICAkZGV2Q2xpZW50VXJsKCk6IHN0cmluZztcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBYcm1Gb3JtS2V5IHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhybUNvbnRleHRJbnN0YW5jZSBpbXBsZW1lbnRzIFhybUNvbnRleHQge1xyXG4gIHByaXZhdGUgY2xpZW50VXJsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBxdWVyeVN0cmluZ1BhcmFtZXRlcnM6IGFueTtcclxuICBwcml2YXRlIHZlcnNpb246IHN0cmluZztcclxuICBwcml2YXRlIHVzZXJOYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB1c2VySWQ6IHN0cmluZztcclxuICBwcml2YXRlIGFwaXVybDogc3RyaW5nID0gJy9hcGkvZGF0YS92OS4wLyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGN0eDogWHJtQ29udGV4dCkge1xyXG4gICAgdGhpcy5jbGllbnRVcmwgPSBjdHguZ2V0Q2xpZW50VXJsKCk7XHJcbiAgICB0aGlzLnF1ZXJ5U3RyaW5nUGFyYW1ldGVycyA9IGN0eC5nZXRRdWVyeVN0cmluZ1BhcmFtZXRlcnMoKTtcclxuICAgIHRoaXMudmVyc2lvbiA9IGN0eC5nZXRWZXJzaW9uKCk7XHJcbiAgICB0aGlzLnVzZXJOYW1lID0gY3R4LmdldFVzZXJOYW1lKCk7XHJcbiAgICB0aGlzLnVzZXJJZCA9IGN0eC5nZXRVc2VySWQoKTtcclxuICB9IFxyXG5cclxuICBnZXRDbGllbnRVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNsaWVudFVybDtcclxuICB9XHJcblxyXG4gIGdldFF1ZXJ5U3RyaW5nUGFyYW1ldGVycygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucXVlcnlTdHJpbmdQYXJhbWV0ZXJzO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmVyc2lvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudmVyc2lvbjtcclxuICB9XHJcblxyXG4gIGdldFVzZXJOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyTmFtZTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlcklkO1xyXG4gIH1cclxuICAkZGV2Q2xpZW50VXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnRVcmwgKyB0aGlzLmFwaXVybDs7XHJcbiAgfVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBYcm1Gb3JtU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpOiBYcm1Db250ZXh0IHtcclxuICAgIGlmICh3aW5kb3dbS2lwb25Ycm1MT0NBTF9jb250ZXh0XSkge1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3dbXCJHZXRHbG9iYWxDb250ZXh0XCJdICE9IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF0gPSAgbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3dbXCJHZXRHbG9iYWxDb250ZXh0XCJdKCkpO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudFtLaXBvblhybUxPQ0FMX2NvbnRleHRdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdID0gbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3cucGFyZW50W0tpcG9uWHJtTE9DQUxfY29udGV4dF0pO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5vcGVuZXIgJiYgd2luZG93Lm9wZW5lcltLaXBvblhybUxPQ0FMX2NvbnRleHRdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdID0gbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3cub3BlbmVyW0tpcG9uWHJtTE9DQUxfY29udGV4dF0pO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvd1tcIlhybVwiXSAmJiB3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdICYmIHdpbmRvd1tcIlhybVwiXVtcIlBhZ2VcIl1bXCJjb250ZXh0XCJdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdID0gbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdW1wiY29udGV4dFwiXSk7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9jb250ZXh0XTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cucGFyZW50W1wiWHJtXCJdICYmIHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdICYmIHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdW1wiY29udGV4dFwiXSkge1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9jb250ZXh0XSA9IG5ldyBYcm1Db250ZXh0SW5zdGFuY2Uod2luZG93LnBhcmVudFtcIlhybVwiXVtcIlBhZ2VcIl1bXCJjb250ZXh0XCJdKTtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cub3BlbmVyICYmIHdpbmRvdy5vcGVuZXJbXCJYcm1cIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJjb250ZXh0XCJdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2NvbnRleHRdID0gbmV3IFhybUNvbnRleHRJbnN0YW5jZSh3aW5kb3cub3BlbmVyW1wiWHJtXCJdW1wiUGFnZVwiXVtcImNvbnRleHRcIl0pO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfY29udGV4dF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIFwiWHJtXCIsIFwiUGFnZVwiLCBcInVpXCIsIFwiZ2V0Rm9ybVR5cGVcIlxyXG5cclxuXHJcbiAgZ2V0Rm9ybVR5cGUoKTtcclxuICBnZXRGb3JtVHlwZShjbGVhcjogYm9vbGVhbik7XHJcbiAgZ2V0Rm9ybVR5cGUoY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSk6IG51bWJlciB7XHJcblxyXG4gICAgaWYgKCFjbGVhciAmJiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV0pIGRlbGV0ZSB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV07XHJcbiAgICBpZiAod2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdKSB7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjbGVhciAmJiB3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5wYXJlbnRbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV0pIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdID0gd2luZG93LnBhcmVudFtLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXTtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNsZWFyICYmIHdpbmRvdy5vcGVuZXIgJiYgd2luZG93Lm9wZW5lcltLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXSkge1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV0gPSB3aW5kb3cub3BlbmVyW0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3dbXCJYcm1cIl0gJiYgd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXSAmJiB3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdW1widWlcIl0gJiYgd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXVtcInVpXCJdW1wiZ2V0Rm9ybVR5cGVcIl0pIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdID0gd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXVtcInVpXCJdW1wiZ2V0Rm9ybVR5cGVcIl0oKTtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cucGFyZW50W1wiWHJtXCJdICYmIHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdICYmIHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdW1widWlcIl0gJiYgd2luZG93LnBhcmVudFtcIlhybVwiXVtcIlBhZ2VcIl1bXCJ1aVwiXVtcImdldEZvcm1UeXBlXCJdKSB7XHJcbiAgICAgIHdpbmRvd1tLaXBvblhybUxPQ0FMX2dldEZvcm1UeXBlXSA9IHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdW1widWlcIl1bXCJnZXRGb3JtVHlwZVwiXSgpO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cub3BlbmVyICYmIHdpbmRvdy5vcGVuZXJbXCJYcm1cIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJ1aVwiXSAmJiB3aW5kb3cub3BlbmVyW1wiWHJtXCJdW1wiUGFnZVwiXVtcInVpXCJdW1wiZ2V0Rm9ybVR5cGVcIl0pIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZ2V0Rm9ybVR5cGVdID0gd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJ1aVwiXVtcImdldEZvcm1UeXBlXCJdKCk7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9nZXRGb3JtVHlwZV07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBcIlhybVwiLCBcIlBhZ2VcIiwgXCJkYXRhXCIsIFwiZW50aXR5XCJcclxuICBnZXRGb3JtS2V5KGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IFhybUZvcm1LZXk7XHJcbiAgZ2V0Rm9ybUtleShpZDogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIGNsZWFyOiBib29sZWFuKTogWHJtRm9ybUtleTtcclxuICBnZXRGb3JtS2V5KGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSk6IFhybUZvcm1LZXkge1xyXG4gICAgaWYgKHR5cGVvZiBpZCAhPSAndW5kZWZpbmVkJyAmJiBpZCAhPSBudWxsICYmIGlkICE9ICcnICYmIHR5cGVvZiB0eXBlICE9ICd1bmRlZmluZWQnICYmIHR5cGUgIT0gbnVsbCAmJiB0eXBlICE9ICcnKSB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBuZXcgWHJtRm9ybUtleSgpO1xyXG4gICAgICByZXN1bHQuaWQgPSBpZDtcclxuICAgICAgcmVzdWx0LnR5cGUgPSB0eXBlO1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0gPSByZXN1bHQ7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNsZWFyICYmIHdpbmRvd1tLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXSkgZGVsZXRlIHdpbmRvd1tLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXTtcclxuICAgIGlmICh3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0pIHtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKCFjbGVhciAmJiB3aW5kb3cucGFyZW50ICYmIHdpbmRvdy5wYXJlbnRbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0pIHtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdID0gd2luZG93LnBhcmVudFtLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXTtcclxuICAgICAgcmV0dXJuIHdpbmRvd1tLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNsZWFyICYmIHdpbmRvdy5vcGVuZXIgJiYgd2luZG93Lm9wZW5lcltLaXBvblhybUxPQ0FMX2Zvcm1lbnRpdHlyXSkge1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0gPSB3aW5kb3cub3BlbmVyW0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdO1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3dbXCJYcm1cIl0gJiYgd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXSAmJiB3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdW1wiZGF0YVwiXSAmJiB3aW5kb3dbXCJYcm1cIl1bXCJQYWdlXCJdW1wiZGF0YVwiXVtcImVudGl0eVwiXSkge1xyXG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IFhybUZvcm1LZXkoKTtcclxuICAgICAgcmVzdWx0LmlkID0gd2luZG93W1wiWHJtXCJdW1wiUGFnZVwiXVtcImRhdGFcIl1bXCJlbnRpdHlcIl1bXCJnZXRJZFwiXSgpO1xyXG4gICAgICByZXN1bHQudHlwZSA9IHdpbmRvd1tcIlhybVwiXVtcIlBhZ2VcIl1bXCJkYXRhXCJdW1wiZW50aXR5XCJdW1wiZ2V0RW50aXR5TmFtZVwiXSgpO1xyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0gPSByZXN1bHQ7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudFtcIlhybVwiXSAmJiB3aW5kb3cucGFyZW50W1wiWHJtXCJdW1wiUGFnZVwiXSAmJiB3aW5kb3cucGFyZW50W1wiWHJtXCJdW1wiUGFnZVwiXVtcImRhdGFcIl0gJiYgd2luZG93LnBhcmVudFtcIlhybVwiXVtcIlBhZ2VcIl1bXCJkYXRhXCJdW1wiZW50aXR5XCJdKSB7XHJcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgWHJtRm9ybUtleSgpO1xyXG4gICAgICByZXN1bHQuaWQgPSB3aW5kb3cucGFyZW50W1wiWHJtXCJdW1wiUGFnZVwiXVtcImRhdGFcIl1bXCJlbnRpdHlcIl1bXCJnZXRJZFwiXSgpO1xyXG4gICAgICByZXN1bHQudHlwZSA9IHdpbmRvdy5wYXJlbnRbXCJYcm1cIl1bXCJQYWdlXCJdW1wiZGF0YVwiXVtcImVudGl0eVwiXVtcImdldEVudGl0eU5hbWVcIl0oKTtcclxuICAgICAgd2luZG93W0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdID0gcmVzdWx0O1xyXG4gICAgICByZXR1cm4gd2luZG93W0tpcG9uWHJtTE9DQUxfZm9ybWVudGl0eXJdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cub3BlbmVyICYmIHdpbmRvdy5vcGVuZXJbXCJYcm1cIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl0gJiYgd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJkYXRhXCJdICYmIHdpbmRvdy5vcGVuZXJbXCJYcm1cIl1bXCJQYWdlXCJdW1wiZGF0YVwiXVtcImVudGl0eVwiXSkge1xyXG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IFhybUZvcm1LZXkoKTtcclxuICAgICAgcmVzdWx0LmlkID0gd2luZG93Lm9wZW5lcltcIlhybVwiXVtcIlBhZ2VcIl1bXCJkYXRhXCJdW1wiZW50aXR5XCJdW1wiZ2V0SWRcIl0oKTtcclxuICAgICAgcmVzdWx0LnR5cGUgPSB3aW5kb3cub3BlbmVyW1wiWHJtXCJdW1wiUGFnZVwiXVtcImRhdGFcIl1bXCJlbnRpdHlcIl1bXCJnZXRFbnRpdHlOYW1lXCJdKCk7XHJcblxyXG4gICAgICB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl0gPSByZXN1bHQ7XHJcbiAgICAgIHJldHVybiB3aW5kb3dbS2lwb25Ycm1MT0NBTF9mb3JtZW50aXR5cl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19